Entwicklung eines Metasploit-Scanners in Nmap

NmapNmapBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir die Modulstruktur und die funktionale Analyse von Metasploit erneut betrachten und uns dann auf die Einführung von Scannern konzentrieren. Sie werden lernen, wie Sie Ihren eigenen Metasploit-Scanner entwickeln können.

Dieses Lab ist ein praktischer Leitfaden. Um Ihnen einige Vorgänge zu erleichtern, werden wir einige Informationen aus der Informationssicherheitstheorie einfügen und Ihnen wertvolle Artikel zum Lesen empfehlen, damit Sie Ihre theoretischen Grundlagen während der Übung festigen können.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") subgraph Lab Skills nmap/port_scanning -.-> lab-416123{{"Entwicklung eines Metasploit-Scanners in Nmap"}} nmap/host_discovery -.-> lab-416123{{"Entwicklung eines Metasploit-Scanners in Nmap"}} nmap/target_specification -.-> lab-416123{{"Entwicklung eines Metasploit-Scanners in Nmap"}} nmap/service_detection -.-> lab-416123{{"Entwicklung eines Metasploit-Scanners in Nmap"}} end

Überprüfen der Metasploit-Struktur und Erstellen der Datei simple_tcp.rb

Zunächst lassen Sie uns die Struktur von Metasploit noch einmal betrachten.

Metasploit wurde mit einem modularen Konzept entwickelt, um die Effizienz der Codewiederverwendung zu verbessern. Das Framework ist in Ruby geschrieben und enthält Komponenten, die in Perl, C, Assembly und Python entwickelt wurden. Es wurde hauptsächlich für Linux-Betriebssysteme entwickelt, daher ähnelt seine Befehlsstruktur stark der eines Linux-Befehlsshells. Heute unterstützt es jedoch alle wichtigen Betriebssysteme wie Windows, Solaris und Mac.

+---------------+------------------+----------------------------------------------+
| Englischer Name | Modulname        | Beschreibung                                 |
+---------------+------------------+----------------------------------------------+
| `Aux`         | Hilfsmodul       | Bietet eine Vielzahl von Hilfsmodulen für    |
|               |                  | die Informationsgewinnung während des        |
|               |                  | Eindringens, einschließlich des Scannens und |
|               |                  | Fingerprintings verschiedener Netzwerk-      |
|               |                  | dienste, des Aufbaus gefälschter Dienste     |
|               |                  | zur Sammlung von Anmeldeinformationen,      |
|               |                  | Passwort-Raten usw.                          |
+---------------+------------------+----------------------------------------------+
| `Exploits`    | Exploit-Modul    | Code-Komponenten, die entdeckte Sicherheits- |
|               |                  | lücken oder Konfigurationsschwächen ausnutzen|
|               |                  | um entfernte Zielsysteme anzugreifen,        |
|               |                  | Payloads zu installieren und auszuführen     |
|               |                  | und Zugriffskontrolle über die Zielsysteme   |
|               |                  | zu erlangen.                                 |
+---------------+------------------+----------------------------------------------+
| `Post`        | Post-Exploit-    | Unterstützt verschiedene Aktionen nach dem  |
|               | Modul            | Exploit auf dem kontrollierten System, nachdem|
|               |                  | über die Exploitation die Fernzugriffskontrolle|
|               |                  | erlangt wurde, wie z. B. das Erhalten von    |
|               |                  | sensiblen Informationen, das weitere Pivoten |
|               |                  | und das Starten von Pivot-Angriffen.         |
+---------------+------------------+----------------------------------------------+
| `Payloads`    | Payload-Modul    | Payloads sind Code-Segmente, die auf dem     |
|               |                  | Zielsystem nach einem erfolgreichen Exploit  |
|               |                  | ausgeführt werden, typischerweise um eine    |
|               |                  | Steuerungssitzungsverbindung für den Angreifer|
|               |                  | zu öffnen.                                   |
+---------------+------------------+----------------------------------------------+
| `Encoders`    | Encoder-Modul    | Nachdem das Payload und die NOP-Anweisungen  |
|               |                  | zu einer Anweisungssequenz zusammengefügt    |
|               |                  | wurden, muss Metasploit einen wichtigen      |
|               |                  | Encodierungsschritt ausführen, bevor das     |
|               |                  | Exploit-Modul den schädlichen Datenpuffer    |
|               |                  | in das Zielsystem zur Ausführung injiziert.  |
+---------------+------------------+----------------------------------------------+
| `Nops`        | NOP-Modul        | NOP (No Operation)-Anweisungen sind          |
|               |                  | Operationen oder Anweisungen, die keine      |
|               |                  | wesentliche Auswirkung auf den Ausführungs-  |
|               |                  | zustand des Programms haben.                 |
+---------------+------------------+----------------------------------------------+

