Probably a stupid question, but if it’s pure power shell, would it work on Linux? I suspect not since it will likely use a lot of .net stuff but I’d be happy if I was wrong.
Everything in that code is Windows bound: Graphics, certificate creation and storing, etc. The use either Windows interop using DLLs or creating COM objects.
It is possible to a cross platform or at least a Linux version, but it's not this one.
Does the Linux powershell support `[System.Windows.Forms.Screen]::PrimaryScreen
`? If so, I think the screen share will probably work. I'm not sure about the remote control.
Eh, why bother? This is basically just a pure-PowerShell VNC-like as far as I can tell. If an attacker wants that a reverse VNC shellcode is readily available and small.
First of all, it's not a VNC protocol implementation but RDP. Second, it's PowerShell so it's easy to use as a payload in any exploitation tool, e.g. Metasploit, Cobalt Strike and such. If you have information about RDP, you have probably heard it's the first stop when you want to exploit any Windows device. If it doesn't work, you go for SMB, etc. So yes, it's valuable in that sense.
It doesn't appear to be RDP. All this seems to be doing is taking screenshots of the Desktop, which is similar to how VNC works. RDP is a vastly more complicated protocol.
Last I checked the reverse VNC shellcode was literally part of the Metasploit suite, so not really any easier there either.
Browsing the code, this looks like it is sending full screen JPEGs. Maybe someone can correct me, but I think RDP can be more sophisticated and send only the areas of the screen which has changed? From collection, they used to hook the GDI stack directly? This is why RDP has/had a better reputation than VNC for responsiveness. Maybe this server is working in the base case with no optimization?
16 comments
[ 4.7 ms ] story [ 13.7 ms ] threadBut if you have xrdp[0] server on any Linux device, the client might be useful to connect to it. But the client must be Windows in this scenario too.
[0] http://xrdp.org/
``` function Get-ResolutionScaleFactor { <# .SYNOPSIS Return the scale factor of target screen to capture. #>
``` https://github.com/DarkCoderSc/PowerRemoteDesktop/blob/main/...It is possible to a cross platform or at least a Linux version, but it's not this one.
``` $primaryDesktop = [System.Windows.Forms.Screen]::PrimaryScreen
``` https://github.com/DarkCoderSc/PowerRemoteDesktop/blob/main/...Last I checked the reverse VNC shellcode was literally part of the Metasploit suite, so not really any easier there either.
No idea about low level details, but it does perform much better than X Windows ever did.