보안 위협 분석을 포함한 후속 연구 내용은 향후 별도의 게시글을 통해 순차적으로 공개할 예정입니다.
통신망의 숨겨진 위협, 펨토셀 (1): A사 소액결제 이슈와 긴급 업데이트 분석
✔️
들어가며
2025년 9월, A사 이동통신망을 통한 대규모 소액결제 해킹 사건이 발생했습니다. 현재까지 언론에 알려진 조사 결과에 따르면, 공격자들은 초소형 기지국 장비인 펨토셀(Femtocell)을 불법 개조하여 서울과 경기 일대에 가짜 기지국을 설치하고, A사 이용자들의 휴대전화 통신 데이터를 탈취하여 소액결제 인증 과정에 악용하였습니다.
A사는 9월 초 내부적으로 이상 징후를 인지하고 차단 조치를 시행하였으며, 해당 사건은 9월 8일 언론에 보도되었습니다. 언론 보도 후, A사는 본 사건을 사이버 침해 사고로 공식 인정하고 보안 정책을 강화하였으며, 피해 이용자 대상 보상을 제공하고 유심 교체를 지원하였습니다.
티오리 Frontier Squad 팀의 연구원들은 펨토셀 보안 강화 대책으로 제시된 인증서 갱신 주기 단축 및 미허가 기기의 망 접속 차단 조치만으로는 펨토셀 운용 과정에서 발생할 수 있는 잠재적 보안 위협을 근본적으로 해소하기 어렵다는 점에 주목했습니다. 이에 이번 사건에 대응하여, 기술적 검증과 재현을 통해 실제 보안 취약점을 분석하고 그 결과를 공유함으로써 국내 이동통신망의 보안 수준을 한 단계 끌어올리는 것을 목표로 연구를 수행했습니다.
펨토셀 연구 결과에 대한 블로그 포스팅은 시리즈 형태로 진행될 예정이며, 시리즈의 시작이 될 이번 포스트에서는 펨토셀에서 발생 가능한 보안 위협 및 사건 이후 A사 펨토셀 장비에 적용된 긴급 보안 업데이트에 대한 기술적 분석 내용을 다루어 보겠습니다.
배경
펨토셀 현황
국내 이동통신사들은 LTE 통신 도입 이후 음영 지역을 해소하기 위해 펨토셀 장비를 운영하고 있습니다. 2025년 국정감사에서 공개된 자료에 따르면 국내 통신 3사가 운영 중인 펨토셀은 약 19만 5천 대이며, 그중 약 80%인 15만 7천대가 A사에 의해 보급 운영되고 있습니다.
통신사 | 보유 펨토셀 수 | 미작동 펨토셀 수 |
|---|---|---|
A사 | 157,000 | 57,300 |
B사 | 28,000 | 4,000 |
C사 | 10,000 | 3,000 |
A사는 실내외 음영 지역 해소를 통한 이동통신 품질 향상이라는 정책적 배경, 고정통신망 인프라 강점을 기반으로 인터넷 회선을 활용한 펨토셀 보급이 유리했다는 기술적 요인, 그리고 소규모 투자로 국지적 품질 개선 효과를 얻을 수 있었다는 경제적 요인을 바탕으로 펨토셀 보급을 확대하여 국내 최다 수준의 펨토셀 인프라를 구축하였습니다. 하지만 이러한 대규모 보급은 사후 관리 부실과 맞물려, 이번 사건에서 드러난 취약점의 배경이 되었습니다.
피해 현황
A사가 조사한 2024년 10월부터 2025년 9월까지의 피해 현황은 아래와 같습니다.
22,221대의 단말기가 불법 기지국에 연결
IMSI 정보 5,561건 노출
약 2억 4천만 원의 무단 결제 피해 발생(368명 이용자 대상)
이번 A사 소액결제 사건은 통신 인프라 자체가 해킹의 대상이 될 수 있음을 보여준 사례입니다. 펨토셀은 가정이나 소형 사업장에 설치되는 초소형 기지국으로, 이동통신사의 핵심망(Core Network)과 직접 연결됩니다. 따라서 이 장비가 해킹될 경우 단순한 소액결제 피해를 넘어 개인 단말에 대한 도감청이나 통신망 내부 침투 경로로 악용될 가능성이 있습니다.
A사 펨토셀 보안 대책
A사는 2025년 사건 이후 펨토셀 관리 체계의 허점을 인정하고 보안 구조 개편에 착수했습니다. 대응의 핵심은 아래와 같이 세 가지로 정리할 수 있습니다.
인증 유효기간 단축 및 관리 체계 강화
기존에 최대 10년으로 설정되었던 펨토셀 인증 유효기간을 단축
재인증 및 자동 차단 체계 도입 검토
유령 기지국(미사용 펨토셀) 전수조사 및 차단
불법 접속 가능성이 있는 미사용 펨토셀 및 장기간 방치된 펨토셀 전수조사 실시
미사용 펨토셀 및 장기간 방치된 펨토셀에 대한 망 접속 차단 조치 시행
망 접속 이상 탐지 및 실시간 모니터링 강화
미등록 장비 접속 자동 차단
접속자 수가 비정상적으로 많은 기지국 장비에 대해 탐지 룰을 추가하고 모니터링 체계 강화
Reference
펨토셀 보안 위협
펨토셀 구조
펨토셀은 가정이나 소형 사무실(SOHO)에 설치하는 초소형 이동통신 기지국으로, 3G 환경에서는 HNB(Home NodeB), LTE 환경에서는 HeNB(Home eNodeB)라고 부릅니다. 펨토셀은 반경 수십 미터 이내에서 단말(UE, User Equipment)과 직접 무선 신호를 주고받아 음성 및 데이터 통신을 중계하며, 가정 및 사무실의 인터넷 회선을 통해 통신사 코어 네트워크에 연결됩니다.
HeNB는 일반적으로 통신사 경계에 위치한 SeGW(Security GateWay)와 IPsec 암호화 터널을 형성하여, 외부 네트워크로부터의 접근을 보호합니다. 필요에 따라 다수의 HeNB를 묶어 전송을 중계하는 HeNB-GW(Home eNodeB Gateway)를 거쳐 코어망으로 데이터를 전달하기도 하며, 이러한 구조와 보안 절차는 3GPP에서 정의한 표준 아키텍처를 기반으로 구현됩니다.
HeNB는 통신사의 코어 네트워크와 S1 인터페이스를 통해 연결됩니다. S1 인터페이스는 HeNB와 코어망의 제어 장비(MME) 및 데이터 게이트웨이(예: S-GW, P-GW)를 연결하는 표준화된 인터페이스로, 펨토셀이 통신사 핵심망과 대화하는 통로 역할을 수행합니다. HeNB는 부팅 시 IKEv2(RFC 7296)를 이용해 SeGW와 상호 인증을 수행하고, 이후 IPsec을 통해 암호화된 통신 경로를 구성합니다. NAT 환경의 경우, 일반적으로 UDP/4500 포트를 사용한 NAT-Traversal이 적용됩니다.
운용/관리(OAM) 측면에서는, 현장에 설치된 HeNB를 원격에서 초기 설정하거나 펌웨어를 업데이트하고 장애를 진단하기 위해 TR-069(CWMP) 프로토콜을 사용하는 경우가 많습니다. 펨토셀 전용 관리 데이터 모델로는 TR-196(FAPService)이 사용되며, 해당 모델에는 무선 파라미터, 인증 정보 위치, AccessMode, CSG(Closed Subscriber Group) 정책 등 관리 항목이 정의되어 있습니다.
데이터 흐름을 보면, 단말과 HeNB 사이의 무선 구간에서는 PDCP(Packet Data Convergence Protocol) 계층이 데이터를 암/복호화하고 무결성을 검증합니다. HeNB 내부에서는 해당 데이터가 한 번 평문 상태로 처리된 뒤, GTP-U(GPRS Tunneling Protocol - User plane) 형식으로 캡슐화되어 S1-U 경로를 통해 코어망으로 전송됩니다. 즉, PDCP는 무선 구간의 보안을 담당하고, GTP-U는 코어망까지 사용자 데이터를 터널링해 전달하는 역할을 수행합니다.
따라서 무선 구간은 3GPP TS 33.401 등에서 정의된 Access Startum(AS) 보안이, HeNB와 SeGW 간 구간은 IPsec 기반의 Backhaul 보안이 담당합니다. 이때, HeNB 내부에 평문 데이터가 처리되는 구간이 존재한다는 점은 이후 보안 위협 분석의 중요한 출발점이 됩니다.
접속 제어 측면에서 펨토셀은 CSG 기능을 지원합니다. CSG는 특정 가입자만 접속을 허용하는 방식으로, 브로드캐스팅되는 CSG ID와 가입자의 USIM(또는 HSS의 가입자 프로파일)을 대조하여 접속을 허용합니다. 이를 통해 가정용 펨토셀을 허가된 사용자만 접속 가능한 셀로 제한할 수 있습니다.
펨토셀에서 발생 가능한 보안 위협
펨토셀(Femtocell)은 가정용 기지국이라는 배포 특성 때문에 무선/유선/관리/물리 네 축에서 복합적인 위협이 존재할 수 있습니다. 펨토셀에서 발생 가능한 구체적인 위협을 공개 연구와 보고서에서 실제로 확인된 사례들을 중심으로 정리해 보겠습니다.
1. 장비 내부의 평문 처리 구간 악용
단말(UE)–HeNB 무선 구간에서는 PDCP 계층에서 무선 보안(암호화/무결성)이 적용됩니다. 그러나 HeNB 내부에서는 복호화 된 패킷을 처리한 뒤 GTP-U로 캡슐화하여 S1-U를 통해 전달하는 과정이 존재합니다. 이 때문에 HeNB 장비가 변조되면 무선과 Backhaul(IPsec) 사이의 평문 처리 구간에서 사용자 트래픽을 복제/모니터링/변조할 수 있는 위협이 발생합니다.
참고 사례: Nico Golde et al.의 연구에서는 상용 펨토셀 장비에서 루트 권한을 획득해 음성/SMS/데이터를 가로채거나 능동적 트래픽 조작을 시연한 사례가 보고되어 있습니다. 이러한 공격은 장비 내부의 소프트웨어, 커널 수준 후킹이나 패킷 경로 조작을 통해 구현될 수 있습니다.
2. 물리적 변조: 디버그 포트, 스토리지 직접 접근
펨토셀은 가정이나 사무실에 물리적으로 배치되므로 장비에 대한 접근이 상대적으로 쉽습니다. 공격자는 장비 기판의 테스트 패드(UART/JTAG)에 직접 접속하거나 eMMC/NAND를 덤프 하여 펌웨어/비밀키/설정 정보를 확보함으로써 루트 셸 획득, 부트체인 우회, 펌웨어 교체 등을 수행할 수 있습니다.
참고 사례: Fabian van den Broek et al.의 연구에서는 실제 장비(Vodafone SignaalPlus)를 분석하여 이러한 물리적 취약점으로 인해 기기의 완전한 장악(root access)이 가능함을 보여주었습니다. 이는 장비를 외부에서 보기에 정상 동작하는 감청/위변조 플랫폼으로 전환시킬 수 있음을 의미합니다.
3. 관리 채널(TR-069, TR-196) 악용
HeNB는 원격 구성 및 관리(예: 초기 설정, 펌웨어 업데이트)를 위해 TR-069(CWMP) 기반으로 ACS(Automatic Configuration Server)와 통신합니다. TR-069는 원격 구성, 상태 모니터링, 파일 전송 등 관리 기능을 제공하며, TR-196(FAPService) 데이터 모델을 통해 무선 파라미터, 인증 정보, AccessMode, CSG 같은 요소를 원격으로 제어할 수 있습니다. 따라서 ACS 인프라가 침해되거나 TR-069 구현이 부실하면 원격에서 구성 변경, 비인가 펌웨어 주입, 로그 및 키 수집 등이 가능해지고, 이는 펨토셀 네트워크 전반의 보안에 심각한 영향을 미칠 수 있습니다.
참고 사례: 이스라엘의 해커 Shahar Tal은 2014년 hack.lu 발표에서 TR-069/ACS 프로토콜의 구조적 취약점과 실제 ISP 장비를 대상으로 한 원격 공격 기법을 소개하며 관리 서버(ACS) 침해를 통해 다수의 CPE 장비를 제어할 수 있음을 보여주었습니다.
4. 악성(또는 개조된) 펨토셀을 통한 단말 복제
개조된 펨토셀은 주변 단말을 유인(단말은 더 강한 신호의 셀에 붙는 성질이 있음)하여 실제 통화·문자·데이터를 송수신하는 경로에 개입할 수 있습니다. 핵심 문제는 단말이 정식 기지국으로 신뢰하는 엔드포인트가 가정 내부로 들어온다는 점이며, 이 때문에 설계 단계에서의 신뢰 경계(trust boundary) 정의와 키 보호, 인증 절차 강화가 중요합니다. 실제 위협 사례들은 과거 장비들에서 주로 보고되었지만, 개념적 원리는 현대 장비에도 적용될 수 있습니다.
참고 사례: Nico Golde et al.의 연구에서는 개조 장비를 통해 단말 세션을 가로채고 단말 정보를 탈취하거나 원격으로 단말을 복제하는 시나리오를 실증한 바 있습니다.
A사 펨토셀 보안 업데이트 분석
💡
아래의 분석 자료는 소액결제 해킹 사건 발생 시점 이후인 2025년 9월 20일 업데이트로 배포된 펌웨어 분석 결과를 기반으로 작성되었습니다.
분석 대상 펌웨어
원본: firmware-1.5-0.6.22.x (Build: 2025.03.21)
업데이트: firmware-1.5-0.6.24.x (Build: 2025.09.20)
9월 소액결제 사건 이후 A사는 자사 펨토셀 장비 전반에 대한 대규모 보안 업데이트를 시행했습니다. 이번 업데이트는 인증서 발급 및 관리 체계를 변경하여 개인키·인증서 유출로 인한 불법 펨토셀 생성 문제를 차단하고 장기간 운용되지 않은 장비의 재사용을 방지하는 것을 비롯해 하드웨어 리버스엔지니어링 방지, SSH 기반 원격접속 차단 등 다양한 보안 개선을 포함하고 있습니다.
티오리 Frontier Squad 팀의 연구원들은 A사 펨토셀에 대한 최신 업데이트를 분석하여 도입된 메커니즘을 확인하였고, 이를 바탕으로 업데이트 이전 버전의 장비가 어떤 구조적 취약점에 노출되어 있었는지 공격자 관점에서 추론하였습니다. 펨토셀 보안 업데이트의 각 항목을 통해 해커의 관점에서 기존에 존재했던 잠재적 위험 요소들을 살펴보겠습니다.
1. 인증서 발급 및 관리 체계 변경
🔴(패치 전) A사 펨토셀의 인증서 관리
A사의 펨토셀 장비는 장비 내부에 내장된 개인키와 루트 인증서(Embedded Certificate)를 기반으로 통신사 인증 서버와의 상호 인증을 수행합니다. 장비는 부팅 시 자체 내장된 인증서를 이용해 인증서 발급 서버(CA/RA)에 접속하고, 신규 세션에 사용할 장비용 운영 인증서(Device Certificate)를 발급받습니다. 이 인증서는 이후 시큐리티 게이트웨이와의 IPsec 세션 수립 과정에서 사용되어, 코어 네트워크와의 안전한 터널 연결을 보장합니다.
아래는 실제 A사 펨토셀 장비 내부에 내장되어 있는 주요 인증서 구성 요소의 예시입니다.
파일 이름 | 설명 |
|---|---|
femto-cert.pem | 제조사 TLS 클라이언트 인증서 |
femto-key.pem | 제조사 TLS 클라이언트 개인키 |
innoCert.pem | 펨토셀 장비 공통 인증서 |
innoKey.pem | 펨토셀 장비 공통 개인키 |
root-cert.pem | A사 루트 인증서 |
해당 개인키와 인증서들은 펌웨어에 내장된 형태로 모든 장비가 공통으로 사용하고 있습니다. 또한, 저장된 인증서들은 유효기간이 10년으로 길게 설정되어 있어, 한 번 유출되면 장기간에 걸쳐 재활용·악용될 수 있는 구조적 위험을 내포합니다. 확인 결과, 현재는 신규로 발급한 인증서를 이용해 장비 등록을 수행할 수 없으나, 인증서 발급 및 IPsec 연결은 가능한 상황이었습니다.
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
XX:XX:XX:XX:XX:XX:XX:XX
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=KR, O=XXXXX, CN=XXXXX Root CA
Validity
Not Before: Apr 21 03:45:25 2017 GMT
Not After : Apr 21 03:45:25 2027 GMT
Subject: C=KR, O=XXXXX, CN=XXXXX TLS Client위 과정에서 생성된 장비 고유의 개인키와 인증서 발급 서버로부터 받은 장비 고유 인증서는 펨토셀 장비의 플래시 메모리에 별도의 암호화 과정 없이 저장됩니다.
✅Patch 1-1. 인증서 발급 서버 변경
패치에서는 인증서 발급 서버의 접속 주소를 변경해, 신규 업데이트가 적용되지 않은 구형 장비가 기존 발급 서버에 접속해 신규 인증서를 발급받는 것을 차단했습니다. 해당 조치는 업데이트가 적용되지 않은 장비가 자동으로 새로운 인증서를 취득해 악용되는 위험을 줄입니다.
<object name="Device.Services.FAPService.1.FAPControl.LTE.Gateway.X_QUCELL_CAServer.">
- <parameter name="Address" value="https://xxx.xxx.xxx.220:8442/ejbca/publicweb/cmp/hecas,https://xxx.xxx.xxx.220:8442/ejbca/publicweb/cmp/hecas"/>
+ <parameter name="Address" value="https://xxx.xxx.xxx.210:8442/ejbca/publicweb/cmp/hecas,https://xxx.xxx.xxx.220:8442/ejbca/publicweb/cmp/hecas"/>
</object>
</fdmdata>✅Patch 1-2. 서버와의 통신 암호화 방식 변경
업데이트 이전의 구형 펌웨어에서는 TLS 1.0 기반 통신을 이용해 인증서 발급 서버와 세션을 수립하고, 해당 채널을 통해 인증서를 발급받았습니다. 하지만 업데이트 이후, 설정 파일에서 기본 통신 프로토콜이 TLS 1.2로 변경되며 구버전 프로토콜을 이용해 인증서를 발급할 수 없게 되었습니다.
<parameter name="TlsVersion" access="readWrite" dti="2" dmr:version="2.0" support="">
<syntax>
<string>
<enumeration value="1.0"/>
<enumeration value="1.1"/>
<enumeration value="1.2"/>
</string>
- <default type="factory" value="1.0"/>
+ <default type="factory" value="1.2"/>✅Patch 1-3. 인증서 정보 변경
아래의 패치에서는 인증서 발급 서버의 발급자 정보와 루트 CA 구성을 변경하는 업데이트가 적용되었습니다. 업데이트 이후 기존에 발급된 유효기간이 10년으로 설정된 인증서를 이용한 인증은 더 이상 유효하지 않게 되었고, 변경된 RootCA를 기반으로 새롭게 발급받은 인증서만을 인증에 사용할 수 있게 되었습니다.
- <default type="factory" value="C=KR, O=XXX Telecom, OU=Network, CN=RootCA"/>
+ <default type="factory" value="C=KR, O=XXX Telecom, OU=Network, CN=AA_RootCA"/>또한, 업데이트 이후 발급되는 인증서의 유효기간을 1개월로 단축하여 장기간 사용되지 않은 장비의 IPsec 접속을 제한하고 인증서 유출 시 장기적인 악용 가능성을 최소화했습니다.
Certificate:
Data:
Version: 3 (0x2)
Serial Number:
XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
Signature Algorithm: sha1WithRSAEncryption
Issuer: C=KR, O=XXX Telecom, OU=Network, CN=AA_RootCA
Validity
Not Before: Oct 14 21:18:12 2025 GMT
Not After : Nov 13 21:18:11 2025 GMT✅Patch 1-4. 개인키 암호화
업데이트 이후 펨토셀 장비에 저장되는 공통 개인키와 장비 고유 개인키는 암호화되어 저장됩니다. 해당 암호화 과정은 자체 제작 암호화 프로그램(ifqEncryptor)을 통해 수행되며, 해당 프로그램은 펨토셀 펌웨어 내에서 키 파일을 암호화한 후 플래시 메모리에 기록합니다. 이 개선은 장비 내부 저장소가 탈취되더라도 개인키가 평문으로 노출되는 위험을 최소화합니다.
공용 개인키
+# Encrypt key files
+if [ -f /[..]/ifqEncryptor ]; then
+ if [ -f /[..]/femto-key.pem ]; then
+ /[..]/ifqEncryptor -e /[..]/femto-key.pem /[..]/femto-key.enc
+ rm -rf /[..]/femto-key.pem
+ fi
+
+ if [ -f /[..]/innoKey.pem ]; then
+ /[..]/ifqEncryptor -e /[..]/innoKey.pem /[..]/innoKey.enc
+ rm -rf /[..]/innoKey.pem
+ fi
+fi고유 개인키
+ mv /mnt/flash/[..]/femto_cert.pem /mnt/flash/[..]/operator_cert.pem
+ /[..]/ifqEncryptor -e /mnt/[..]/femto_key.pem /mnt/flash/[..]/femto_key.pem
+ rm -rf /mnt/[..]/femto_key.pem2. 하드웨어 리버스엔지니어링 방지
🔴(패치 전) A사 펨토셀의 시리얼 기반 터미널 제공
A사 펨토셀은 메인보드의 시리얼 포트를 활성화하여, 커널 로그 출력과 getty를 통한 시리얼 기반 터미널을 제공합니다. 해당 설정은 부팅 명령줄과 운영체제의 부팅 스크립트에서 확인할 수 있습니다. 시리얼 콘솔 활성화는 개발·디버깅에는 유용하지만, 장비에 물리적으로 접근할 수 있는 공격자에게 운영체제 레벨 접근 경로를 제공할 수 있으므로 주의해야 합니다.
# /proc/cmdline
root=/dev/ram0 rw rdinit=/sbin/init
console=ttyHSL0,115200n8 earlyprintk
maxcpus=4 coherent_pool=3M mem=250M@0x03c00000
mem=9M@0x14700000 mem=68M@0x23c00000 mem=242M@0x30e00000 vmalloc=512M# setup getty for serial-line terminal
::respawn:/sbin/getty ttyHSL0 115200 vt100🔴(패치 전) root 계정 관리 미흡
업데이트 이전 운영체제에는 root 계정에 별도 암호가 설정되어 있지 않았습니다. 따라서, 시리얼 콘솔로 접속한 공격자는 인증 절차 없이 바로 root 권한으로 로그인이 가능하였고, 이를 통해 펌웨어를 추출하거나 장비를 리버스엔지니어링 할 수 있었습니다.
# /etc/shadow
root::0:0:99999:7:::✅Patch 2-1. root 계정 패스워드 추가
패치를 통해 root 계정에 기본 암호를 설정하여, 시리얼 콘솔이나 로컬 터미널을 통해 인증 없이 root로 로그인하거나 권한을 획득하는 것을 차단했습니다.
--- ./6.22/etc/shadow 2015-04-30 15:00:00.000000000 +0000
+++ ./6.24/etc/shadow 2015-05-01 00:00:00.000000000 +0000
@@ -10,2 +10,2 @@
-root::0:0:99999:7:::
+root:$6$[Salt]$[SHA-256-Hash]:0:0:99999:7:✅Patch 2-2. 커널 레벨에서의 시리얼 비활성화
패치 이후 시리얼 콘솔을 통한 로컬 셸 접근이 제한되어 현재는 커널 로그 출력만 제공되고, 직접적인 터미널 로그인 및 셸 실행은 차단되었습니다. 해당 조치는 최신 펌웨어로 업데이트된 펨토셀에 대한 시리얼 콘솔을 이용한 분석의 난도를 높입니다.
3. 기본 계정 및 인증 강화
🔴(패치 전) A사 펨토셀 관리용 계정 관리 미흡
A사 펨토셀의 기술교육 및 운용 매뉴얼에 따르면, 장비의 설치·설정·유지 보수를 위해 SSH 서비스가 제공되며, 장비에 내장된 관리 계정을 통해 콘솔 접속과 설정 작업을 수행합니다. 이러한 관리용 계정의 인증 정보 관리는 펨토셀 보안에서 매우 중요한 요소입니다. 관리 계정이 유출되거나 취약한 인증 체계를 사용할 경우 원격에서 장비 설정을 변경하거나 민감한 키·인증서를 추출하는 등 심각한 보안 사고가 발생할 수 있습니다.
장비가 처음 배포된 시점부터 긴급 업데이트가 이루어지기 전까지, A사의 펨토셀은 펌웨어 내부에 내장된 관리 계정과 암호를 사용했습니다. 모든 펨토셀 장비에서 해당 계정과 암호를 동일하게 사용하였기 때문에, 해당 정보가 외부로 노출될 경우 SSH 서비스가 활성화된 모든 펨토셀 장비가 원격에서 동시에 장악될 수 있는 위험이 존재했습니다.
또한, 펌웨어에 내장된 기본 계정은 root 권한을 가지고 있었고, 암호는 취약한 해시 알고리즘인 DES-crypt 계열 해시 방식으로 저장되어 있었습니다.
%XXXXX_X:[DES-CRYPTO-HASH]:0:0:99999:7:::DES-crypt는 56비트의 키를 사용하기 때문에 무차별 대입 공격에 취약합니다. 이 경우, 해시값 유출 시 상용·오픈소스 크래킹 도구(예: hashcat)를 이용해 짧은 시간 안에 비밀번호 원문을 복원할 수 있습니다.
[DES-CRYPTO-HASH]:XXXXXXXX
Session..........: md5c20
Status...........: Cracked
Hash.Mode........: 1500 (descrypt, DES (Unix), Traditional DES)
Hash.Target......: Wu/RXZBRWoEuY
Kernel.Feature...: Pure Kernel
Guess.Base.......: File (rockyou.txt)
Guess.Mod........: Rules (/usr/share/hashcat/rules/dive.rule)
Restore.Sub.#1...: Salt:0 Amplifier:0-128 Iteration:0-128
Candidate.Engine.: Device Generator
Candidates.#1....: XXXXXXXX -> XXXXXXXX✅Patch 3-1. 패스워드 해시 알고리즘 변경
기존의 취약한 DES-crypt 방식에서 SHA-512-crypt 방식으로 비밀번호 해시 알고리즘을 변경하여 해시 크래킹에 대한 저항성을 높였습니다.
-root::0:0:99999:7:::
-%XXXXX_X:[DES-CRYPTO-HASH]:0:0:99999:7:::
+root:$6$[Salt]$[SHA-256-Hash]:0:0:99999:7:::
+%YYYYYYY:$6$[Salt]$[SHA-256-Hash]:0:0:99999:7:::✅Patch 3-2. 장비 별 고유의 기본 암호 생성
장비의 기본 관리 계정명이 변경되었고, 초기 부팅 단계에서 장비별로 비밀번호를 자동 생성·적용하는 기능이 추가되었습니다. 새로운 비밀번호는 각 장비의 고유 시리얼 번호를 기반으로 생성되어 초깃값이 장비마다 달라지며, 부팅 시 자동으로 기본 계정의 인증 정보가 변경됩니다. 해당 조치로 인해 펌웨어에 하드코딩된 공통 기본 계정을 이용한 SSH 접근 취약점은 실질적으로 해소되었습니다.
+# Change account credential
+IFQCONF="/[...]/ifqconf"
+TARGET_USER="%YYYYYYY"
+DEVICE_SERIAL_NUMBER="`$IFQCONF -t /[...]/device_serial_number -g`"
+ADD_STRING='"SECRET_STRING"'
+UNIQ_PASSWORD=$(SECRET_COMMAND)
+echo "${TARGET_USER}:${UNIQ_PASSWORD}" | chpasswd -m✅Patch 3-3. 기본 계정의 권한 변경
비밀번호 생성 알고리즘과 시리얼 번호 유출로 인해 기본 계정의 비밀번호가 노출될 가능성을 고려하여, 수행 가능한 권한을 축소함으로써 기본 계정 로그인 성공 시에도 시스템 주요 기능 접근을 제한하였습니다.
-%XXXXX_X:x:0:0:SSH admin:/admin:/bin/sh
+%YYYYYYY:x:1001:1001:user:/home:/bin/sh4. 원격 콘솔 비활성화
🔴(패치 전) SSH 서비스 관리
A사 펨토셀의 SSH 서비스 활성 여부는 장비 내부 설정에 따라 결정되며, 아래 코드와 같이 별도 설정이 없을 경우 기본값으로 SSH가 활성화되어 있습니다.
if [ -f /[..]/boot.conf ];then
DROPBEAR_ENABLE=`grep dropbear /[..]/boot.conf | awk -F"=" '{print $2}'`
fi
if [ -z $DROPBEAR_ENABLE ]; then
DROPBEAR_ENABLE="true"
fi또한, 별도의 방화벽 규칙이 적용되지 않은 상태에서는 기본 방화벽 정책이 모든 접속을 허용하도록 구성되어 있었습니다.
#!/bin/sh
SSH_PORT=`/[..]/ifqconf -t /[..]/dropbear/port -g`
SSH_IP_LIST=""
if [ -f /[..]/sshIpList ]; then
SSH_IP_LIST=`cat /[..]/sshIpList`
else
echo "sshIpList file is not exist"
exit
fi
# sshIpList 내 IP만 허용하도록 iptables 룰 설정모바일 망에 연결된 펨토셀은 HeMS에 의해 중앙에서 관리되며, HeMS는 연결된 펨토셀들에 대해 원격으로 SSH 서비스의 실행 여부를 제어하거나 방화벽 정책을 배포하는 등 관리 기능을 제공합니다. 주요 제어 기능은 아래와 같습니다.
SSH 서비스 기본 실행 옵션 변경(부팅 시 적용)
SSH 서비스의 시작/중지 제어
SSH 접근 제어(예: iptables 기반 필터링 규칙 배포)
따라서 초기 설정 상태에서 HeMS에 등록되지 않은 펨토셀은 SSH가 활성화되고 방화벽이 모든 접속을 허용하는 구성으로 남아 있을 수 있습니다. 초기 설정 및 HeMS 등록이 완료된 이후 SSH를 비활성화하거나, 최소한 HeMS에서만 접근 가능하도록 방화벽 규칙을 강제 적용해야 외부로의 공격 표면을 효과적으로 줄일 수 있습니다.
하지만 Shodan에 노출된 펨토셀 장비의 서비스 비활성화 이력을 확인한 결과, SSH 접근 제어가 제대로 수행되지 않은 채 운영된 사례가 다수 존재하였습니다. 특히 SSH 서비스의 경우 소액결제 사건 이전까지 활성화된 상태로 운용되었고, 사건 이후 보안 대책의 일환으로 비활성화되거나 접근 제어가 강화된 것으로 보이는 정황이 확인되었습니다.
✅Patch 4-1. SSH 서비스 기본 활성화 정책 변경
별도의 SSH 서비스 설정이 존재하지 않을 경우, 기본적으로 SSH 서비스를 비활성화하여 명시적으로 SSH 활성화가 설정된 장비만 외부 접속을 허용하도록 보안 정책이 강화되었습니다. 이는 설정 누락 또는 운영자의 실수로 인해 SSH 서비스가 노출되는 위험을 근본적으로 제거하기 위한 조치입니다.
if [ -f /[...]/boot.conf ];then
DROPBEAR_ENABLE=`grep dropbear /[...]/boot.conf | awk -F"=" '{print $2}'`
fi
if [ -z $DROPBEAR_ENABLE ]; then
- DROPBEAR_ENABLE="true"
+ DROPBEAR_ENABLE="false"
fi
case "$1" in
start)
if [ $DROPBEAR_ENABLE != "true" ];then✅Patch 4-2. SSH root 로그인 비 활성화
Patch 2-1에 의해 root 계정에 기본 암호가 새롭게 설정되었습니다. 하지만 해당 암호의 해시값이 유출되거나 크래킹 될 경우, root 계정을 통한 SSH 원격 접근 위험이 발생할 수 있습니다. 이에 대한 조치로, 제조사는 SSH 설정 파일 내에 root 계정의 직접 로그인을 비활성화하여 동일한 기본 암호를 이용한 원격 접속 시도를 차단했습니다. 해당 조치는 root 계정을 통한 SSH 접근을 제한하고, 콘솔 환경에서만 제한적으로 인증이 가능하도록 하여 보안을 강화합니다.
IDLE_TIME=`$IFQCONF -t /[...]/dropbear/idle_time -g`
DROPBEAR_PORT=`$IFQCONF -t /[...]/dropbear/port -g`
-DROPBEAR_DISALLOW_ROOT_LOGIN=`$IFQCONF -t /[...]/dropbear/disallow_root_login -g`
+DROPBEAR_DISALLOW_ROOT_LOGIN=ON #`$IFQCONF -t /[...]/dropbear/disallow_root_login -g`
DROPBEAR_EXTRA_ARGS="-I $IDLE_TIME"
if [ "$DROPBEAR_PORT" == "" ]; then5. 업데이트 시 로컬 저장소 초기화 정책 변경
🔴(패치 전) 로컬 저장소 데이터 유지
업데이트 분석 결과 및 언론에 공개된 정보를 종합하면, 소액결제 사건 이전 A사의 펨토셀 장비는 여러 보안 위험에 노출되어 있었던 것으로 추정됩니다. 펨토셀 네트워크 전반에 걸쳐 동일한 구성 요소가 반복적으로 사용되었기 때문에 이러한 문제점들은 단일 장비에 국한되지 않습니다. 따라서 이미 다수의 펨토셀이 외부 공격자에 의해 장악되었거나, 불법 펨토셀 생성에 활용되었을 가능성을 배제할 수 없습니다.
로컬 저장소에는 장비 인증서 외에도 로그 데이터, 설정 등이 저장되며 해당 데이터는 장비가 재부팅되더라도 유지됩니다. 이는 공격자가 장비를 장악하고 통제권을 유지하는데 악용될 수 있으며, 내부적으로도 이러한 악용 가능성들이 다수 확인되었습니다. 이러한 위험을 해소하기 위해 제조사는 이번 업데이트에서 기존 저장소를 초기화하는 절차를 수행하였습니다. 이를 통해 장비를 안전한 상태로 복원하는 조치를 시행한 것으로 보입니다.
✅Patch 5-1. 펌웨어 업그레이드 시 저장소 초기화 기능
기존에는 공장 초기화 시에만 저장소 초기화가 수행되었지만, 이번 업데이트로 정책이 변경되어 펌웨어가 업그레이드될 때마다 자동으로 저장소가 초기화되도록 개선되었습니다.
+if [ "$MIGRATION" == "1" ]; then
+ [ "$SIDE" == "1" ] && other=0 || other=1
+
+ ver_side=$(ver "$SIDE" | cut -d '-' -f2)
+ ver_other=$(ver "$other" | cut -d '-' -f2)
+
+ current_ver=$(echo "$ver_side" | cut -d '.' -f2 | sed 's/[^0-9].*//')
+ compare_ver=$(echo "$ver_other" | cut -d '.' -f2 | sed 's/[^0-9].*//')
+
+ if [ "$current_ver" != "$compare_ver" ]; then
+ echo "overlayroot: major versions are incompatible; reset flash required"
+ RESETFLASH=1
+ else
+ current_ver=$(echo "$ver_side" | cut -d '.' -f3 | sed 's/[^0-9].*//')
+ compare_ver=$(echo "$ver_other" | cut -d '.' -f3 | sed 's/[^0-9].*//')
+ if [ "$current_ver" -gt "$compare_ver" ]; then
+ echo "overlayroot: minor versions are incompatible; reset flash required"
+ RESETFLASH=1
+ else
+ current_ver=$(echo "$ver_side" | cut -d '.' -f4 | sed 's/[^0-9].*//')
+ compare_ver=$(echo "$ver_other" | cut -d '.' -f4 | sed 's/[^0-9].*//')
+ if [ "$current_ver" -gt "$compare_ver" ]; then
+ echo "overlayroot: build versions are incompatible; reset flash required"
+ RESETFLASH=1
+ fi
+ fi
+ fi✅Patch 5-2. 저장소 내 숨김 파일 삭제
기존 저장소 초기화 기능은 숨김 파일에 대한 삭제를 지원하지 않았기 때문에, 공장 초기화를 수행하더라도 일부 숨김 데이터가 저장소에 남아있었습니다. 이러한 구조에서는 공격자가 장비를 장악한 후 악성코드나 명령 스크립트를 숨김 파일 형태로 보존하여, 초기화 이후에도 지속적으로 공격을 수행할 가능성이 존재합니다. 이에, 이번 패치에서는 숨김 파일 및 시스템 영역에 남은 잔여 데이터까지 삭제하는 방식으로 저장소 초기화 로직이 개선되었습니다.
# clean flash dirs
echo "overlayroot: clean flash storage directories"
- rm -rf /mnt/flash/.* 2>/dev/null
+ find /mnt/flash/ -maxdepth 1 -name '.*' -a ! -name '.private' -exec rm -rf {} \;
for f in /mnt/flash/*; do
if [ "$f" == "/mnt/flash/cert" ]; then
rm -rf "$f"/.* 2>/dev/null
for ff in "$f"/*; do
if [ "$ff" != "/mnt/flash/cert/ACSCertificate.crt" ]; then
rm -rf "$ff" 2>/dev/null
fi
done
+ elif [ "$f" == "/[..]/home" ]; then
+ rm -rf "$f"/.* 2>/dev/null
+ for ff in "$f"/*; do
+ if [ "$ff" != "/[..]/home/save_location" ]; then
+ rm -rf "$ff" 2>/dev/null
+ fi
+ done
elif [ "$f" == "/mnt/[..]" ]; then
rm -rf "$f"/.* 2>/dev/null
for ff in "$f"/*; do
if [ "$ff" == "/mnt/[..]/ipsec.d" ]; then마치며
여전히 존재하는 펨토셀 보안 리스크
인증서 및 개인키 노출 위험
제조사 업데이트를 통해 장비 내부의 개인키·인증서를 암호화해 저장하도록 하는 의미 있는 개선이 이루어졌습니다. 하지만, 암호화된 키를 장비 자체에서 사용하려면 복호화가 필요하고, 그 복호화 기능이 동일 펌웨어에 포함되어 있는 한 공격자가 펌웨어를 확보해 복호화 절차를 역분석·재현하는 것은 충분히 가능한 일입니다. 따라서 파일 암호화 외에도, 복호화 키의 물리적·논리적 분리, 하드웨어 신뢰 루트(예: HSM, TPM)의 도입, 그리고 복호화 바이너리에 대한 엄격한 접근 통제와 무결성 검증이 병행되어야 효과를 기대할 수 있습니다.
또한 인증서 발급 서버의 주소 차단 등으로 신규 인증서 발급을 제한하였지만, 발급 서버 구조가 유추 가능하고 장비에 내장된 개인키 및 기존 인증서가 변경되지 않은 상태라면 별도 수정 없이 IPsec 인증서 발급 및 SeGW와의 터널 수립의 가능성이 존재합니다. 이는 장비 내부 키·인증서가 여전히 인증의 핵심 요소로 작동하고 있음을 의미합니다. 이를 방지하기 위해서, 기존에 발급된 인증서와 키에 대한 전수 회수·폐기(revocation)와 강제 교체(rotation)가 필요합니다. 이에 더하여, 인증서 발급과 SeGW 인증 과정에서 단순한 키 검증만으로 인증을 허용하지 않도록 장비 등록·위치·자산 상태와의 교차 검증을 추가하는 등 발급·인증 체계를 다층적으로 보강해야 합니다.
장비 접근 용이
펨토셀은 가정 또는 사무실에 설치되는 소형 기지국이기 때문에 설치된 공간이 일반적으로 외부에 노출되지 않고, 이로 인해 악의적인 목적을 가진 공격자가 쉽게 악용할 수 있습니다. 최근 사건 이후 중고 거래 플랫폼 내 펨토셀 거래 글 등록이 차단되었지만, 이전까지 펨토셀은 개인 간 거래가 활발하게 이루어지는 등 장비 접근성이 높았습니다.
펌웨어 수준에서 시리얼 접근을 차단하는 현재의 조치만으로는 다양한 하드웨어 리버스엔지니어링 및 물리적 공격을 충분히 방지할 수 없습니다. 근본적인 방어를 위해서는 펨토셀의 하드웨어 설계 단계에서부터 물리적 변조 방지, 탬퍼링 감지, 보안 부트 체계, 그리고 민감 정보의 안전한 저장을 위한 하드웨어 루트 도입 등 리버스엔지니어링 대비 대책을 선제적으로 도입할 필요가 있습니다.
외부 위협에 노출된 A사 펨토셀
언론 보도에 따르면 A사는 약 157,000대의 펨토셀을 보급했으며, 그중 약 57,000대는 현재 신호가 잡히지 않는 상태입니다. 또한 Shodan으로 시그니처 기반 검색을 수행한 결과 32,000대가 넘는 펨토셀이 인터넷에 노출되어 있었습니다. 이는 A사의 펨토셀들이 잠재적으로 공격 대상이 될 수 있다는 것을 의미합니다.
이번 사건은 공격자가 펨토셀 내부의 개인키·인증서를 이용해 불법 기지국을 생성한 것으로 의심되는 사례입니다. 만약 불순한 의도를 가진 해커가 펨토셀 장비를 분석하여 펨토셀을 원격으로 장악할 수 있는 취약점을 찾아 악용한다면, 이번 사건에서 발생한 소수 장비의 악용을 넘어 인터넷에 노출된 수만 대의 펨토셀 전체를 대상으로 한 연쇄 해킹이 발생할 수 있습니다.
이러한 잠재적 확산 가능성은 이번 사고 및 펨토셀이 관리되고 있지 않은 현재 상황의 심각성을 더욱 높입니다. 이는 전수 점검, 업데이트 강제 적용·인터넷 노출 장비 차단과 같은 즉각적이고 광범위한 대응이 필요함을 시사합니다.
이번 포스트에서는 펨토셀을 통한 소액결제 해킹 사건의 배경과 사건 이후 적용된 보안 업데이트 내용을 살펴보았습니다. 다음 포스트에서는 펨토셀 기기에서 발생 가능한 보안 위협을 해커의 관점에서 분석한 내용을 다룰 예정입니다.
About Theori Frontier Squad
티오리 Frontier Squad 팀은 실제 해커들의 공격 기법을 기반으로 고객 서비스와 인프라를 진단하며, 현실적인 공격 시나리오를 통해 보안 사각지대를 발굴하는 오펜시브 보안 전문 조직입니다. 우리는 공격자 관점에서 취약점을 분석하고, 설계 단계 위협 모델링부터 코드 분석 및 침투 테스트까지 전 과정을 입체적으로 수행하여 고객 비즈니스를 보호합니다. 나아가 오펜시브 사이버보안의 리더로서 난제급 보안 문제 해결을 즐기며, 공격자보다 한발 앞선 대응으로 더 안전한 세상을 만들어 가고 있습니다.