한 소프트웨어 개발자가 발신자를 알 수 없는 문자 메시지를 받았다. 대형 은행의 고객센터를 사칭하는 듯한 발신자는 공개된 어떤 안내 번호에서도 찾을 수 없는 낯선 번호로 전화를 걸라고 요구했다. 게다가 본인 확인을 위해 신용카드 뒷면에 적힌 보안 번호를 불러달라는 요청까지 덧붙였다. 놀랍게도 이 문자는 은행에서 보낸 진짜 공식 알림이었다. 그러나 이 알림의 행동 양식은 국경을 넘나드는 전화 금융 사기 조직의 수법과 한 치의 차이도 없었다.
십여 개 도메인을 넘나드는 정상 로그인 절차
보안 전문가들은 매일같이 의심스러운 링크를 절대 누르지 말라고 대중에게 강조한다. 하지만 기업들은 실제 서비스 운영 과정에서 이러한 예방 수칙을 스스로 무너뜨려 왔다. 개발자 maurycyz는 오늘날 수많은 기업에서 표준처럼 굳어진 로그인 절차를 낱낱이 분석했다. 사용자가 어떤 회사의 공식 웹사이트에 접속하더라도 안전한 루트 도메인에 머무르지 못하고, 외부 서비스 업체의 로그인 주소로 즉각 리다이렉트된다.
이 화면에서 사용자는 긴 16진수 UUID 문자열로 구성된 인증 허브 도메인을 거쳐야 하며, 이어서 2단계 인증(2FA) 확인을 받기 위해 전혀 다른 제3의 서비스 제공업체 주소로 다시 이동한다. 복잡한 인증 경로를 거친 뒤 이용 통계를 수집하는 데이터 분석 도메인으로 보내졌다가, 마침내 최초 회사의 루트 도메인으로 위태롭게 되돌아온다.
이 긴 인증 과정이 끝날 때까지 사용자 이름, 비밀번호, 문자 인증번호를 입력하는 그 어떤 입력창도 기업의 자체 공식 도메인에서 호스팅되지 않았다. 공식 로그인 과정 자체가 의심스러운 리다이렉트의 연속이라면, 공격자는 굳이 고도화된 시스템 취약점을 파고들 필요가 없다. 회사 이름의 철자를 교묘하게 바꾼 도메인을 몇천 원에 등록하고, 회사 로고와 비밀번호 입력창을 배치한 간단한 웹페이지만 만들면 일반인을 손쉽게 속일 수 있기 때문이다. 세션 토큰 만료로 하루에도 몇 번씩 무작위로 로그인 팝업이 뜨는 환경에서, 어느 것이 진짜이고 어느 것이 피싱인지 구분할 수 있는 사람은 아무도 없다.
그림: 택배 회사에서 발송한 공식 문자 메시지 캡처. 출처: Troy Hunt / troyhunt.com
일상적 업무 관행이 무너뜨린 도메인 신뢰
인터넷의 도메인 네임 시스템(DNS)은 본래 매우 직관적인 계층 구조로 설계되었다. 최상위 도메인부터 운영 주체, 개별 서버 이름으로 이어지는 체계적인 구조는 디지털 세계에서 가장 확실한 정품 인증 표식이 되어야 마땅했다. 그러나 주요 기업들이 외주 개발과 클라우드 서비스를 무분별하게 중첩하면서, 가장 식별하기 쉬워야 할 2차 도메인은 어지러운 리다이렉트 경로 한가운데 파묻히고 말았다.
오늘날의 사용자들은 모바일 기기에서 매일 수백 번의 인증과 승인 클릭을 처리해야 한다. 심각한 인지적 피로 상태에 놓인 일반인에게 주소의 진위를 판별하라는 무거운 책임을 전가하는 것은 시스템 설계자들의 책임 회피다. 정규 은행과 금융기관이 단축 URL이 포함된 마케팅 문자를 일상적으로 발송하고, 공식 고객센터 이메일의 설문조사 링크가 정체불명의 외부 배포 플랫폼을 향하고 있는 현실은, 기업 스스로가 사용자들에게 인터넷 주소 구조를 무시하도록 훈련시키는 것과 다름없다.
그림: 다음 날 동일한 발신자에게서 도착한 또 다른 문자 메시지, 역시 진위 확인이 불가능하다. 출처: Troy Hunt / troyhunt.com
사용자에게 위험한 링크를 조심하라고 당부하는 말은 공허한 헛구호가 되었다. 기업이 보내는 공식 링크가 정교하게 위장된 피싱 링크보다 훨씬 더 낯설고 수상해 보이기 때문이다. 어떤 보안 전문가는 마이크로소프트의 공식 업무 이메일을 스팸으로 분류해야만 했던 일화를 공개하기도 했다. 수많은 추적 매개변수와 외부 링크가 복잡하게 얽힌 공식 이메일의 특징이 현대 타깃형 피싱 메일의 탐지 조건과 정확히 일치했기 때문이다. 개발자 커뮤니티에서는 보안 부서의 어처구니없는 운영 방식을 드러내기 위해 자신이 이용하는 은행의 공식 이메일을 고의로 피싱으로 신고한다는 목소리도 적지 않다.
그림: 3일 뒤 도착한 이메일에서는 공식 채널과 사기 수법 사이의 경계가 완전히 사라졌다. 출처: Troy Hunt / troyhunt.com
시스템 신뢰를 재건하기 위한 4가지 엔지니어링 원칙
겉치레뿐인 보안 교육에 지친 엔지니어들은 RFC 프로토콜 규격에 준하는 기술 아키텍처 기준을 바탕으로 시스템의 신뢰를 되찾기 위한 원칙을 제시했다.
가장 먼저 해결해야 할 과제는 루트 도메인의 단일화다. 대규모 조직은 널리 알려진 단 하나의 신뢰할 수 있는 루트 도메인을 통해 모든 핵심 서비스를 제공해야 한다(MUST). 인증과 개인정보를 다루는 모든 내부 서비스는 반드시 메인 루트 도메인의 하위 서브도메인에 배치되어야 한다(MUST). 특정 업무 명칭과 외부 호스팅 서비스를 조잡하게 결합한 도메인 명명 방식은 엔지니어링 표준에서 완전히 퇴출당해야 마땅하다.
이메일과 문자 메시지를 통한 사용자 상호작용 채널에도 엄격한 기준이 적용된다. 문자 메시지를 통해 사용자가 외부 웹사이트에서 정보를 입력해야 하는 경우, 기술팀은 사내 서버에 리다이렉트 중계 계층을 반드시 구축해야 한다(MUST). 사용자가 클릭하는 주소는 어디까지나 회사의 검증된 공식 도메인이어야 하며, 시스템 내부에서 최종 서비스 제공업체로 안전하게 연결되어야 한다.
이러한 논리는 전화 통신망에도 그대로 적용되어야 한다. 공식 안내나 마케팅 문자에서 출처를 확인할 수 없는 임시 번호로 전화를 걸도록 유도해서는 안 된다(MUST NOT). 필수적인 연락처 정보는 신뢰할 수 있는 원본 메시지 링크를 통해 접속한 공식 웹페이지에 명시되어야 하며, 쉽게 위조될 수 있는 문자 메시지 본문에 무방비로 노출되어서는 안 된다.
인도가 6개월 만에 도메인 혼란을 수습한 방법
수렁에 빠진 피싱 위기 앞에서 교육을 통해 사용자의 행동 방식을 바꾸려는 시도는 실패할 수밖에 없다. 근본적인 해결책은 인프라 계층에서의 물리적 격리뿐이다. 인도는 지난 한 해 동안 국내 모든 금융기관에 전용 도메인 격리 구역을 강제 도입하며 훌륭한 모범 사례를 남겼다.
새로운 규정에 따라 인도의 모든 은행 공식 서비스는 전용 은행 최상위 도메인(TLD)만을 사용해야 하며, 비은행 금융기관 역시 금융 전용 확장자를 강제로 적용받았다. 웹 포털에서 금융 서비스를 제공하든, 이메일로 명세서를 발송하든, 심지어 내부 인증 중계 인터페이스라 할지라도 예외 없이 전용 루트 도메인 산하로 단일화되어야 한다.
더욱 결정적인 조치는 통신 당국이 전화 고객센터 네트워크에 대한 권한을 대폭 강화한 것이다. 금융기관의 공식 발신 전화번호는 ‘1600’ 국번으로 전면 통합되었다. 인도 통신부가 직접 관리하는 이 전용 번호 대역은 은행, 금융 서비스, 보험 업계 및 일부 정부 기관에만 배타적으로 할당된다. 거래 및 서비스 안내 전화가 휴대폰 화면에서 일반 상업용 스팸 전화와 물리적으로 확실히 구분되도록 만든 것이다. 권한이 없는 기관은 이 번호 대역을 일절 발급받을 수 없다. 인도 정부가 부여한 유예 기간은 단 6개월에 불과했으나, 전국의 은행 네트워크는 신속하게 시스템 전환을 완료했다.
엉망인 시스템을 사용자에게 떠넘기는 것은 보안의 직무유기다
네트워크 인프라 차원에서 실행되는 강제적 격리는 수백억 원의 예산을 쏟아붓는 수만 번의 예방 교육보다 훨씬 효과적이다. 사용자가 DNS 구조를 배울 필요도 없고, 복잡한 인증 경로의 적법성을 따질 필요도 없으며, 고도의 디지털 지식을 갖출 필요도 없다. 공식 금융 도메인이 아닌 웹페이지나 전용 국번으로 걸려 오지 않은 전화는 확인해 볼 필요도 없이 사기로 간주하면 그만이기 때문이다. 전 세계 사용자가 동일한 곤경을 겪고 있으며, 은행의 공식 마케팅 문자와 사기 조직의 피싱 문자의 차이는 종종 블랙리스트에 번호가 등록되어 있는지 여부에 불과하다.
보안 엔지니어링 전문가 켈리 쇼트리지(Kelly Shortridge)는 보안 업계가 소위 ‘보안 문화’라는 허상에 비현실적인 집착을 보이고 있다고 날카롭게 꼬집었다. 이러한 집착의 본질은 오류를 일으키도록 잘못 설계된 차가운 시스템 안에서, 인간에게 끝없는 주의력을 요구하며 하루에 수백 번씩 반복되는 클릭 속에서 단 한 번의 실수도 하지 않기를 바라는 무책임한 발상에 불과하다.
십여 차례의 리다이렉트 속에서 정상적인 인증 업체를 식별해 내라고 일반 사용자에게 요구하는 것은, 호텔 투숙객에게 객실 카드키의 무선 암호화 통신 규격을 직접 검증하라고 요구하는 것과 같다. 인도가 추진한 과감한 정책은 확실한 엔지니어링 해답을 제시한다. 부실하게 설계된 시스템의 부담을 사용자에게 전가하는 것이야말로 보안 업계 최대의 직무유기다. 기업이 인증 진입로를 하나로 통합하는 기초적인 조치조차 하지 않는다면, 사기 방지 교육은 기만에 불과할 것이다.
참고 링크:
- maurycyz.com 원문
- Lobsters 토론
- Troy Hunt 관련 글
- HN 토론