Giter Site home page Giter Site logo

sigover_injector's Introduction

Description

SigOver (signal overshadowing attack) exploits the fundamental weakness of broadcast messages in LTE and modifies a transmitted signal over the air. By using this tool, you can inject a manipulated broadcast signal into UEs without employing an FBS.

Use responsively

Overshadowing a LTE signal on licensed frequencies might be illegal in your country. (Each country has unique regulations regarding the wireless transmission of signals and these regulations are drafted, implemented, and modified by each country's government, not by an international organization.)

Also, it may affect other users not to receive legitimate signals.

What is SigOver?

SigOver is a signal injection attack that exploits the fundamental weakness of physical layer in Long-Term Evolution (LTE). Since LTE communication is based on an open medium, a legitimate signal can potentially be counterfeited by a malicious signal. In addition, although most LTE signaling messages are protected from modification using cryptographic primitives, broadcast messages in LTE have never been integrity protected.

This attack has several advantages and differences when compared with existing attacks using a fake base station. For example, with a 3 dB power difference from a legitimate signal, the SigOver demonstrated a 98% success rate when compared with the 80% success rate of attacks achieved using a fake base station, even with a 35 dB power difference. Given that the SigOver is a novel primitive attack, it yields five new attack scenarios and implications.

Please refer to our paper for more details. If you are also interested in overshadowing unicast messages in LTE, please refer to our 36C3 talk.

Injecting unicast message?

You have to use a C-RNTI instead of the P-RNTI (when crafting the DCI message for the UE-specific space of the PDCCH).

Also, you need to use other DCI formats (e.g. DCI Format 2A) according to the transmission mode. Using DCI Format 1A is only enough for the broadcast messages, which are transferred using a common search space in PDCCH.

The transmission mode is informed through RRC Connection Setup and RRC Connection Reconfiguration message, and it varies according to the configuration of the base station.

In addition, if you want to inject a MAC CE message, you don't have to care about the sequence numbers. However, you might have to consider the sequence numbers for messages on the higher layer.

SigOver Manual Common

SigOver is implemented on the top of the srsLTE. So it requires the same setup as when executing the srsLTE. In addition, due to the tight frequency requirements in LTE, we highly recommend you to use a USRP X310 combined with a GPS disciplined oscillator (GPSDO). And prepare the attack message by using sigover_gen_sample.

Prerequisite

  • USRP X310 with GPSDO (TCXO or LCXO), (+It’s better to have GPS antenna)
  • Ubuntu PC (we used 16.04) that can execute the srsLTE.
  • Configuration of target eNB. (e.g. by using pdsch_ue of srsLTE)
  • Attack message (i.e. IMSI paging message).

Overall Procedure

  1. Repository “sigover_gen_sample” is for building a subframe with an IMSI paging message.
  2. Get configuration of target eNB which the victim UE is connected to. (PHICH Length, PHICH Resources, cyclic prefix, transmission mode, number of ports, number of PRB, PCI)
  3. Go to the “lib/test/common/gen_sample.cc” and change cell configurations on with target eNB’s.
  4. Build the project.
  5. By executing build/lib/test/common/gen_sample on “sigover_gen_sample”, you can get a file named “output.”
  6. Repository “sigover_injector” is for injecting an IMSI paging message at specific timing and frequency.
  7. Build the project.
  8. Copy “output” file to sigover_injector/build/lib/examples
  9. Using build/lib/examples/pdsch_enodeb, you can inject the IMSI paging message on the air.

INJECTOR

Building

mkdir build
cd build
cmake ..
make

Executing

cd lib/examples
cp {where the file "output" from "sigover_gen_sample" is located, e.g. */sigover_gen_sample/build}/output .

sudo ./pdsch_enodeb -f @1 -a @2 -p @3 -g @4 -D @5 -i @6
@1: TX frequency (target cell's DL frequency)
@2: SDR option
@3: number of prb
@4: TX gain
@5: Attack mode. sigover_gen_sample generates IMSI paging message. 0 is for IMSI paging.
@6: Input file name. Default is "output"

(example)
sudo ./pdsch_enodeb -f 2120e6 -a clock=gpsdo,type=x300 -p 100 -g 30 -D 0 -i "output"

Credits

We sincerely appreciate the SRS team for making their great software available :)

BibTex

Please refer to our paper for more details.

@article{yaang:2019:sigover,
  author = {Yang, Hojoon and Bae, Sangwook and Son, Mincheol and Kim, Hongil and Kim, Song Min and Kim, Yongdae},
  title = {Hiding in plain signal: Physical signal overshadowing attack on {LTE}},
  booktitle = {28th USENIX Security Symposium (USENIX Security 19)},
  year = 2019
}

sigover_injector's People

Contributors

agelonch avatar agmagor avatar alvasman avatar andrepuschmann avatar chunyeow avatar davidrupprecht avatar djanderson avatar fabianeckermann avatar ilshatmkii avatar ismagom avatar jgiovatto avatar kaist-syssec avatar kewinrausch avatar krsch avatar marcusmueller avatar marojevic avatar mmtorni avatar mrlnc avatar omnibusor avatar paul-srs avatar pgorczak avatar suttonpd avatar trondeau avatar unrloay2 avatar xavierarteaga avatar yagoda avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sigover_injector's Issues

MIB decodeing failed when running pdsch_enodeb

When I run pdsch_enodeb, there are many frames decoding failed, may it because the configuration information error? I obtain the cell id, prbs, nof_ports, and PHICH length, resource and cyclic prefix from pdsch_ue and transmission mode from RRC Connection Reconfiguration message, are there other parameters need to be configured? By the way, I use a gpsdo and usrp b210.

BladeRF error while building

Builds and runs fine with a b205mini w/ BladeRF disabled in CMakelists.

With BladeRF enabled, the following occurs. I imagine it's an easy fix, perhaps just changes in more recent bladerf installs (bladerf lib 2.4.1-git-5a146b2a).

/home/live/sigover_injector/lib/src/phy/rf/rf_blade_imp.c: In function ‘rf_blade_set_rx_freq’: /home/live/sigover_injector/lib/src/phy/rf/rf_blade_imp.c:350:58: error: passing argument 3 of ‘bladerf_get_frequency’ from incompatible pointer type [-Werror=incompatible-pointer-types] 350 | bladerf_get_frequency(handler->dev, BLADERF_MODULE_RX, &f_int); | ^~~~~~ | | | uint32_t * {aka unsigned int *} In file included from /home/live/sigover_injector/lib/src/phy/rf/rf_blade_imp.c:27: /usr/local/include/libbladeRF.h:1302:56: note: expected ‘bladerf_frequency *’ {aka ‘long unsigned int *’} but argument is of type ‘uint32_t *’ {aka ‘unsigned int *’} 1302 | bladerf_frequency *frequency); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~ /home/live/sigover_injector/lib/src/phy/rf/rf_blade_imp.c: In function ‘rf_blade_set_tx_freq’: /home/live/sigover_injector/lib/src/phy/rf/rf_blade_imp.c:368:58: error: passing argument 3 of ‘bladerf_get_frequency’ from incompatible pointer type [-Werror=incompatible-pointer-types] 368 | bladerf_get_frequency(handler->dev, BLADERF_MODULE_TX, &f_int); | ^~~~~~ | | | uint32_t * {aka unsigned int *} In file included from /home/live/sigover_injector/lib/src/phy/rf/rf_blade_imp.c:27: /usr/local/include/libbladeRF.h:1302:56: note: expected ‘bladerf_frequency *’ {aka ‘long unsigned int *’} but argument is of type ‘uint32_t *’ {aka ‘unsigned int *’} 1302 | bladerf_frequency *frequency); | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~ [ 81%] Built target metrics_test cc1: some warnings being treated as errors make[2]: *** [lib/src/phy/rf/CMakeFiles/srslte_rf.dir/build.make:102: lib/src/phy/rf/CMakeFiles/srslte_rf.dir/rf_blade_imp.c.o] Error 1

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.