All Projects → wallix → redemption

wallix / redemption

Licence: GPL-2.0, Unknown licenses found Licenses found GPL-2.0 LICENSE Unknown COPYING
A GPL RDP proxy

Programming Languages

C++
36643 projects - #6 most used programming language
javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
shell
77523 projects
HTML
75241 projects
lua
6591 projects

Projects that are alternatives of or similar to redemption

Seth
Perform a MitM attack and extract clear text credentials from RDP connections
Stars: ✭ 1,084 (+541.42%)
Mutual labels:  rdp
Next Terminal
Next Terminal是一个轻量级堡垒机系统,易安装,易使用,支持RDP、SSH、VNC、Telnet、Kubernetes协议。
Stars: ✭ 2,354 (+1292.9%)
Mutual labels:  rdp
Fasttunnel
NAT 内网穿透 远程内网计算机 域名访问内网站点 反向代理内网服务 花生壳 端口转发 http代理 微信 小程序 expose a local server behind a NAT or firewall to the internet like ngrok and frp. NAT ssh proxy tunnel reverse-proxy
Stars: ✭ 248 (+46.75%)
Mutual labels:  rdp
Webterminal
ssh rdp vnc telnet sftp bastion/jump web putty xshell terminal jumpserver audit realtime monitor rz/sz 堡垒机 云桌面 linux devops sftp websocket file management rz/sz otp 自动化运维 审计 录像 文件管理 sftp上传 实时监控 录像回放 网页版rz/sz上传下载/动态口令 django
Stars: ✭ 1,124 (+565.09%)
Mutual labels:  rdp
Guacamole
Guacamole是无客户端的远程桌面网关。它支持VNC,RDP和SSH等标准协议。 我们称之为无客户端,因为不需要插件或客户端软件。 感谢HTML5,一旦Guacamole安装在服务器上,您访问桌面所需的全部功能就是一个Web浏览器。
Stars: ✭ 99 (-41.42%)
Mutual labels:  rdp
Lazy Rdp
Script for automatic scanning & brute-force RDP
Stars: ✭ 118 (-30.18%)
Mutual labels:  rdp
Terminals
Terminals is a secure, multi tab terminal services/remote desktop client. It uses Terminal Services ActiveX Client (mstscax.dll). The project started from the need of controlling multiple connections simultaneously. It is a complete replacement for the mstsc.exe (Terminal Services) client. This is official source moved from Codeplex.
Stars: ✭ 971 (+474.56%)
Mutual labels:  rdp
BlueRDPSploit
Auto IP range scanner & exploit tool for BlueKeep metasploit module
Stars: ✭ 21 (-87.57%)
Mutual labels:  rdp
Guacamole Lite
NodeJS replacement for guacamole-client (server-side Java servlet). Guacamole is a RDP/VNC client for HTML5 browsers.
Stars: ✭ 114 (-32.54%)
Mutual labels:  rdp
Chameleon
Customizable honeypots for monitoring network traffic, bots activities and username\password credentials (DNS, HTTP Proxy, HTTP, HTTPS, SSH, POP3, IMAP, STMP, RDP, VNC, SMB, SOCKS5, Redis, TELNET, Postgres and MySQL)
Stars: ✭ 230 (+36.09%)
Mutual labels:  rdp
Simplification
Very fast LineString simplification using RDP or Visvalingam-Whyatt and a Rust binary
Stars: ✭ 78 (-53.85%)
Mutual labels:  rdp
Iap Desktop
IAP Desktop is a Windows application that provides zero-trust Remote Desktop and SSH access to Linux and Windows VMs on Google Cloud.
Stars: ✭ 96 (-43.2%)
Mutual labels:  rdp
Premotem
Personal Remote Manager
Stars: ✭ 161 (-4.73%)
Mutual labels:  rdp
Rdpgw
Remote Desktop Gateway in Go for deploying on Linux/BSD/Kubernetes
Stars: ✭ 59 (-65.09%)
Mutual labels:  rdp
RdpCacheStitcher
RdpCacheStitcher is a tool that supports forensic analysts in reconstructing useful images out of RDP cache bitmaps.
Stars: ✭ 176 (+4.14%)
Mutual labels:  rdp
Myrtille
A native HTML4 / HTML5 Remote Desktop Protocol and SSH client
Stars: ✭ 1,007 (+495.86%)
Mutual labels:  rdp
Remmina
Mirror of https://gitlab.com/Remmina/Remmina The GTK+ Remmina Remote Desktop Client
Stars: ✭ 1,705 (+908.88%)
Mutual labels:  rdp
RabbitRemoteControl
Remote control. Support VNC, RDP, Terminal, SSH, TELNET etc
Stars: ✭ 82 (-51.48%)
Mutual labels:  rdp
angrylion-rdp-plus
A low-level N64 video emulation plugin, based on the pixel-perfect angrylion RDP plugin with some improvements.
Stars: ✭ 143 (-15.38%)
Mutual labels:  rdp
Brutedum
BruteDum - Brute Force attacks SSH, FTP, Telnet, PostgreSQL, RDP, VNC with Hydra, Medusa and Ncrack
Stars: ✭ 212 (+25.44%)
Mutual labels:  rdp

