Evil pixels: Researcher demos data-theft over screen-share protocols

Users see white noise, attackers see whatever they just stole from you

Pen Test Partners' data-stealing screen
Do not ajust your screen: there's data in this noise

It's the kind of thinking you expect from someone who lives in a volcano lair: exfiltrating data from remote screen pixel values.

The idea comes from Pen Test Partners' Alan Monie, taking a break from sex toy hacks and wondering how to get data over a connection like RDP (remote desktop protocol) when the target had blocked file transfer (or the target is using a VMware console that can't transfer files).

His approach: since the point of a remote desktop is that it's the contents of a victim's user's screen that gets copied over the wire, encode the data you want to steal into the screen data, by flashing up a screen full of what looks like white noise.

Monie's PTP-RAT proof-of-concept code to do this zips down to a mere 13 KB. At that size, a skilled attacker could upload during an RDP session without attracting attention.

The only stumbling block Monie had to deal with to create it is compression: RDP didn't transmit screen colour data completely accurately.

However, restricting the exfiltration encoding rate to three bits per pixel (encoding just one bit on each of the Red, Green and Blue values) took care of the compression issue, allowing him to pull a 3 MB file off the target in “a few seconds”.

Here's how PTP-RAT functions, pretty much in full:

Each screen flash starts with a header. This contains a magic string, “PTP-RAT-CHUNK” followed by a sequence number. When the receiver is activated, it starts taking screenshots at twice the transmission frequency (the Nyquist rate). When it detects a valid header, it decodes the pixel colour information and waits on the next flash. As soon as a valid header is not detected, it reconstructs all the flashes and saves the result to a file.

To transfer a file, you run an instance of the Rat locally on your hacktop, and set that up as a receiver. Another instance is run on the remote server and this acts as a sender. You simply click on send file, and select a file to send. The mouse pointer disappears and the screen begins to flash as the file is transmitted via the pixel colour values. At the end of the transfer, a file-save dialog appears on the receiver, and the file is saved.

As far as Vulture South can tell from Monie's video, the victim won't see the alteration – because that's what's sent over the wire to the attacker, and they're expecting to see the screen flashes. ®

Biting the hand that feeds IT © 1998–2017