[논문 리뷰] Wireless Signal Injection Attacks on VSAT Satellite Modems## VSAT 위성 모뎀 취약점 분석 ### 배경지식 VSAT 란?\ VSAT 는 소형 안테나를 사용하는 지구국(Ground Station) 을 말한다. 위성은 지구 정지 궤도(GEO)에 배치되어 신호를 지상의 허브스테이션으로 리다이렉션하고 이 허브 스테이션은 인터넷에 연결되어 있는 상태에서 응답을 한다.\ VSAT 의 속도는 일반적으로 4Kbps \~ 16Mbps 사이의 데이터 속도로 C, Ku 및 Ka 주파수 대역에서 작동한다. - C-band frequency = 3.7\~4.2GHz - Ku band = 12\~18GHz - Ka band = 26.3~39.8 GHz 해상 선박이나 사막, 산악, 북극 등 셀룰러 네트워크가 불가능한 곳에서 인터넷 사용을 사용할 수 있다. 외국에는 일부 도시를 제외하고는 인터넷망이 한국처럼 잘 안깔려 있다.\\ VSAT 의 구성요소 3가지   중앙 허브(Central Hub)  인터넷과 연결되어 있으며 지상에 위치한 중앙 허브 또는 지상국은 통신 허브 역할을 합니다. 위성(Satellite)  중앙 허브에서 최종 지점으로, 혹은 반대로 신호를 단순히 전달합니다. 종단 장치(Endpoint)  원격지에 배치된 종단 장치는 위성과 통신합니다. 종단 장치에서 수신된 데이터는 텔레비전, 전화, 컴퓨터 또는 정보를 해독하고 활용할 수 있는 기타 기기로 전달됩니다. ## 위협모델 1)Attack the Central Hub  - Central Hub 는 인터넷에 연결되어 EndPoint 에서 요청하는 인터넷 데이터를 처리한다. - 인터넷에서 Central Hub 로 침투 하여 위성 인터넷 망을 마비 시킨다. 공격 사례 1. 2022년 2월, 러시아가 우크라이나의 위성 인터넷을 먹통으로 만들기 위해 위성 통신 서비스 회사인 Viasat 을 공격 하였으며, 이로 인해 유럽 전역에 위성 인터넷이 마비가 되었다.결론 : 중앙 허브에서 위성 모뎀 장비로 악성 펌웨어를 배포 하여 인터넷을 마비 시킴.\ ([https://cyberconflicts.cyberpeaceinstitute.org/law-and-policy/cases/viasat](https://cyberconflicts.cyberpeaceinstitute.org/law-and-policy/cases/viasat)) 회사의 공식 성명에 따르면 공격자는 잘못 구성된 VPN 을 사용하여 중앙 허브에 액세스 했다. 공격자는 원격 엔드포인트에 합법적인 명령을 내리고 위성 모뎀 수천개를 작동 불가능하게 만들었다. 영상 : [https://www.youtube.com/watch?v=EzO8nRVJqeg](https://www.youtube.com/watch?v=EzO8nRVJqeg)\ \ 2. 2023년 6월, 러시아 회사 Dozor-Teleport 의 위성 통신 시스템에 대한 공격이 보고 되었음. Dozor-Teleport는 전력선, 유전, 러시아 군부대, 북부 함대 함선, 원자력 발전소, 러시아 연방 보안국(FSB) 등 다양한 기관에 서비스를 제공하는 러시아 위성 통신 공급업체입니다.([https://www.kratosdefense.com/constellations/articles/russian-satellite-service-provider-dozor-teleport-targeted-by-cyberattack](https://www.kratosdefense.com/constellations/articles/russian-satellite-service-provider-dozor-teleport-targeted-by-cyberattack))\ \ 2)Attacking the Satellites 위성에 존재하는 취약점을 공격 하여 위성 모뎀에 악성 영향을 끼칠 수 있다. (Ref. Satellite Cybersecurity Reconnaissance: Strategies and their Real-world Evaluation) - 3)Attacking the VSAT Endpoint  - VSAT 엔드포인트의 위성 모뎀에 직접 공격을 시도한다. - 해당 부분 공격 대한 설명을 진행한다. Attacking the VSAT Endpoint - VSAT modem (iDirect의 Newtec MDM2200) 와 중앙 허브↔모뎀 통신간 프로토콜 스택의 물리 계층 까지 리버싱 했다. 그 결과 위성 모뎀의 소프트웨어와 프로토콜 취약점을 찾을 수 있었다. - SDR (Software defined radio) 를 사용하여 위성 모뎀을 대상으로 3가지 무선 공격을 구현 하였다. 1. Reset the modem 2. Update a malicious firmware 3. Obtain a remote admin shell Case Study \ ODU (Outdoor Unit)  IDU (Indoor Unit)  \ 위성 모뎀 내부 구조 - 신호처리 과정  Demodulator\ RF 신호를 바이너리 데이터로 복조하는 기능을 수행한다.\ \ Digital Analog Conver\ 디지털 신호를 아날로그 신호로 변조하는 기능을 수행한다.\ \ FPGA (Field Programmable Gate Array)\ 일반적인 IC칩은 항상 똑같은 동작만 수행하지만 FPGA는 사용자가 내부 회로를 맘대로 코딩해서 바꿀 수 있다. or,and,nor 등 각종 gate 들로 이루어진 디지털 회로를 엄청나게 많이 구현할 수 있다. \ Attack Vector 1. Lan 영역 취약점 분석  위성 모뎀의 관리자 페이지에 존재하는 Command Injection 취약점을 통해 쉘을 획득 할 수 있었다.  쉘 따고 데이터 흐름 분석하고 위성 통신 프로토콜에 사용되거나 펌웨어 업데이트를 하는 등과 같은 중요 기능을하는 프로세스를 식별 하였음. 커널 모듈 중 위성(엄밀히 얘기하면 중앙 허브)과 통신하는 데이터를 처리하는 s3p.ko 커널 모듈을 분석한 결과 위성↔모뎀간 통신시 암호화 통신을 하지 않는 것을 확인했다. \ sw_download 취약점 분석  sw_download 프로세스를 통해 UDP 49152 가 열리며 펌웨어 업데이트 시 해당 포트를 통해 펌웨어 데이터를 수신하게 된다. 해당 바이너리와 OS 에는 ASLR, 스택 카나리 같은 메모리 보호기법 또한 걸려 있지 않았다.  펌웨어 업데이트 관련 패킷을 확인 하니 인증과 암호화가 없는것을 할 수 있었다.  모뎀의 드라이버를 분석한 결과 sw_download 에서 RCE 취약점과 암호화, 인증이 사용 되지 않는 것을 확인 하였으며 modem_controller 를 분석하여 암호화를 바이패스 할 수 있다는것을 확인했다. Attack Vector 2. RF 영역 분석  제품 뜯어서 하드웨어, 데이터 시트 등 분석을 진행한 결과 하드웨어가 어떻게 작동하는지 알아냈으며, 이를 통해 송신과 수신용 두개의 별도 신호처리 파이프 라인이 있는것을 확인함. 이를 통해 RF 신호가 어떻게 처리되는지 파악함.  앞전에 쉘을 땃었는데, 쉘을 통해 프로토콜이 어떻게 처리되는지 확인했다고 함. 뭐 아주 유용했다고 함.  DVB-RCS (Digital Video Broadcasting-Return Channel via Satellite) 프로토콜을 사용하여 중앙 허브와 통신한다. 이 프로토콜은 위성 통신에 표준으로 사용되고 있는 프로토콜이다. - 원래 DVB-RCS 는 TV 방송 도메인에서 자주 사용 되었었다. - S3P 모듈에서 해당 프로토콜을 처리한다. - 구현에 있어서 표준과 살짝 다른 부분이 있다. - DVB-S2 Packet Structure  QPSK, 8PSK, 16APKS 와 같은 다양한 변조 방식을 지원한다. BCH, LDPC 오류 수정 코드를 사용한다고 한다. 각 프레임에 대한 GPT 설명 - **구성 요소**: - **Header**: 프레임 유형, 길이, CRC 등을 포함하여 프레임의 메타데이터를 제공합니다. - **Payload**: 실제 전송하려는 데이터. - **CRC-8 (Cyclic Redundancy Check)**: 데이터 무결성을 확인하기 위한 8비트 체크섬. - **특징**: - 각 BBFrame은 고정된 길이를 가지며, 선택적으로 패딩 데이터를 포함할 수 있습니다. - BBFrame은 **Generic Stream Mode**와 **Transport Stream Mode**를 지원합니다. - **Generic Stream Mode**: IP 데이터 같은 비동기 데이터 전송에 적합. - **Transport Stream Mode**: MPEG-TS 데이터 전송에 적합. --- **2. FECFrame (Forward Error Correction Frame)** - **구성 과정**: - BBFrame에 **BCH (Bose-Chaudhuri-Hocquenghem)** 코드를 추가하여 데이터의 무결성을 보장. - BCH 코드로 처리된 데이터를 **LDPC (Low-Density Parity-Check)** 코드로 다시 처리하여 높은 오류 복구 능력을 제공. - **특징**: - LDPC는 높은 오류 복구 성능을 제공하며, 위성 링크의 긴 거리와 높은 잡음 환경에서도 신뢰할 수 있는 통신을 가능하게 합니다. - FECFrame은 고정된 크기를 가지며, 일반적으로 64800 비트 (Normal Frame) 또는 16200 비트 (Short Frame)로 정의됩니다. --- **3. XFECFrame (eXtended Forward Error Correction Frame)** - **특징**: - XFECFrame은 FECFrame에 LDPC 부호화가 적용된 최종 결과물로 볼 수 있습니다. - 전송 레이어로 전달되기 직전의 데이터 구조입니다. - DVB-S2에서는 XFECFrame과 PLFrame 간의 직접적인 매핑이 이루어집니다. - **목적**: - 최적화된 오류 복구와 전송 성능 제공. - XFECFrame은 물리적 계층(Physical Layer)로 변환되기 전에 데이터의 최종 구조를 정리합니다. --- **4. PLFrame (Physical Layer Frame)** - **구성 요소**: - **PL Header**: 프레임의 시작을 알리는 신호와 프레임 유형 정보를 포함. - **Payload**: XFECFrame의 데이터를 포함. - **Pilot Symbols**: 동기화를 위해 삽입된 신호. - **특징**: - 변조(Modulation) 및 전송 매개변수는 PLFrame 수준에서 적용됩니다. - QPSK, 8PSK, 16APSK, 32APSK 등의 변조 방식 지원. - PLFrame은 위성 채널의 물리적 특성에 따라 최적화된 데이터 구조입니다. - 프레임 구조는 신호 동기화, 시간 복구, 채널 보정을 지원합니다. --- **전체 전송 과정 요약** 1. **BBFrame**: 원시 데이터를 패키징. 2. **FECFrame**: 오류 수정 코드를 추가하여 신뢰성을 강화. 3. **XFECFrame**: FECFrame을 확장하고 전송 준비를 완료. 4. **PLFrame**: 변조와 동기화를 추가하여 실제 신호로 변환. - PLFrame은 물리 계층에서 실제 신호로 변환하기 위한 최종 데이터 구조입니다. 이 프레임은 위성 송신기와 수신기 간의 통신을 가능하게 합니다. - XFECFrame은 FECFrame을 기반으로 하여 추가적인 디지털 처리를 적용한 프레임입니다. - FECFrame은 BBFrame에 오류 수정 코드를 추가한 구조로, 신호 전송 중 발생할 수 있는 오류를 복구하기 위한 역할을 합니다. - BBFrame은 DVB-S2에서 데이터 전송의 첫 번째 단계로, 원시 데이터(비디오, 오디오, IP 데이터 등)를 패키징하는 역할을 합니다. MEPG-TS \ MPEG-TS(Moving Picture Experts Group - Transport Stream)는 **디지털 비디오 및 오디오 전송**을 위해 설계된 데이터 포맷으로, DVB, ATSC 등 여러 방송 표준에서 사용됩니다.\ 해당 프로토콜은 여러 데이터 스트림을 하나의 더 큰 스트림으로 묶는다.\ **MPEG-TS의 주요 목적** 1. **실시간 스트리밍 지원**: - 오류 복구가 중요한 실시간 방송, IPTV, 위성 TV 등에 적합. 2. **멀티플렉싱**: - 여러 오디오, 비디오, 데이터 스트림을 하나의 전송 스트림으로 통합. 3. **에러 복구 및 검증**: - 전송 중 손상된 데이터를 복구하기 위해 설계됨.  DVB-S2, MPEG-TS 이후에는 IP, TCP/UDP 를 사용하여 통신을 진행한다.  앞서 분석한 프로토콜 스택을 SDR 로 구현하여 테스트를 진행하였다.  SDR - USRP B200 - RF 신호를 생성하고 송출 하는데 사용된다. (물론 RF 신호를 수신하여 복조도 가능함) - 출력 주파수가 제한되어 있다. (70 MHz \~ 6 GHz)  Block Upconverter - UMT-TV BUC-Ku002-10.6 v2.0 - USRP B200은 70 MHz \~ 6 GHz 까지 주파수를 송출 할 수 있다. - 따라서 USRP 의 IF 신호를 위성 주파수 Ku-band, C-band, Ka-band 대역의 주파수로 변환 할 때 쓴다. - C-band frequency = 3.7\~4.2GHz - Ku band = 12\~18GHz - Ka band = 26.3~39.8 GHz  Power Injector - UMT-TV DC Injector IDCI with IP Ctrl - 전원 공급할 때 사용함.  Antenna - UMT-TV Offset Feed - Ku-band(12-18 GHz) 및 C-band(4-8 GHz) 위성 신호를 송신하는 데 사용됩니다. - Implementation Transmitter GNU Radio 를 사용히여 forward channel 을 구현함. Forward Channel : 중앙 허브 → 위성 → 엔드포인트 Return Channel : 엔드포인트 → 위성 → 중앙허브 DownLink : 위성 → 중앙 허브 or 엔드포인트 Uplink : 중앙허브 or 엔드포인트 → 위성  RNU Radio 로 DVB-RCS 패킷에 Hello, World! 를 넣어서 위성 모뎀으로 쐈는데, 위성 모뎀에서 정상적으로 해당 패킷 처리하는것을 확인함. 이를 통해 DVB-RCS 신호를 정상적으로 구현했다는것을 알 수 있음. 이제 SDR 로 생성한 DVB-RCS 패킷을 통해 모뎀의 각 데몬에 input 을 넣을 수 있음. 각 데몬에 취약점이 존재한다면 SDR 로 생성한 신호를 통해 트리거가 가능해짐 #### **공격 시나리오** ### Connection Rest 재밍을 통해 모뎀의 초기화를 유도한다. 모뎀에서는 정상적인 신호를 지속적으로 받지 못할 경우 시스템을 자동으로 초기화 한다. ### Malicious Firmware Update  모뎀 초기화 후 악성 펌웨어 업데이트를 마운트 할 수 있음. 펌웨어 버전, 크기, 포트 정보와 같은 펌웨어 업데이트 요청 패킷을 swdowload 데몬으로 보낸다. 현재 설치되어 있는 버전 보다 높으면 모뎀은 swdowload 데몬의 UDP 49152 포트를 통해 펌웨어 데이터를 수신한다. 펌웨어 업데이트 패킷에 대한 인증, 암호화가 없기 때문에 쉽게 악성 펌웨어를 올릴 수 있다. 해당 테스트에서는 업데이트 잘 못 했다가 벽돌될까바 CRC 를 다르게 해서 보냈다. Remote Code Execution 펌웨어 업데이트 할때 사용되는 swdownload 프로세스에 버퍼 오버 플로우 취약점을 공격한다. 업데이트 신호 메시지를 처리할떄 취약점이 발생한다. 수신된 메시지를 버퍼에 복사하는데, 메시지 크기를 검증하지 않고 메모리로 복사를 진행한다. 버퍼가 80바이트로 되어 있는데, 80 바이트 보다 메시지를 전송하면 ret 를 덮을 수 있다. BOF 취약점을 트리거하여 쉘을 획득 하였다. - ### 시연 영상  영상 링크 : [https://www.youtube.com/watch?v=-pxmly8xeas](https://www.youtube.com/watch?v=-pxmly8xeas) (31분45초 부터) RF 신호 쏴서 TX LED 가 켜지는걸 보여줌 (원래는 TX LED 에 불이 들어오면 안되는데, 공격으로 들어오게 했다고함) 논문 링크 :