A RDP (Remote Desktop Protocol) proxy.

(A RDP client in projects/qtclient, a RDP web client in projects/jsclient)

Support of:

  • RDP client to RDP server and
  • RDP client to VNC server
  1. Dependencies
    1. FFmpeg
      1. Ubuntu / Debian
      2. Other distros
  2. Compilation
    1. Special runtime variables (shell variable)
    2. Setting build variables
      1. Musl libc
    3. Modes and options
  3. Run ReDemPtion
  4. Convert .mwrm/.wrm capture to video
  5. Generate target and lib/obj dependencies
  6. Compile proxy_recorder
  7. Packaging
  8. Tag and Version
  9. Test files
  10. FAQ
    1. Q - Why do you use bjam for ReDemPtion instead of make, cmake, scons, etc ?
    2. Q - How to add configuration variables in rdpproxy.ini ?

Dependencies

To compile ReDemPtion you need the following packages:

  • libboost-tools-dev (contains bjam and b2: software build tool) (https://github.com/boostorg/build)
  • libboost-test-dev (unit-test dependency)
  • zlib1g-dev
  • libssl-dev
  • libkrb5-dev
  • libgssglue-dev (unnecessary since Ubuntu 17.10 and Debian 10)
  • libsnappy-dev
  • libpng-dev (libpng12-dev (< Debian 10))
  • libbz2-dev
  • libhyperscan-dev
  • libffmpeg-dev (see below)
  • libgettext (when musl is used)
  • g++ >= 8.0 or clang++ >= 5.0 or other C++17 compiler
apt install libboost-tools-dev libboost-test-dev libssl-dev libkrb5-dev libsnappy-dev libpng-dev libbz2-dev libhyperscan-dev

Submodule ($ git submodule update --init):

On Ubuntu SNAPPY dev files are broken and SNAPPY_MAJOR, SNAPPY_MINOR and SNAPPY_PATCHLEVEL macros are not defined. The simplest way to fix that is editing /usr/include/snappy-stubs-public.h and define these above SNAPPY_VERSION like below (change values depending on your snappy package).

$ apt show libsnappy-dev | grep Version
Version: 1.1.7-1
#define SNAPPY_MAJOR 1
#define SNAPPY_MINOR 1
#define SNAPPY_PATCHLEVEL 7
#define SNAPPY_VERSION \
    ((SNAPPY_MAJOR << 16) | (SNAPPY_MINOR << 8) | SNAPPY_PATCHLEVEL)

FFmpeg

Ubuntu / Debian

  • libavcodec-dev
  • libavformat-dev
  • libavutil-dev
  • libswscale-dev
  • libx264-dev
apt install libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libx264-dev

Other distros

And set the build variables (optionally)

  • FFMPEG_INC_PATH=/my/ffmpeg/include/path
  • FFMPEG_LIB_PATH=/my/ffmpeg/library/path (/!\ without / terminal)
  • FFMPEG_LINK_MODE=shared (static or shared, shared by default)

Note: Disable ffmpeg with NO_FFMPEG=1.

Compilation

(Instruction for Debian 9)

Well, that's pretty easy once you installed the required dependencies.

Just run (as user):

$ bjam or bjam toolset=your-compiler (ex: bjam toolset=gcc) (see https://boostorg.github.io/build/manual/develop/index.html#bbv2.overview.configuration and tools/bjam/user-config.jam)

Verbose tests:

$ export REDEMPTION_LOG_PRINT=1
$ bjam tests

  • REDEMPTION_LOG_PRINT=e for error and debug only
  • REDEMPTION_LOG_PRINT=d for debug only
  • REDEMPTION_LOG_PRINT=w for other than info

Note: bjam tests.norec, bjam tests/front.norec execute files directly in tests directory, but not recursively.

Compile executables without tests (as user):

$ bjam exe libs

and install (as administrator):

# bjam install

Binaries are located by default in /usr/local/bin. For a user install, see setting build variables.

Use bjam --help for more information.

Special runtime variables (shell variable)

  • REDEMPTION_FILTER_ERROR (Only if BOOST_STACKTRACE != 0): No backtrace for specific error (see src/core/error.hpp). example: export REDEMPTION_FILTER_ERROR=ERR_TRANSPORT_NO_MORE_DATA,ERR_SEC.

Setting build variables

List with bjam env_help.

Example with ffmpeg :

bjam -s FFMPEG_INC_PATH=$HOME/ffmpeg/includes ...

Or with a shell variable

export FFMPEG_INC_PATH=$HOME/ffmpeg/includes
bjam ....

Musl libc

bjam -s MUSL_LIBC=1 ...

Modes and options

$ bjam [variant=]{release|debug|san} [-s cxx_option=value] [target...]

  • release: default

  • debug: debug mode

  • san: debug + sanitizers (asan, lsan, usan)

  • -s cxx_color: default auto never always

  • -s cxx_lto: off on fat linker-plugin

  • -s cxx_relro: default off on full

  • -s cxx_stack_protector: off on strong all

  • ...

Complet list with bjam cxx_help.

Run ReDemPtion

To test it, executes:

$ python tools/passthrough/passthrough.py

# /usr/local/bin/rdpproxy -nf

Now, at that point you'll just have two servers waiting for connections not much fun. You still have to run some RDP client to connect to proxy. Choose whichever you like xfreerdp, rdesktop, remmina, tsclient on Linux or of course mstsc.exe if you are on windows. All are supposed to work. If some problem occurs just report it to us so that we can correct it.

Example with freerdp when the proxy runs on the same host as the client:

$ xfreerdp /v:127.0.0.1

$ xfreerdp /v:127.0.0.1 /u:username@target_ip /p:password

A dialog box should open in which you can type a username and a password. With default passthrough.py at least internal services should work. Try login: internal, password: internal and bouncer2 or card as device. If you want to provide such extensions to current passthrough.py, please contribute it, it will be much appreciated.

$ xfreerdp /u:internal@internal /p:internal 127.0.0.1

Convert .mwrm/.wrm capture to video

.mwrm and .wrm are native capture formats in capture_flags=2 in rdpproxy.ini.

redrec -f --video-codec mp4 -i file.mwrm -o output_prefix

Note: rdpproxy --print-default-ini show a default ini file.

Generate target and lib/obj dependencies

When create a new test or when a target fail with link error:

bjam targets.jam for updated targets.jam and projects/ClientQtGraphicAPI/redemption_deps.jam files.

Or run ./tools/bjam/gen_targets.py > targets.jam

Specific deps (libs, header, cpp, etc) in ./tools/bjam/gen_targets.py.

Compile proxy_recorder

Proxy recorder is a tools used to record dialog between a client and an RDP server without any modification of the data by redemption. This allows to record reference traffic for replaying it later. It is useful for having available new parts or the RDP protocol in a reproducible way and replaying traffic when implementing the new orders. This tools is not (yet) packaged with redemption and delivered as stand-alone.

It can be compiled using static c++ libraries (usefull to use the runtime on systems where reference compiler is older) using the command line below. Links with openssl and kerberos are still dynamic and using shared libraries.

bjam -a -d2 toolset=gcc-7 proxy_recorder linkflags=-static-libstdc++

Exemple call line for proxy_recorder:

proxy_recorder --target-host 10.10.47.252 -p 3389 -P 8000 --nla-username myusername --nla-password mypassword -t dump-%d.out

Packaging

./tools/packager.py --build-package
  • --force-target target: target is a file in packaging/targets
  • --force-build

Tag and Version

./tools/packager.py --update-version 1.2.7 --git-tag --git-push-tag --git-push
  • --add-changelog: if you want to add some specific changelogs

Test files

See test_framework directory.

FAQ

Q - Why do you use bjam for ReDemPtion instead of make, cmake, scons, etc ?

It is simple, more that could be thought at first sight, and bjam has the major feature over make to keep source directories clean, all build related informations for all architecture are kept together in bin directory.

The main drawback of bjam is the smaller user base.

But keeping in mind the complexity of make (or worse autotools + make), bjam is a great help. We also used to have an alternative cmake build system, but it was more complex than bjam and not maintained, so was removed.

Q - How to add configuration variables in rdpproxy.ini ?

Just edit config_spec.hpp (projects/redemption_configs/configs_specs/configs/specs/config_spec.hpp).

The necessary changes should be simple using the surrounding code as exemple.

Then enter directory projects/redemption_configs and type bjam the needed files will be generated.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].