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.
- Ö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.
- 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.
- 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
- 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.
- Navigieren Sie dann in das Verzeichnis des
scanner
-Moduls:
cd /usr/share/metasploit-framework/modules/auxiliary/scanner
- Erstellen Sie eine neue Datei namens
simple_tcp.rb
:
sudo vi simple_tcp.rb
- 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
- 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.