RF(Radio Frequency)란?
RF란 Radio Frequency의 약자로 무선 주파수를 통해 정보를 교환하는 통신 방식이다.
Radio, TV, Wi-Fi, Bluetooth 등 우리가 흔하게 사용하는 기기에서 RF 통신을 사용한다. 또한, 최근 IoT(자동차 스마트키, 드론, 스마트 도어락, 주차장 차단기 등)에도 RF 통신이 많이 사용되고 있다.
기후와 환경이 좋지 않더라도 주파수의 신호를 정확히 전달하는 장점을 가지고 있다.
RF Replay Attack
위에서 설명한 RF를 재전송하여 공격자가 특정 기기의 행위를 발생시킬 수 있는 공격이다. HackRF one을 통해 특정 주파수 대역을 확인할 수 있다. 따라서, 악의적인 공격자는 기기간의 데이터 통신을 가로채어 재전송하여 특정 기기에게 영향을 줄 수 있다.
예를 들어, 특정 RF를 보내면 자동문이 열린다면, 공격자가 자동문이 열릴 때 발생한 주파수를 가로채어 다시 전송하면 자동문을 열 수 있는 것이다.
HackRF를 이용하여 자동차키의 주파수 대역을 확인하고 기록한 후, 재전송하여 차량의 문을 여는 실습 할 것이다.먼저, RF를 기록하고 재생하기 위해 HackRF one이라는 장비가 필요하다. HackRF는 다음 그림과 같이 생겼다. 또한, RF를 발생 시킬 자동차 리모트키가 필요하고, 증명을 위한 자동차가 필요하다.
환경 구성
운영체제 : 칼리 리눅스
하드웨어 : hackRF one
소프트웨어 : gqrx, GNU radio
HackRF 설치
RF를 소프트웨어적으로 변경하여 송수신할 수 있으며, 30mW ~ 1mW 출력으로 1MHz ~ 6GHz의 주파수 범위에서 송수신이 가능하다.
apt를 통해 HackRF를 쉽게 설치할 수 있다.
$ sudo apt update -y && sudo apt upgrade -y
$ sudo apt install hackrf libhackrf-dev libhackrf0
$ hackrf_info
설치가 정상적으로 되었다면, 위와 같은 화면이 나온다.
GQRX 설치 (github)
HackRF를 연결했다면, gqrx라는 도구를 통해 실시간으로 RF를 확인할 수 있다. gqrx는 GNU 라디오와 Qt GUI 툴킷을 사용하여 구현된 오픈 소스 소프트웨어 정의 라디오(SDR) 수신기이다. 다음 명령어를 통해 쉽게 설치할 수 있다.
$ git clone https://github.com/gqrx-sdr/gqrx.git gqrx.git
$ cd gqrx.git
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo systemctl restart avahi-daemon
$ gqrx
Device에 연결된 HackRF를 선택해주고, 실행해보면 위 사진과 같이 주파수를 확인할 수 있다.
GNU radio
$ sudo apt install gnuradio
$ sudo apt install -y xterm
$ gnuradio-companion
위 명령어를 통해 설치하고 실행할 수 있다.
오른쪽에서 GUI로 구성된 여러 기능을 가져다가 사용할 수 있다.
주파수를 기록하여 파일로 저장할 수도 있으며, 기록된 파일을 다시 RF로 전송하도록 구성할 수도 있다.
RF Replay Attack 실습
재전송을 하기 위해서는 해당 차량 키의 주파수 대역을 확인하는 것이 우선이다.
현대 자동차가 사용하는 주파수는 315Mhz/433Mhz/447Mhz를 사용하므로, 차키의 각 버튼을 눌러 RF 신호를 보내어 확인할 수 있다.
RF 통신 신호 감지
433MHz 대역을 설정하고 차키의 문 열림 버튼을 눌렀을 때, 위 사진과 같이 434MHz 대역에서 RF가 발생한 것을 확인 할 수 있었다.
문 열기, 문 닫기, 경보음 모두 고정된 주파수 대역을 사용했고, 특정 비트의 값에 따라 열림과 닫힘을 구분하는 것 같다.
주파수 대역을 확대해서 다시 눌러보면, 조금 더 크게 확인할 수 있다.
※ gqrx의 여러 기능을 잘 사용하면 효율적으로 RF를 분석할 수 있다.
RF 신호 기록
먼저, GNUradio를 실행하고 433MHz 대역의 주파수를 기록한다.
위와 같이 구성을 하고, 실행을 하면 아래 사진과 같이 해당 주파수 대역을 기록한다.
위 화면이 뜨면, 차키에서 열림 버튼 눌러서 RF 신호를 기록한다.
기록이 끝났다면, 오른쪽 위에 x 버튼을 눌러 종료한다. 그러면 자동으로 설정한 경로로 저장이 된다.
재전송 공격 시 기록된 주파수를 계속 반복하기 때문에, 특정 행위를 한번만 기록해도 반복해서 재전송이 가능하다.
RF 신호 재전송 공격
기록된 파일을 재전송한다. 앞서 차키의 열림 신호를 기록했으니, 차키 없이 차문을 열어볼 것이다.
기록했을 때와 반대로, 기록된 파일에서 주파수를 발생시키도록 구성해준다. 대역과 Rate 설성을 동일하게 해주면 된다.
실행시키면, RF 신호가 재전송되어, 차문이 열린다.
거리가 멀어지면 잘 도달하지 않는 것 같지만, 그래도 반복해서 RF 신호를 재전송하면 차문이 열리게 된다.