Metasploit integriert auch mehrere Sicherheitslücken-Scanner-Komponenten, wie z. B.:

  • Nmap-Scanner: Geeignet für Windows, Linux und Mac OS. Wird für die Host-Erkennung, Port-Scanning oder -Enumeration, Dienst-Erkennung sowie die Erkennung von Betriebssystemen, Hardware-Adressen, Software-Versionen und Sicherheitslücken verwendet.

  • NeXpose-Scanner: Scannt das Netzwerk, um laufende Geräte zu finden, deren Betriebssysteme und Anwendungs-Sicherheitslücken zu identifizieren, die gescannten Daten zu analysieren und Sicherheitslücken-Scan-Berichte zu generieren.

  • Nessus-Scanner: Eines der am weitesten verbreiteten Tools zur Sicherheitslücken-Scanning. Es verwendet ein Client/Server-Modell, wobei der Server die Sicherheitsüberprüfungen durchführt und der Client den Server konfiguriert und verwaltet. Der Server verwendet auch ein Plug-In-System, das es Benutzern ermöglicht, Plug-Ins für bestimmte Funktionen und komplexere Sicherheitsüberprüfungen hinzuzufügen.

Jetzt werden wir ein neues Metasploit-Scanner-Modul namens simple_tcp.rb erstellen.

  1. Öffnen Sie ein xfce-Terminal auf der LabEx-Hostmaschine und starten Sie das Metasploitable2-Ziel mit dem folgenden Befehl:
sudo virsh start Metasploitable2

Warten Sie, bis die Zielmaschine gestartet ist. Dies kann 1 - 3 Minuten dauern.

  1. Testen Sie die Konnektivität zur Zielmaschine, indem Sie sie per Ping anpingen:
ping 192.168.122.102

Drücken Sie Ctrl+C, um den Ping-Vorgang zu beenden.

  1. Starten Sie den Kali Linux-Container und treten Sie in die bash-Umgebung ein, indem Sie folgenden Befehl ausführen:
docker run -ti --network host b5b709a49cd5 bash
  1. Innerhalb des Kali-Containers testen Sie die Netzwerkverbindung zur Zielmaschine:
ping 192.168.122.102

Drücken Sie Ctrl+C, um den Ping-Vorgang zu beenden.

  1. Navigieren Sie dann in das Verzeichnis des scanner-Moduls:
cd /usr/share/metasploit-framework/modules/auxiliary/scanner
  1. Erstellen Sie eine neue Datei namens simple_tcp.rb:
sudo vi simple_tcp.rb
  1. Kopieren Sie den folgenden Code und fügen Sie ihn in die Datei ein:
require 'msf/core'
class MetasploitModule < Msf::Auxiliary
    include Msf::Exploit::Remote::Tcp
    include Msf::Auxiliary::Scanner

    def initialize
        super(
            'Name'        => 'Mr_Zhou Scanner',
            'Version'     => '$Revision$',
            'Description' => 'Shiyanlou TCP Scanner',
            'Author'      => 'lucat',
            'License'     => MSF_LICENSE
        )
        register_options(
            [
                Opt::RPORT(12345)
            ], self.class)
    end

    def run_host(ip)
        connect()
        sock.puts('HELLO SERVER')
        data = sock.recv(1024)
        print_status("Received: #{data} from #{ip}")
        disconnect()
    end
end
  1. Dieser Code definiert ein neues Metasploit-Modul namens "Mr_Zhou Scanner", das TCP-Ports scannt und alle empfangenen Daten vom Server anzeigt. Lassen Sie uns den Code durchgehen:
def initialize
    super(
        'Name'        => 'Mr_Zhou Scanner',
        'Version'     => '$Revision$',
        'Description' => 'Shiyanlou TCP Scanner',
        'Author'      => 'lucat',
        'License'     => MSF_LICENSE
    )

Dieser Abschnitt legt die Metadaten für das Modul fest, wie z. B. seinen Namen, die Beschreibung, den Autor und die Lizenz.

