도메인 하나 등록했더니, 미군기지로 가는 전화 수십만 통이 내 서버에 찍혔다
인터넷에는 아무도 안 들여다보는 구석이 있습니다. 20년 전에 표준이 만들어졌고, 몇 년 쓰이다 잊혔고, 그런데 코드에서는 지워지지 않은 것들이요. 한 보안 연구자가 그런 구석 한 곳에 도메인을 등록했습니다. 그랬더니 미군기지로 향하는 전화 수십만 건의 기록이 자기 서버에 쌓였습니다. 공격도 아니고 침투도 아니었습니다. 그냥 버려진 이름표를 주워 든 것뿐인데요.
전화번호를 DNS에 넣겠다는 90년대의 아이디어
먼저 ENUM이 뭔지부터요. 1990년대 말, 통신업계는 고민이 하나 있었습니다. 전화망과 인터넷이 따로 놀았거든요. 전화번호는 전화망에서만 의미가 있고, 인터넷은 도메인 이름으로 돌아갑니다. 그럼 이 둘을 어떻게 연결하지?
답이 ENUM이었습니다. 아이디어는 우아할 정도로 단순합니다. 전화번호 +1-202-555-0100이 있다면, 이걸 뒤집어서 점을 찍습니다. 뒤에는 e164.arpa를 붙이고요. 그러면 0.0.1.0.5.5.5.2.0.2.1.e164.arpa라는 도메인 이름이 나옵니다. 이제 이 도메인에 DNS 질의를 던지면, “이 번호는 SIP로 걸려면 이 주소로 보내세요"라는 답이 돌아옵니다. 전화번호가 곧 도메인입니다.
arpa라는 최상위 도메인 자체가 인터넷 초창기의 유물입니다. 지금은 주로 역방향 DNS 조회 같은 인프라 용도로만 쓰이는데요. ENUM은 여기에 자리를 잡았습니다. 정식 국제 표준이었고, ITU가 관여했고, 각 국가 코드마다 위임 구조까지 설계됐습니다. 그럴듯했죠.
문제는 아무도 안 썼다는 겁니다.
표준은 죽었는데 코드는 살아있었다
ENUM이 실패한 이유는 기술이 아니라 정치였습니다. 전 세계 전화번호를 공개 DNS에 올린다는 건, 통신사 입장에서 자기 자산을 공짜로 뿌리는 일이었거든요. 어느 나라가 어느 번호대역을 관리할지, 개인정보는 어떻게 할지, 합의가 안 됐습니다. 공개 ENUM 트리는 사실상 텅 빈 채로 방치됐고, 통신사들은 각자 사설 ENUM을 만들어 자기들끼리만 씁니다.
여기까지는 흔한 표준 실패담입니다. 그런데 진짜 문제는 다음입니다.
VoIP 소프트웨어, 특히 오픈소스 SIP 스택과 PBX 시스템은 ENUM 조회 기능을 기본 옵션으로 넣어뒀습니다. 2000년대 초중반에 작성된 설정 파일에요. “혹시 ENUM에 등록된 번호면 인터넷으로 직접 보내서 통화료를 아껴보자"는 발상이었습니다. 합리적인 최적화였죠. 당시에는요.
그 설정이 20년 동안 그대로 남아있습니다. 매뉴얼을 복사해서 만든 설정 파일이 다른 설정 파일로 복사되고, 또 복사되면서요. 관리자는 그 줄이 뭘 하는지도 모릅니다. 전화를 걸 때마다 시스템이 조용히 e164.arpa에 질의를 날리고, 응답이 없으니 원래 경로로 통화를 넘깁니다. 통화는 멀쩡히 연결되니 아무도 이상하게 여기지 않습니다.
질의만 계속 나갔습니다.
빈 하위 도메인을 주워 들면 생기는 일
여기서 연구자가 한 일은 기술적으로 대단할 게 없습니다. e164.arpa 아래에서 위임됐지만 실제로 운영되지 않는 국가 코드 영역, 혹은 등록 만료로 방치된 네임서버를 찾아냈습니다. 그리고 그 자리를 차지했습니다.
버려진 네임서버 도메인이 만료되면 누구나 재등록할 수 있습니다. 그런데 상위 존에는 여전히 “이 하위 영역은 저 네임서버에 물어보세요"라는 위임 정보가 남아있습니다. 그러면 전 세계에서 그 번호대역을 조회하는 모든 질의가 새 주인의 서버로 흘러들어옵니다. lame delegation을 이용한 하이재킹이라고 부릅니다. 새로운 기술은 하나도 안 썼습니다. DNS 위생 관리가 안 된 틈을 파고들었을 뿐입니다.
그리고 로그가 쌓이기 시작했습니다.
DNS 질의 하나에는 생각보다 많은 게 담깁니다. 질의된 도메인 이름이 곧 발신 대상 전화번호입니다. 질의를 보낸 IP 주소는 발신 측 전화 시스템이 어디 있는지 알려주고, 시간 정보는 통화 시각을 알려줍니다. 통화 내용은 못 듣습니다. 하지만 “누가, 어디서, 언제, 어떤 번호로 걸었는지"는 전부 남습니다.
정보기관이 통화 내용보다 메타데이터를 더 좋아하는 이유가 이겁니다. 내용은 해석이 필요하지만, 메타데이터는 그 자체로 관계망이 됩니다.
왜 하필 미군기지였나
수십만 건의 로그에 군 관련 시설이 잔뜩 섞여 있었다는 대목에서 이야기가 달라집니다.
우연이라기보다 구조가 그렇게 만든 결과입니다. 대규모 조직일수록 자체 IP 전화 시스템을 운영합니다. 그리고 대규모 조직일수록 시스템 교체 주기가 느립니다. 검증과 인증 절차를 거쳐야 하는 곳이라면 더 그렇습니다. 2000년대 후반에 도입해서 인증을 통과한 PBX 설정을 이유 없이 건드릴 관리자는 없습니다. “돌아가는 걸 왜 만지냐"는 운영 원칙이 여기서는 정반대로 작동한 셈입니다.
게다가 이 트래픽은 방화벽에 걸리지 않습니다. DNS는 어디서나 나가야 하는 트래픽이니까요. 포트 53으로 나가는 평범한 조회일 뿐이고, 목적지는 정식 IANA 관리 도메인 아래의 주소입니다. 악성 도메인 차단 목록에 arpa가 올라가 있을 리 없습니다. 멀쩡한 인프라를 타고 데이터가 조용히 새어나갑니다.
기지에서 걸려나가는 전화번호 목록만으로도 알 수 있는 게 많습니다. 어느 부대가 어느 협력업체와 자주 통화하는지, 특정 시기에 통화량이 어떻게 변하는지 같은 것들이요. 방첩 하는 쪽에서 보면 가볍게 넘길 유출이 아닙니다.
좀비 프로토콜이라는 진짜 공격면
이걸 ENUM 하나짜리 이야기로 읽으면 요점을 놓칩니다.
우리가 보통 상상하는 보안 위협은 능동적입니다. 취약점을 찾고, 익스플로잇을 만들고, 침투합니다. 그런데 이 사례는 정반대입니다. 공격자는 아무것도 침투하지 않았습니다. 피해자 시스템이 20년째 알아서 데이터를 보내왔고, 공격자는 수신함을 열었을 뿐입니다.
이런 좀비 프로토콜은 ENUM만이 아닙니다. 기본값으로 박혀 있는 NTP 서버 주소, 오래된 소프트웨어에 하드코딩된 업데이트 확인 URL, 사라진 회사의 텔레메트리 엔드포인트, 폐기된 SDK가 여전히 호출하는 API 도메인. 만료된 도메인을 주워 트래픽을 받아보는 연구는 이전에도 여러 차례 있었고, 결과는 대체로 비슷했습니다. 생각보다 훨씬 많은 시스템이 아직도 유령에게 말을 겁니다.
인터넷은 지운 적이 없습니다. 잊었을 뿐입니다.
하나 덧붙이면, 이 주제는 발표 직후라 커뮤니티 논의가 아직 충분히 쌓이지 않았습니다. 구체적인 수치나 영향 범위는 후속 분석에서 달라질 수 있습니다. 다만 취약한 구조 자체는 새로 발견된 게 아니라 오래전부터 지적돼온 문제입니다. 그게 오히려 더 찜찜한 대목이고요.
그래서 뭘 해야 하나
당장 할 수 있는 건 의외로 간단합니다. 조직에서 SIP 서버나 IP-PBX를 운영한다면, 설정에서 ENUM 조회 옵션이 켜져 있는지 확인해보세요. Asterisk, FreeSWITCH, Kamailio 같은 시스템에서는 다이얼플랜이나 라우팅 로직에 관련 설정이 들어있을 수 있습니다. 사설 ENUM을 의도적으로 쓰는 게 아니라면, 공개 e164.arpa 조회는 꺼도 아무 문제가 없습니다. 어차피 응답이 오지 않던 조회였으니까요.
그다음 질문은 조금 껄끄럽습니다. 우리 시스템이 우리가 통제하지 않는 곳으로 보내는 요청을 목록으로 알고 있나? 외부로 나가는 DNS 질의를 로그로 남기고 한 번이라도 훑어본 적이 있나? 대부분의 조직에서 답은 “아니오"일 겁니다.
죽은 표준은 문서상으로만 죽습니다. 코드 안에서는 계속 실행됩니다. 지금도 어딘가의 서버가 20년 전에 누가 복사해 붙인 설정 한 줄 때문에, 주인이 바뀐 도메인에 조용히 인사를 건네고 있을지 모릅니다. 그 인사를 누가 받고 있는지 확인해본 적 있으신가요?
댓글
댓글을 불러오는 중...