Du führst ein SMB Modul im Metasploit Framework aus und erhältst folgende Fehlermeldung?
[-] Exploit failed: RubySMB::Error::EncryptionError Communication error with the remote host: Socket read returned nil. The server supports encryption but was not able to handle the encrypted request.
[*] Exploit completed, but no session was created.
Dann kann dies viele verschiedene Ursachen haben. Eine häufige Ursache ist jedoch, dass Client und Server unterschiedliche Protokollversionen verwenden und deshalb in verschiedenen SMB Dialekten (z. B. SMBv1, SMBv2 und SMBv3) miteinander „sprechen“. Die SMB Protokollversion lässt sich in Metasploit erfreulicherweise einstellen. Hierzu muss lediglich die gewünschte Versionsnummer in dem Setting „SMB::ProtocolVersion“ hinterlegt werden.
Zudem ist zu beachten, dass Metasploit standardmäßig versucht, die Kommunikation zum Server zu verschlüsseln, wenn der SMB 3.x-Dialekt ausgehandelt wurde. Dieses Standardverhalten lässt sich ebenfalls über ein Setting steuern. Um es zu deaktivieren, muss das Setting „SMB::AlwaysEncrypt“ auf „false“ und um es (wieder) zu aktivieren auf „true“ gesetzt werden.
Lösung
Eine mögliche Lösung für die o. g. Fehlermeldung könnte also sein, diese Einstellungen entsprechend anzupassen. In Metasploit sehen die Befehle hierfür wie folgt aus:
set SMB::AlwaysEncrypt false
set SMB::ProtocolVersion 1
Ist euch die genaue Protokollversion nicht bekannt, so lohnt es sich, verschiedene SMB Versionen auszuprobieren. Selbstverständlich kann diese Fehlermeldung auch andere Ursachen haben, doch in den meisten Fällen ist es sinnvoll, es zumindest mal mit diesen Einstellungen probiert zu haben.
In diesem Sinne hoffe ich, dass ich dem einen oder anderen hiermit einen Gedankenanstoß geben und helfen konnte.
set SMB::ProtocolVe rsion 1
Interessanterwe ise bekam ich mit dem Wert 1,2,3 (default) den genannten Fehler.