시작하기 전에
코딩애플, 노말틱님 영상을 참고했고, 단순히 사건 정리에 그치지 않고 관련 개념들을 공부하는 데 목적이 있습니다.
또한, 아직 SKT에서 공식적으로 발표한 내용이 아니기 때문에, 여기 정리된 내용들은 모두 현재까지의 추정에 기반한 것입니다.
무엇이 해킹되었는가?
HSS (Home Subscriber Server) 서버가 해킹되었다.
HSS 서버란 무엇인가?
LTE/5G 네트워크의 가입자 관리 데이터베이스이다.
가입자 정보 관리, 네트워크 접속 및 서비스 인증을 담당한다.
쉽게 말하면,
우리 휴대폰이 "나야, SKT 사용자야" 하고 신호를 보낼 때,
그걸 확인하고 접속을 허락해주는 존재다.
HSS 안에는 어떤 정보가 있는가?
- IMSI (International Mobile Subscriber Identity)
- 전 세계에서 유일한 가입자 식별 번호
- 기지국과 네트워크에서 "이 사람이 누구인지" 확인할 때 사용
- KI (Authentication Key)
- USIM에 저장된 비밀 키
- 통신망 접속할 때, 네트워크 인증용으로 사용
- IMSI+KI = 마치 '아이디+비밀번호' 같은 역할
이 두 가지를 알면, 해커는 USIM 복제가 가능하다.
- IMEI (International Mobile Equipment Identity)
- 휴대폰 자체의 고유번호
- 기기 식별용, 분실폰 차단 등에 활용
- USIM을 복제해도 IMEI는 바뀌지 않지만, 해커가 "IMEI가 이거니까 나맞다"는 식으로 속일 여지는 일부 존재한다.
※ KI 기반 인증 방법
※ 왜 대칭키 방식을 썼을까?
※ 비대칭키(공개키) 방식은 뭘까?
※ KI 기반 인증 방법
USIM과 HSS는 같은 비밀키(KI)를 비밀로 공유한다.
인증할 때는 대칭키(Symmetric key) 암호화 방식을 사용한다.
예를 들어:
- 내가 폰을 켜고 네트워크에 접속 요청을 보낸다.
- 네트워크(HSS)에서 랜덤 숫자(RAND)를 전송한다.
- 내 USIM은 RAND와 KI를 조합하여 응답값(RES)을 생성하여 전송한다.
- HSS도 같은 RAND와 KI로 예상 응답값(XRES)을 생성한다.
- 둘이 비교해서 값이 같으면, 네트워크는 "오, 너 진짜 우리 가입자 맞네!"하고 접속을 허락한다.
※ 왜 대칭키 방식을 썼을까?
사실 공개키(비대칭키) 방식을 쓰면, 비밀키 유출 위험이 줄어들 수 있다.
그런데도 대칭키 방식을 쓴 이유는:
- 이동통신은 초대규모, 실시간 서비스라서
- 1초에 수십만~수백만 명이 접속 요청을 보내는데
대칭키 방식이 계산이 훨씬 빠르고 부담이 적기 때문이다. - 기지국, USIM, 서버 모두 계산 비용을 최소화할 수 있다.
※ 비대칭키(공개키) 방식은 뭘까?
서로 다른 두 개의 키(공개키, 비밀키)를 사용해서 암호화·복호화·인증하는 방식이다.
혼동 방지를 위해 우선 USIM 해킹과는 별도로 생각하자.
- 공개키(Public Key): 모두에게 공개
- 비밀키(Private Key): 본인만 비밀로 보관
두 개는 수학적으로 연결되어 있어서
- 공개키로 암호화 -> 비밀키로만 복호화 가능
- 비밀키로 서명 -> 공개키로만 서명 인증 가능
예시 1: 암호화로 보안 채널 만들기
- A(사용자)가 B(통신사)에게 민감한 정보(예: 주민번호, 비밀번호, 인증번호)를 보낼 때:
- A는 B의 공개키로 데이터를 암호화해 전송
- 중간에 해커가 훔쳐봐도 암호문만 보임, 내용을 알 수 없음
- B는 자기 비밀키로 암호문을 복호화해 내용을 확인
예시 2: 인증·서명 검증
- SKT가 사용자에게 "내가 진짜 SKT야"라고 증명할 때:
- SKT는 자기 비밀키로 서명
- 사용자는 SKT의 공개키로 서명을 검증
- SKT의 공개키는 누구나 볼 수 있지만, 서명 검증은 사용자가 송신자의 신원을 확인하는 데 의미가 있음
예시: RSA 알고리즘
RSA에서 비밀키와 공개키는 이렇게 만들어진다:
- 매우 큰 두 소수 p, q를 고른다.
- N = pq를 계산 -> 공개
- p, q로 비밀키 계산, 공개키도 설정
- 공개키에는 N만 남기고, p, q는 절대 비공개
누구든 N을 보고 공개키로 암호화할 수 있지만, 복호화를 하려면 p, q를 알아야 하고 그걸 구하려면 N을 소인수분해해야 함
1214731이 어떤 두 소수의 곱인지 알 수 있겠는가?
만약 비대칭키 방식이었다면? (상상이긴 하지만)
HSS(서버): SKT 비밀키, SKT 공개키
USIM(가입자): USIM 비밀키, USIM 공개키
HSS 비밀키가 털렸을 때:
HSS 쪽 인증/서명만 재발급·교체하면 된다.
USIM 쪽은 손대지 않아도 된다.
왜 대칭키 방식이 시간이 빠른가?
- 대칭키(AES, ChaCha20 등): 일반 덧셈, 곱셈으로 이루어져 있어 CPU에서 몇 cycle로 계산 가능
- 비대칭키(RSA, ECC 등): 큰 수의 지수 연산, 소인수분해 기반이라 연산량 훨씬 큼
이 정보가 유출되면?
- 해커는 USIM을 복제해서 자신의 폰에서 피해자 번호로 전화·문자 송수신이 가능해진다.
- 문자 인증까지 풀리니까 할 수 있는 일들이 많아진다.
- 예:
- 은행 앱 로그인 (대부분 문자 인증 필요) -> 그래서 현재 은행들이 SKT 문자 인증 중단
- OTP(일회용 비밀번호) 수신 -> 금융 거래, 송금, 결제 가능
- 암호화폐 거래소 접속 -> 휴대폰 번호 + 문자 인증만으로 접속 가능
- 추가 피해 가능성:
- 갤러리 사진·영상이 클라우드에 자동 백업돼 있으면, 클라우드 계정이 본인인증으로 뚫릴 때 사생활 사진까지 털릴 수 있다.
- 특히 요즘은 비대면 신분증 인증을 많이 하다 보니, 갤러리에 신분증 사진이 저장돼 있는 경우도 많아서, 비대면 계좌 개설 -> 대출 실행 같은 2차 금융 범죄로 이어질 수 있다.
USIM 교체란?
기존에 털린 IMSI, KI 대신 새로운 아이디, 비밀번호를 발급받는 과정이다.
해킹 방법
BPFDoor라는 고급 해킹 툴이다.
BPFDoor란?
리눅스·유닉스 서버를 공격하는 백도어(backdoor) 해킹 툴이다.
- 커널에 내장된 BPF(Berkeley Packet Filter) 기능을 악용한다.
- 방화벽, 백신, IDS 같은 일반 보안 장비를 피해서 숨어들 수 있다.
- 해커가 서버 내부로 들어가 명령어를 보내거나, 정보를 빼내는 데 사용된다.
BPF는 뭔가?
원래 리눅스 커널에 내장된 네트워크 패킷 필터링 시스템이다.
- 들어오는 네트워크 패킷을 선별해
- 분석할 것과 버릴 것을 빠르게 골라내는 고속 엔진이다.
그런데 해커는 이걸 이용해:
- 서버로 들어오는 모든 패킷을 몰래 감시하고
- 특정 '암호 같은 신호'를 감지하면
- 그때부터 백도어 기능을 켜고 해커의 명령을 기다린다.
※ 백도어(Backdoor)란?
※ 백도어(Backdoor)란?
시스템, 서버, 네트워크, 소프트웨어에 몰래 숨겨진 비밀 통로로,
원래의 인증 절차나 보안 장치를 우회해서 접근할 수 있게 만들어 놓은 것이다.
쉽게 말하면,
워딩 그대로 앞문(정식 로그인) 말고,
몰래 만든 뒷문(백도어)으로 들어가 시스템을 조종하는 것이다.
백도어는 처음부터 악성이 아니다.
개발자들이 소프트웨어 개발·테스트할 때 긴급 접근용으로 임시로 만들어 두는 경우가 있다.
예: 비밀번호 잊어버렸을 때 복구용 계정
그런데 이걸 해커가 직접 심어버리면 악성 백도어로 바뀌게 된다.
BPFDoor 해킹 흐름
1. 최초 침투
- 협력사, 약한 서버, 취약한 VPN, SSH 계정을 통해 리눅스 서버에 몰래 들어간다.
2. BPFDoor 설치
- 서버에 BPFDoor 프로그램을 심는다.
- BPF로 네트워크 패킷을 감시한다.
3. 시그널 감지
- 외부에서 해커가 "특정 문자열"을 패킷에 숨겨 보내면
- BPFDoor가 이를 감지하고 대기모드에서 활성모드로 전환한다.
4. 리버스 쉘 생성
- 서버에서 해커에게 역방향 연결(reverse shell)을 생성한다.
- 이제 해커는 서버 안에서 명령어를 마음껏 실행 가능하다.
5. 내부망 침투
- 서버 안에서 네트워크를 스캔한다.
- 민감 서버(HSS, MME, PCRF 등)로 접근을 시도한다.
- 가입자 정보(IMSI, KI)를 탈취한다.
'📖 Study with Video' 카테고리의 다른 글
[영상 리뷰] 비밀번호 규제 (4) | 2025.06.19 |
---|