Code Monkey home page Code Monkey logo

busasm's Introduction

BusAsM

AM radio data exfiltration with CPU cache in assembly.

To put it in a nutshell, my solution :

  • More simple (few lines in assembly and some Python/JS scripts)
  • More robust (written in assembly and JS)
  • More reliable (less collisions)
  • Cross-platform (Linux/Windows/BSD/Mac)
  • Hardware-independent (32/64-bit/ARM)
  • Software-independent (no dependencies whatsoever, except Python/JS for the PoC)

Déjàvu ?

You might already know about System Bus Radio, which is a similar project, but what you might not know, is that I was working on the same research independently.

The situation is pretty close to the opposite what has happened a century ago. Basically :

Me : "Ok, how could I use a computer hardware to create a robust radio signal in the AM band ?"

William : "Hey look, I found a way to encode the sound!"

Me : "OK, but modern computers can encode signals directly, thus you can boost it without an interpretation. You were the first though, but my solution is still more robust and simple."

And yes, it's a second publication of my code (dates from mid-2016) since I removed it for some reasons.

Recently I discovered another similar research for ARM, but it's totally different from mine, which is 2 years older anyway.

So basically, you can transform any electronic device in a radio.

So, what now ?

Nothing, I just wanted everybody to know, that it could be done otherwise and more efficiently.

See my video in comparison.

In fact, I'm doing almost the same thing in the opposite way, by sending 0es and 1s with direct instructions to the processor (using L1 cache) in assembly through it's own cache, which boost the signal significantly.

Besides, I made a Windows 32/64-bits and Android implementations as well, including JavaScript code.

Someone even port it to MacOS.

So, I will provide a SOS signal PoC and a complete transmission solution.

A similar independent theoretical work exists as well.

Plus, I also discovered another way to do the same thing with a backdoored keyboard.

File transfer

I used a pretty old radio and it's working great. Of course, you can use some SDR, but good luck for founding one that supports 1100kHz AM, in fact I'm using the radio as a microphone with Jack/Jack cable.

To amplify the signal, you can use an antenna.

The encoding/modulation is pretty simple, 1 to begin and send next 8 bits (aka RS-232 8N0 MSB).

On the victims PC, you will need the signal's executable and the Python's script send.py, you can use Portable Python 2 or 3. On your machine, you should have a Linux with soundmeter builded from sources. Then you just copy custom.py and geter.py to the build/lib.linux/soundmeter directory and it's ready. However, you will need to calibrate the LIMIT variable in geter.py

Analysis

Memory architecture:

Cache architecture:

By a normal usage of those, we can see the following signal:

Using my solution, the signal has a spike at a precise frequency:

Same is valid on the thermal point of view for the CPU:

Using the code:

While the signal is traveling all the way from registers to the L1 cache, it is decoded and forms a specific radio wave.

Thus, electromagnetic exfiltration isn't just a theoretical PoC but a reality, which is quite easy to exploit on almost any hardware, whereas mitigation is a challenge.

I conclude that we need a new hardware architecture and not just anti-viruses and WAFs.

busasm's People

Contributors

cryptolok avatar joscandreu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.