register_options(
    [
        Opt::RPORT(12345)
    ], self.class)

Diese Zeile registriert die Option, Port 12345 zu scannen.

def run_host(ip)
    connect()
    sock.puts('HELLO SERVER')
    data = sock.recv(1024)
    print_status("Received: #{data} from #{ip}")
    disconnect()
end

Diese Methode wird für jede Ziel-IP-Adresse ausgeführt. Sie stellt eine Verbindung zum angegebenen Port her, sendet die Zeichenkette "HELLO SERVER", empfängt und gibt alle Daten vom Server aus und trennt dann die Verbindung.

Speichern Sie die Datei und verlassen Sie den Editor.

Einrichten eines Lauschenden Servers

Um unseren simple_tcp.rb-Scanner zu testen, müssen wir auf der Zielmaschine einen Lauschenden Server einrichten.

Öffnen Sie auf dem LabEx-Host ein neues Xfce-Terminal und erstellen Sie eine Datei namens shiyanlou.txt:

vi shiyanlou.txt

Geben Sie in diese Datei beliebigen Text ein, den Sie möchten. Dieser Text wird an den Scanner zurückgesendet, wenn er sich an den Lauschenden Port verbindet. Beispielsweise:

Life is short, i use Python.

Speichern Sie die Datei und verlassen Sie den Editor.

Als Nächstes starten Sie einen Lauschenden Server auf Port 12345 (dem Port, für den unser Scanner konfiguriert ist) und senden Sie den Inhalt von shiyanlou.txt an alle verbundenen Clients:

sudo nc -l 12345 < shiyanlou.txt

Der Server lauscht jetzt auf Port 12345 und wartet auf eingehende Verbindungen.

Ausführen des simple_tcp-Scanners

Jetzt, da wir unser simple_tcp-Scanner-Modul und einen Lauschenden Server eingerichtet haben, lassen Sie uns den Scanner ausführen und sehen, ob er funktioniert.

Zunächst starten Sie die Metasploit-Konsole im Kali Linux-Container:

cd ~
sudo msfconsole

Sobald die Konsole geladen ist, verwenden Sie unser simple_tcp-Modul:

use auxiliary/scanner/simple_tcp

Sie können die Modulinformationen mit dem Befehl info anzeigen:

info

Hier ist ein Beispiel für die Ausgabe, die Sie sehen könnten:

Name:          Mr_Zhou Scanner
Description:   Shiyanlou TCP Scanner
Author:        lucat
License:       Metasploit Framework License (BSD)
Version:       $Revision$

Als Nächstes legen Sie die IP-Adresse des Zielhosts fest:

set RHOSTS 192.168.122.1

Hinweis: Verwenden Sie RHOSTS (mit einem 's'), nicht RHOST. Sie können überprüfen, welche Option Sie verwenden sollen, mit dem Befehl show options.

Schließlich führen Sie den Scanner aus:

run

Wenn alles korrekt eingerichtet ist, sollten Sie die Nachricht vom Lauschenden Server sehen:

[+] Received: Life is short, i use Python. from 192.168.122.1

Wenn Sie diese Nachricht nicht erhalten haben, kehren Sie zu Ihrem Lauschenden Server zurück und führen Sie erneut sudo nc -l 12345 < shiyanlou.txt aus.

Herzlichen Glückwunsch! Sie haben erfolgreich Ihr eigenes Metasploit-Scanner-Modul entwickelt und getestet.

Drücken Sie Ctrl+D, um die Metasploit-Konsole zu beenden, und starten Sie dann die Prüfung.

Zusammenfassung

In diesem Lab haben Sie gelernt, wie Sie Ihr eigenes Metasploit-Scanner-Modul entwickeln können. Sie haben die Metasploit-Modulstruktur überprüft, ein neues TCP-Scanner-Modul namens simple_tcp.rb erstellt, einen Lauschenden Server eingerichtet, um den Scanner zu testen, und den Scanner erfolgreich ausgeführt, um Daten vom Server zu empfangen und anzuzeigen.

Diese praktische Erfahrung bei der Entwicklung eines Metasploit-Scanners wird Ihnen helfen, die Fähigkeiten des Frameworks besser zu verstehen und zu erfahren, wie Sie es mit benutzerdefinierten Modulen erweitern können. Sie können dieses Wissen nutzen, um fortgeschrittenere Scanner oder andere Arten von Modulen für verschiedene Penetrationstestszenarien zu erstellen.