계정 탈취 문제 해결: MFA가 첫 단계에 불과한 이유

소개

다단계 인증(MFA)만으로는 계정 탈취 위협을 해결할 수 없습니다. 물론 공격을 어렵게 만들기는 하지만, 집요한 공격자들은 사용 가능한 모든 인증 요소를 우회하는 기발한 방법을 찾아냈습니다. MFA를 인증 문제의 해결책으로 보기보다는 공격 표면을 넓히는 요소로 생각해야 합니다. 각 인증 요소는 새로운 종속 시스템, 새로운 버그와 취약점의 원인, 새로운 사회 공학적 공격 기회를 만들어냅니다. 안타깝게도 많은 보안 조직은 과거에 네트워크 경계를 바라보던 것처럼 MFA를 광범위한 공격을 막아주는 방벽으로 여깁니다. 제로 트러스트 보안 지지자들이 지적한 안전한 경계라는 잘못된 믿음은 공격자가 네트워크 내부의 취약점을 악용해 수평 이동하고 권한을 상승시킬 수 있게 했습니다. 마찬가지로 MFA가 계정 탈취 문제를 해결한다는 잘못된 믿음은 보안 조직이 MFA의 약점과 사용자 계정을 범죄자의 탈취 위험에 노출시키는 수많은 시스템 취약점을 인식하지 못하게 합니다. 이 백서에서는 공격자가 MFA를 우회하는 방식을 살펴봄으로써 MFA로 인해 봇 완화, JavaScript 공급망 보호, 상황별 위험 모니터링과 같은 다른 보안 조치가 더욱 중요해진다는 점을 보여줍니다. 이러한 기법은 MFA가 사용자에게 주는 불편을 줄이는 동시에 MFA의 보안상 이점을 강화합니다.

MFA 도입을 촉진하는 요인

MFA는 약점에도 불구하고 앞으로도 계속 사용될 것이며, 그럴 만한 이유가 있습니다. 비밀번호만을 사용하는 인증 방식은 명백히 실패했기 때문입니다.

우리 인간은 길고 무작위적인 문자열을 기억할 수 없습니다. 그래서 편법을 택합니다. 기억하기 쉽고 예측 가능한 비밀번호를 선택하고, 여러 애플리케이션에서 같은 비밀번호를 재사용하며, 포스트잇에 비밀번호를 적어 둡니다. 기업은 비밀번호 길이와 복잡성에 대한 요건을 적용해 이러한 위험을 줄이려 하지만, 인간의 기억력에는 한계가 있습니다. 복잡성 요건이 있어도 우리는 여전히 예측 가능한 방식을 찾아냅니다. 첫 글자만 대문자로 쓰거나, 모양이 비슷한 영숫자 대신 특수문자를 넣거나(S 대신 $), 비밀번호 끝에 123처럼 추측하기 쉬운 숫자를 추가하는 식입니다. (비밀번호 예측 가능성에 관한 연구 결과를 참조하세요.)

우리 인간에게는 사회 공학적 공격에 취약하게 만드는 공통적인 약점도 있습니다. 공격자가 우리의 신뢰, 동조하려는 욕구, 권위에 대한 존중, 남을 도우려는 마음을 이용하면 비밀번호를 넘겨주기도 합니다. 실제로 사람들은 그저 물어보기만 해도 비밀번호를 알려줄 때가 있는데, 다음의 재미있는 Jimmy Kimmel Live 영상에서 이를 확인할 수 있습니다.

이러한 비밀번호 기반 인증의 취약점으로 인해 정부 기관과 업계 협회는 MFA 도입을 추진하고 있습니다. 2021년 5월, 바이든 대통령은 연방 기관이 180일 이내에 MFA를 도입하도록 요구하는 행정명령을 발표했으며, 사이버보안 및 인프라 보안국(CISA)은 민간 기업을 대상으로 MFA 도입을 장려하고 있습니다. 결제 카드 산업 보안 표준 위원회는 데이터 보안 표준 v4.0을 통해 조직이 2025년 3월 31일까지 카드 소유자 데이터에 대한 모든 접근에 MFA를 적용하도록 의무화하고 있습니다.

비밀번호만 사용하는 인증 방식에 비해 MFA가 지닌 분명한 장점으로 인해 도입이 확대됨에 따라, 보안 전문가는 MFA의 단점과 MFA가 공격 표면을 확대하고 공격자가 인증 제어를 우회할 수 있는 새로운 취약점을 만들어 내는 방식에 더욱 주의를 기울여야 합니다.

MFA로 인해 확대된 공격 표면

MFA는 인증 과정에서 두 가지 이상의 인증 요소를 적용하는 것으로 정의됩니다. 여기서 인증 요소란 다음과 같은 방법을 통해 본인이 주장하는 신원과 실제 신원이 일치함을 증명하는 수단을 의미합니다:

  • 지식 요소: 비밀번호나 개인 식별 번호(PIN)처럼 본인이 알고 있는 정보
  • 소유: 모바일 기기, 스마트카드, 하드웨어 토큰 또는 USB 드라이브와 같이 사용자가 가지고 있는 것
  • 생체 특성: 지문, 얼굴 스캔, 홍채 패턴 등의 생체 인식 정보로 확인되는 본인 고유의 특성

MFA를 구현하는 방법은 무수히 많지만, 그중 상당수는 새로운 공격 표면을 만들거나 애플리케이션을 비밀번호만 사용하는 인증 방식과 동일한 취약점에 노출시킵니다.

SMS 기반 MFA

MFA를 구현하는 방법은 무수히 많지만, 그중 상당수는 새로운 공격 표면을 만들거나 애플리케이션을 비밀번호만 사용하는 인증 방식과 동일한 취약점에 노출시킵니다.

가장 널리 사용되는 MFA 구현 방식은 SMS를 통해 사용자에게 일회용 비밀번호(OTP)를 전송하여 원칙적으로 스마트폰 소유 여부를 증명하는 것입니다. 일반적으로 사용자가 사용자 이름과 비밀번호로 로그인을 시작하면 앱에서 문자 메시지를 전송합니다. 그런 다음 사용자가 OTP를 확인해 앱에 입력하면 인증이 완료되고 일정 기간 동안 유효한 세션 토큰이 생성됩니다.

SMS 기반 인증에 여전히 존재하는 취약점

SMS를 통해 소유 요소를 구현하더라도 몇 가지 주요 취약점은 해결되지 않습니다. 사용자가 애플리케이션에 OTP와 비밀번호를 입력하고, 애플리케이션이 사용하는 것과 동일한 통신 채널을 통해 OTP가 서버로 다시 전송되므로, 애플리케이션이나 기기 또는 네트워크를 침해한 공격자는 비밀번호, OTP 및 세션 토큰에 접근할 수 있습니다.

엔드포인트 공격

공격자는 이미 잘 알려져 있고 여전히 널리 사용되는 다양한 기법을 통해 기기를 악성코드에 감염시켜 장악하고, 그 결과 브라우저 중간자(MitB) 공격을 수행합니다. 브라우저에서 코드를 실행하면 공격자는 비밀번호와 OTP를 탈취하여 사용자를 대신해 인증할 수 있습니다. 또는 인증이 완료되도록 한 다음 세션 식별자를 탈취할 수도 있으며, 이를 이용해 인증을 우회하고 사용자 계정에 액세스할 수 있습니다. (엔드포인트를 감염시키는 악성코드의 최신 동향은 F5 Labs의 BlackGuard Infostealer 보고서를 참조하십시오.)

앱 침해

공격자는 애플리케이션을 감염시켜 수많은 사용자 계정을 한꺼번에 탈취할 수 있습니다. 또한 범죄자는 멀웨어를 통해 기업의 인프라를 침해하는 것 외에도 애플리케이션을 구성하는 코드 라이브러리 중 하나를 침해하여 애플리케이션 데이터에 접근할 수 있습니다. 이러한 수법을 공급망 공격이라고 합니다.

소프트웨어 공급망 공격에서 공격자는 일반적으로 표적 조직에 소프트웨어 구성 요소(라이브러리, 프레임워크, 서비스)를 제공하는 신뢰할 수 있는 타사 공급업체나 오픈 소스 저장소를 노립니다. 공격자는 이후 애플리케이션에 통합될 구성 요소에 멀웨어를 삽입합니다. 모든 공급업체와 오픈 소스 팀이 안전한 코딩 관행을 적용하는 데 필요한 기술과 리소스를 갖추고 있는 것은 아니므로 이러한 공격은 효과적일 수 있습니다.

웹 및 모바일 애플리케이션은 일반적으로 수십 개의 서드 파티 스크립트를 포함하고 있으며, 그중 상당수가 태그 관리자를 통해 페이지에 동적으로 추가되기 때문에 공급망 공격에 특히 취약합니다. 이러한 스크립트는 예고 없이 자주 변경되며 조직의 코드 보안 검사를 거치지 않습니다. 공격자가 이러한 스크립트 중 하나라도 침해하면 애플리케이션을 완전히 장악할 수 있습니다. 즉, 사용자 입력을 읽거나 브라우저 메모리의 데이터에 액세스할 수 있으며, 사용자 여정을 가로채 아무런 경고 없이 악성 앱으로 유도할 수도 있습니다.

Magecart와 같은 이러한 공급망 공격으로 인해 수십만 건의 자격 증명이 유출되는 보안 침해가 발생했습니다. MitB 공격과 매우 유사하게, 이러한 공급망 공격은 소유를 증명하는 토큰을 애플리케이션에 입력하는 모든 MFA 솔루션에 효과가 있으며, 이는 OTP를 사용하는 대부분의 구현 방식에 해당합니다. 악성 코드가 사용자 입력을 읽기 때문에 고정 비밀번호와 OTP는 물론, 애플리케이션이 수집하는 기타 개인 정보나 금융 정보도 탈취할 수 있습니다.

네트워크 도청

SMS 기반 인증에서는 비밀번호, OTP 및 세션 토큰이 동일한 네트워크 연결을 통해 전송되므로, 이러한 형태의 MFA는 여전히 중간자(MitM) 공격에 취약합니다. 이러한 공격에는 DNS 포이즈닝, ARP 포이즈닝, 악성 무선 액세스 포인트와 같은 일반적인 공격 벡터가 사용됩니다.

사회 공학

SMS 기반 MFA를 노리는 가장 흔하고 성공률이 높은 공격 중 하나는 사회 공학 기법을 사용해 실시간 피싱 프록시(RTPP)를 통한 중간자(MitM) 공격을 수행하는 것입니다.

이 공격에서 사기범은 피싱 이메일로 사용자를 속여 공격자가 제어하는 사이트에 접속하게 하고, 사용자는 그곳에 자신의 자격 증명을 입력합니다. 여기까지는 자격 증명을 탈취하는 일반적인 피싱 공격과 동일하지만, MFA를 우회하려면 한 단계가 더 필요합니다. 사용자가 앱에 사용자 이름과 비밀번호를 입력하면 공격자는 해당 자격 증명을 대상 애플리케이션으로 전달하고, 대상 애플리케이션은 사용자에게 2차 인증을 요청합니다. 사용자는 신뢰할 수 있는 애플리케이션에서 인증하고 있다고 생각하기 때문에 이 요청을 승인할 가능성이 매우 높습니다. 즉, 승인 버튼을 클릭하거나 앱에 토큰을 그대로 입력합니다. 어느 경우든 공격자는 애플리케이션에 접근할 수 있게 됩니다. (이 공격의 시연은 Kevin Mitnick의 이 동영상을 참조하세요.)

자동화와 피싱 사기에 쉽게 속는 사용자의 성향으로 인해 RTPP 공격은 대규모로 성공할 수 있습니다. (실시간 피싱 프록시의 증가에 관한 자세한 데이터는 F5 Labs 피싱 및 사기 보고서를 참조하세요.)

SMS 기반 인증의 새로운 취약점

SMS를 두 번째 인증 요소로 사용하면 비밀번호만 사용하는 인증의 기존 취약점 중 상당수를 해결하지 못할 뿐만 아니라, 애플리케이션이 추가적인 공격 경로에 노출됩니다.

물리적 기기 도난

소유 기반 인증에 대한 가장 명백한 공격은 물리적 기기를 훔치는 것일 수 있습니다. 휴대전화를 훔친 범죄자는 휴대전화가 잠겨 있어도 알림에 표시된 OTP를 확인할 수 있습니다. 많은 휴대전화 도난 피해자가 은행 계좌의 자금을 잃는 일을 겪었습니다.

SIM(가입자 식별 모듈) 스와핑

범죄자는 문자 메시지로 전송된 OTP에 접근하기 위해 휴대폰을 실제로 소지할 필요가 없습니다. SIM 하이재킹 또는 SIM 포팅이라고도 하는 SIM 스와핑(https://www.darkreading.com/edge/sim-swapping-attacks-what-they-are-how-to-stop-them)을 이용하면 공격자는 고객용 앱에서 가장 널리 사용되는 MFA 방식인 SMS 기반 인증을 우회할 수 있습니다. SIM 스와핑 공격에서 사기범은 휴대폰을 분실하거나 도난당했을 때 유용하도록 통신 서비스 제공업체가 전화번호를 다른 기기로 이전할 수 있게 해 주는 기능을 악용합니다.

사기범은 먼저 온라인 조사, 피싱 또는 사회 공학적 수법을 통해 피해자의 개인정보를 수집합니다. 그런 다음 이 정보를 이용해 통신사를 속여 피해자의 전화번호를 사기범의 SIM으로 이전하도록 합니다. 또는 크리덴셜 스터핑, 무차별 대입 추측, 사전 공격을 사용해 통신사에 등록된 사용자의 계정에 침입할 수도 있습니다.

피해자의 휴대전화 서비스를 장악한 사기범은 피해자에게 전송되는 모든 SMS와 음성 통화를 수신하게 됩니다. 이를 통해 사기범은 문자 메시지로 전송되는 모든 보안 토큰을 가로챌 수 있습니다.

하드웨어 토큰 장치

하드웨어 토큰 장치는 일반적으로 크기가 매우 작은 특수 장치로, 사용자가 인증을 위해 애플리케이션에 입력하는 OTP를 표시합니다. 이러한 장치는 애플리케이션에서 사용자에게 별도로 정보를 전송하지 않고도 소유 여부를 증명할 수 있게 해 주므로, SMS 기반 인증의 주요 취약점 중 하나를 제거합니다.

로그인할 때마다 사용자에게 OTP를 전송하는 방식에 의존하는 대신, 이 장치는 초기 시드 값과 알고리즘을 기반으로 일련의 OTP를 생성합니다. 시드 값 자체는 설정 시 장치와 인증 서비스 간에 공유됩니다. 시드 값에는 로그인 요청과 같은 이벤트가 발생하거나 60초와 같은 일정 시간이 경과할 때 증가하는 카운터가 추가됩니다. 이를 각각 이벤트 기반 OTP(EOTP)와 시간 기반 OTP(TOTP)라고 합니다. EOTP와 TOTP는 모두 해시 기반 OTP(HOTP)의 한 유형입니다. 카운터와 시드가 함께 해시 함수에 전달되어 겉보기에는 무작위인 숫자 문자열을 생성하며, 올바르게 구현된 경우 예측 가능한 패턴이 드러나지 않기 때문입니다.

하드웨어 토큰은 문자 메시지로 OTP를 전송할 필요가 없으므로, SIM 스와핑 등의 수법으로 OTP가 사용자에게 도달하기 전에 가로채는 것을 방지합니다. 그러나 사용자가 앱에 OTP를 입력해야 하고, 앱은 비밀번호와 동일한 통신 채널을 통해 OTP를 인증 서비스로 전송하므로 SMS 기반 인증의 다른 취약점은 대부분 그대로 남아 있습니다. 공격자는 문자 메시지로 전달되는 OTP를 탈취할 때와 마찬가지로 엔드포인트, 네트워크 또는 애플리케이션을 침해하여 비밀번호와 OTP에 접근할 수 있습니다.

SMS 기반 인증을 노리는 가장 흔한 공격인 실시간 피싱 프록시는 하드웨어 장치에서 생성된 OTP에도 똑같이 효과적입니다. OTP가 휴대폰에 표시되든 전용 장치에 표시되든 사용자가 속아서 가짜 사이트에 OTP를 입력하게 되기 때문입니다.

하드웨어 장치를 사용하면 OTP가 사용자에게 전송되는 도중 공격자에게 탈취될 가능성은 사라지지만, 이러한 장치는 유출될 수 있는 시드 값에 의존합니다. 공격자는 장치에 물리적으로 접근하거나(MFA를 해킹하는 12가지 이상의 방법에서 전자 현미경 공격에 관한 내용을 참조), 인증 서비스에서 사용하는 데이터베이스를 침해하거나, 장치와 인증 서비스 간에 시드 값을 합의하는 설정 과정을 가로채 시드 값에 접근할 수 있습니다.

인증 앱

인증 앱은 하드웨어 토큰과 매우 유사하게 작동할 수 있습니다. 초기 시드와 알고리즘을 기반으로 일련의 OTP를 생성하므로 취약한 채널을 통해 시드를 전달할 필요가 없습니다. 또한 별도의 채널을 사용해 OTP를 전달함으로써 한 단계 더 발전된 방식으로 작동할 수도 있습니다. 이 경우 사용자 이름과 비밀번호가 성공적으로 확인되면 인증 서비스가 인증 앱에 푸시 알림을 보내 사용자에게 요청 승인을 요구합니다. 사용자가 승인하면 인증 앱은 사용자가 애플리케이션에 OTP를 직접 입력하지 않아도 인증 서비스로 OTP를 바로 전송합니다. 인증 앱과 인증 서비스 간의 통신은 별도의 연결을 통해 이루어집니다.

대체 통신 채널을 사용하면 OTP가 애플리케이션에 입력되지 않으므로 공격자가 애플리케이션을 침해하더라도 OTP에 액세스할 수 없습니다. 또한 비밀번호와 OTP가 서로 다른 보안 채널을 통해 전송되기 때문에 네트워크 연결을 침해하여 둘 다 수집하기가 더 어렵습니다. 그러나 애플리케이션 자체와 인증 앱이 동일한 기기에서 실행되는 경우, 엔드포인트가 침해되면 공격자가 비밀번호와 OTP 모두에 액세스할 수 있습니다. (Google Authenticator를 침해하는 악성코드에 관한 F5 Labs의 보고서를 참조하세요.)

안타깝게도 인증 앱은 실시간 피싱 프록시의 사용을 막지 못합니다. 사용자는 여전히 피싱 문자 메시지에 속아 가짜 사이트에 사용자 이름과 비밀번호를 입력하게 됩니다. 사용자가 자격 증명을 입력하면 애플리케이션이 인증 앱에 요청을 보냅니다. 사용자는 신뢰할 수 있는 애플리케이션에 로그인하는 중이라고 믿기 때문에 해당 요청을 승인할 가능성이 높으며, 이로써 인증이 완료됩니다. 공격자는 OTP를 직접 확인하지 못하지만, 공격자의 프록시가 인증된 세션을 제어하게 되어 사용자의 계정에 접근할 수 있습니다. (RTPP 및 푸시 알림 인증에 대한 자세한 내용은 Hacker News의 피싱 플랫폼 관련 기사를 참조하세요.)

또한 인증 앱의 편리한 사용성으로 인해 공격자가 사회 공학 기법을 통해 MFA를 무력화할 수 있는 또 다른 수단이 생겨났습니다. MFA 폭격 또는 MFA 피로 공격에서 공격자는 인증 코드를 요구하는 허위 요청을 여러 차례 보내 대상이 인증 코드를 넘겨주도록 속입니다. 일반적으로 공격자는 자동화 도구를 사용해 대량의 요청을 생성하고, 인증 코드를 입력하라는 알림이나 메시지를 지나치게 많이 보내 피해자를 압박합니다.

MFA 폭탄 공격은 사용자가 SMS 메시지나 하드웨어 장치에서 받은 OTP를 입력하도록 속일 수 있지만, 버튼 한 번만 누르면 쏟아지는 요청을 손쉽게 멈출 수 있기 때문에 인증 앱을 상대로 특히 효과적입니다.

생체 인증

생체 인증은 소유 기반 인증보다 구현 방식이 훨씬 더 다양합니다. 인증 요청을 시작하고 해당 데이터를 인증 서비스로 다시 전달하는 방법이 다양할 뿐만 아니라, 지문부터 홍채 스캔에 이르기까지 생체 인식의 형태도 매우 다양합니다. 스캔에 필요한 하드웨어는 노트북의 지문 인식 카메라처럼 애플리케이션이 실행되는 기기에 내장될 수도 있고, 별도의 하드웨어가 필요할 수도 있습니다. 생체 인식 장치는 운영 체제나 전용 애플리케이션을 통해 제어될 수 있습니다. 이처럼 구현 방식이 다양하기 때문에 모든 취약점을 모델링하기는 어렵습니다. 그러나 생체 인증이 보안성이 더 뛰어나다고 알려져 있음에도 불구하고, 여전히 명백한 취약점이 존재한다는 점을 인식하는 것이 중요합니다.

실제로 소유 요소를 우회하는 데 널리 사용되는 방법 중 하나인 실시간 피싱 프록시는 생체 인증을 우회하는 데도 똑같이 사용될 수 있습니다. 사용자가 공격자가 제어하는 애플리케이션을 신뢰할 수 있는 애플리케이션으로 착각해 로그인하면, 해당 애플리케이션은 사용자의 자격 증명을 이용해 사용자를 대신하여 실제 애플리케이션에 로그인하고 생체 인증 요청을 발생시킵니다. 사용자가 실제 애플리케이션에서 인증하고 있다고 믿는 한 생체 인증을 계속 진행할 가능성이 높으며, 그 결과 공격자가 계정에 접근할 수 있게 됩니다. (W3C에서 제정한 FIDO2 표준인 WebAuthn에는 피싱 방지 기능이 포함되어 있지만, 아직 웹 애플리케이션에서 널리 채택되지는 않았습니다.)

엔드포인트, 애플리케이션 또는 네트워크를 침해하여 생체 인증을 무력화할 수 있는지는 구체적인 구현 방식에 따라 달라집니다. 생체 인증 시스템이 애플리케이션과 동일한 기기에서 실행되는 경우에는 엔드포인트가 침해되면 인증이 무력화될 수 있습니다. 애플리케이션이 생체 인증 프로세스를 관리하는 경우에는 앱이 침해되면 인증이 무력화될 수 있습니다. 또한 생체 인증 정보가 애플리케이션에서 사용하는 것과 동일한 통신 채널을 통해 전송되는 경우에는 네트워크가 침해되면 인증이 무력화될 수 있습니다. 요컨대 생체 인증에는 구체적인 구현 방식에 맞춘 상세한 위협 모델링이 필요합니다.

생체 인증에는 복제와 위조라는 고유한 취약점이 있습니다. 지문을 예로 들어 보겠습니다. 우리는 손이 닿는 거의 모든 매끄러운 표면 곳곳에 지문을 남깁니다. 문손잡이에도, 식당에도, 쓰레기에도 지문을 남깁니다. 이런 표면에서 지문을 채취하는 것은 아주 간단합니다. 경찰 드라마에서 그런 장면을 수도 없이 보았을 것입니다. 지문을 복제하는 것 역시 3D 프린터부터 젤리 곰까지 무엇을 사용하든 아주 간단합니다.

다른 형태의 생체 인식 분야에서는 생체 인식이 어떻게 위조될 수 있는지를 밝히는 보안 연구자들과 위조 방지 기술을 개발하는 업체들 사이에 지속적인 경쟁이 벌어지고 있습니다. 3D 마스크로 공항의 얼굴 인식 장치를 속인 사례가 있지만, 이러한 마스크는 생체 감지 검사와 기타 방법을 통해 탐지할 수 있습니다. 마찬가지로 공격자들은 음성 녹음과 딥페이크 음성 합성 기술을 사용해 음성 인식 시스템을 우회해 왔지만, 녹음 장치로 인해 발생하는 미세한 왜곡을 통해 이러한 위조를 탐지할 수도 있습니다. 홍채 이미지조차 복제한 뒤 미용 콘택트렌즈나 인공 안구를 사용해 위조할 수 있지만, 인체 조직과 합성 소재의 빛 반응 차이를 이용하는 방법을 비롯한 다양한 위조 방지 기술로 이를 탐지할 수 있습니다. 요컨대 생체 인식 장치의 보안은 당시의 위조 및 위조 방지 기술 수준에 따라 달라질 것입니다.

우리가 은둔자처럼 살면서 어떤 표면에도 직접 손을 대지 않는다 해도 공격자는 우리의 생체 데이터를 훔칠 수 있습니다. 공격자들은 멀웨어와 사회 공학 기법을 사용하고 패치되지 않은 취약점을 악용해 수십억 개의 사용자 이름과 비밀번호를 탈취해 왔습니다. 공격자가 비밀번호를 저장하는 데이터베이스를 침해할 수 있다면 생체 정보를 저장하는 데이터베이스에도 분명 침입할 것입니다. 또한 단 한 번의 침해로 생체 정보가 노출되면, 위조 여부를 탐지할 수 있는지에 따라 해당 정보를 인증에 사용하는 것이 더 이상 안전하지 않을 수 있습니다.

복제와 위조에 따른 보안 위험을 더욱 심각하게 만드는 것은 생체 인식으로 측정하는 특성을 쉽게 바꿀 수 없다는 사실입니다. 공격자가 비밀번호를 훔치면 비밀번호를 변경할 수 있습니다. 공격자가 OPT 동글이나 휴대전화를 훔치면 이를 교체하고 시드 값을 재설정할 수 있습니다. 그러나 공격자가 지문, 장문, 얼굴 이미지 또는 기타 생물학적 특성을 입수하고 이를 효과적으로 위조하는 방법을 알아낸다면, 상당한 고통을 감수하지 않고서는 이러한 신체적 특성을 바꿀 수 없습니다.

MFA 보안 강화

MFA는 단일 요소의 비밀번호 기반 인증보다 개선된 방식이지만, 적어도 현재 널리 사용되는 구현 형태에서는 여전히 취약합니다. 따라서 MFA를 보안 여정의 끝이 아니라 새로운 시작으로 생각해야 합니다. 위협 모델링, 코드 검토, 취약점 스캔, 침투 테스트, 레드팀 활동을 비롯한 애플리케이션 보안 모범 사례는 여전히 중요합니다. 위협 모델링을 수행할 때는 ID 저장소부터 물리적 보안, 네트워크 보안, 데이터 보안에 이르기까지 다양한 공격 지점을 고려하여 인증 및 세션 관리 프로세스의 각 측면을 살펴봐야 합니다. 사이버 공격은 가장 취약한 연결 고리를 노릴 가능성이 높습니다. 특히 MFA의 취약점은 자동화 공격 완화, JavaScript 공급망 공격 방어, 위험 맥락 고려 등 더 많은 주의가 필요한 몇 가지 핵심 영역을 보여 줍니다.

네트워크에서 봇 제거

범죄자들은 크리덴셜 스터핑, 실시간 피싱 프록시, MFA 폭격 등 MFA를 겨냥한 주요 공격을 대규모로 수행하기 위해 봇을 활용합니다. 따라서 모든 형태의 MFA를 보호하려면 봇을 차단하는 것이 핵심입니다.

OWASP에서 정의한 크리덴셜 스터핑 공격에서 범죄자는 OWASP이전의 데이터 유출 사고에서 탈취된 인증 정보를 주로 다크웹에서 구매한 뒤, 이를 다른 애플리케이션의 로그인에 대입해 봅니다. 데이터 유출로 수십억 건의 인증 정보가 노출되었기 때문에 범죄자는 봇으로 테스트를 자동화하여 방대한 양의 인증 정보를 시험함으로써 수익을 극대화합니다. 미국 연방수사국, 미국 증권거래위원회, 뉴욕주 법무장관실은 크리덴셜 스터핑의 재정적 위험을 경고했으며, 130개 이상의 규제 기관으로 구성된 협회인 글로벌 프라이버시 총회는 크리덴셜 스터핑을 전 세계적인 개인정보 보호 위협으로 규정했습니다.

크리덴셜 스터핑을 방지하는 것은 비밀번호만 사용하는 인증에서만큼이나 다중 요소 인증(MFA)에서도 중요합니다. MFA의 핵심은 둘 이상의 인증 요소를 사용하는 데 있지만, 첫 번째 요소를 보호하지 못하면 결국 하나의 요소만 남게 됩니다. 공격자가 사용자의 비밀번호를 알아내는 순간 2단계 인증은 단일 요소 인증이 되고, 심층 방어 체계는 무너지게 됩니다.

또한 범죄자들은 비밀번호뿐만 아니라 다른 인증 수단도 공격하는 데 봇을 사용하므로, 봇을 차단하는 것이 매우 중요합니다. 실제로 봇은 MFA를 무력화하는 가장 일반적인 수법인 실시간 피싱 프록시 공격을 성공적으로 수행하는 데 핵심적인 도구입니다. 사용자가 피싱 이메일에 속아 가짜 사이트에 자격 증명을 입력하면, 공격자는 SMS, 인증 앱 또는 정교한 생체 인식 등 어떤 방식이든 MFA 요청을 생성하기 위해 해당 자격 증명을 대상 애플리케이션으로 전달해야 합니다. 이 요청을 신속하고 대규모로 전달하려면 범죄자는 프로세스를 자동화해야 하며, 이는 봇을 통해 요청이 애플리케이션으로 전달된다는 뜻입니다. (봇을 사용해 OTP를 우회하는 서비스에 대한 개요는 Krebs on Security의 게시물 「일회용 비밀번호 가로채기 봇의 부상」을 참조하세요.) 따라서 원치 않는 봇이 자격 증명을 제출하지 못하도록 차단하면 조직은 실시간 피싱 프록시의 효과를 크게 떨어뜨리고, 소유 기반 인증 요소와 생체 기반 인증 요소를 모두 더욱 효과적으로 보호할 수 있습니다.

범죄자가 봇을 사용해 MFA를 공격하는 또 다른 대표적인 방법은 MFA 폭격입니다. 여기서 폭격이란 대량의 로그인 요청을 생성하여 수많은 인증 요청을 유발함으로써, 사용자가 실수로 승인하거나 단순히 성가신 요청을 멈추기 위해 승인하도록 유도하는 것을 의미합니다. 공격으로 수익을 낼 수 있을 만큼 많은 사용자를 대상으로 충분히 많은 요청을 생성하려면 범죄자는 이 과정을 자동화해야 하며, 이는 결국 사이트에 도달하는 로그인 요청이 봇에 의해 생성된다는 뜻입니다.

이러한 사례에서 알 수 있듯이, MFA를 겨냥한 거의 모든 공격이 대규모로 성공하려면 봇에 의존하게 됩니다. 따라서 MFA를 도입하는 조직은 봇 공격 완화 조치를 중요하게 고려해야 합니다.

안타깝게도 많은 조직이 봇의 정교함과 탐지를 우회하기 위해 봇을 매우 빈번하게 개조하는 범죄자들의 집요함을 제대로 인식하지 못하고 있습니다. 오히려 너무 많은 기업이 CAPTCHA, IP 주소 차단 목록, HTTP 헤더 핑거프린팅 등 더 이상 효과가 없는 봇 완화 기법에 의존하고 있습니다.

CAPTCHA는 실제 고객을 귀찮게 할 뿐 봇 차단에는 별다른 효과가 없습니다. 봇은 머신 러닝과 클릭 팜을 활용하는 저렴한 CAPTCHA 해결 서비스를 통해 이러한 퍼즐을 우회할 수 있기 때문입니다. 웹에서 CAPTCHA 해결 서비스를 검색해 보면 가격과 속도를 내세워 경쟁하는 업체를 적어도 12곳은 찾을 수 있습니다. 이러한 서비스를 자세히 알아보려면 F5 인텔리전스 책임자인 댄 우즈가 쓴 나는 인간 CAPTCHA 해결사였다라는 글을 읽어 보세요. 더욱 흥미로운 점은 ChatGPT가 사람을 사회 공학적으로 유도해 자신을 대신하여 CAPTCHA를 풀게 함으로써 CAPTCHA 우회에 성공했다는 것입니다.

봇을 완화하기 위해 WAF 기반 IP 차단 목록에 의존하는 조직에도 이 작업은 마찬가지로 매우 어렵습니다. 봇 제작자에게 봇 탐지를 우회하기 위한 수천만 개의 가정용 IP 주소를 제공하는 서비스가 있습니다. 이러한 서비스는 순환형 가정용 프록시로 홍보됩니다. 많은 기업용 브라우저가 포워드 프록시를 통해 요청을 보내는 것처럼 봇이 프록시에 HTTP 요청을 보내면, 서비스는 웹사이트나 API에 요청을 전송하는 데 사용되는 공인 IP 주소를 지속적으로 변경합니다. 과거에는 봇이 일반적으로 클라우드 서비스 등에서 제공하는 데이터 센터 프록시를 사용했는데, 이러한 프록시는 널리 알려져 있어 쉽게 식별할 수 있었습니다. 하지만 이러한 새로운 프록시 서비스는 고객과 동일한 지역의 가정용 IP 주소를 사용합니다. 인터넷 서비스 제공업체(ISP)의 NAT로 인해 각 IP 주소가 봇과 정상 고객을 동시에 나타낼 수 있으므로, 실제 고객의 접속까지 차단하지 않고 이 모든 IP 주소를 차단하는 것은 현실적으로 불가능합니다. (이러한 서비스가 해당 IP 주소를 확보하는 방법에 관한 연구는 논문 당신의 휴대폰이 나의 프록시를 참조하십시오.)

헤더 순서의 차이를 기반으로 봇을 탐지하는 방법 역시 더 이상 통하지 않습니다. 봇이 이 수법을 알아챘기 때문입니다. 실제로 stealth-puppeteer와 undetected-chromedriver를 비롯한 여러 오픈 소스 프로젝트는 헤더 순서를 올바르게 맞춰 주므로, 이러한 인기 자동화 프레임워크를 사용하면서도 탐지를 쉽게 우회할 수 있습니다.

오늘날 고도화된 봇을 탐지하려면 정교한 신호 수집, 연중무휴 모니터링, 머신 러닝, 그리고 봇의 도구 변경에 대한 신속한 대응이 필요합니다. 도구 변경을 빠르게 탐지하고 대응하는 전용 봇 관리 솔루션이 없다면, 범죄자들은 봇을 이용해 MFA에 대한 공격을 효과적으로 대규모화할 수 있습니다.

JavaScript 공급망 공격 방어

애플리케이션이 침해되면 사실상 어떤 형태의 MFA도 무력화됩니다. 공격자가 애플리케이션에 코드를 삽입하는 순간 모든 방어가 뚫린 것이나 다름없습니다. 공격자는 자격 증명과 기타 MFA 입력값을 가로채고, 세션 식별자를 탈취해 세션을 장악하거나, 애플리케이션에서 직접 데이터를 유출할 수 있습니다. 최신 웹 애플리케이션은 일반적으로 20개가 넘는 JavaScript 파일로 구성되며, 이들 대부분은 서드 파티에서 제공되고 조직의 애플리케이션 보안 팀이 검토하지 않습니다. 따라서 JavaScript 공급망 공격을 통한 애플리케이션 침해 위험은 일반적으로 인식되는 것보다 더 높습니다.

기존의 클라이언트 측 보안 프로토콜은 지나치게 정적이어서 오늘날의 동적 웹 앱을 보호하기 어렵습니다. 콘텐츠 보안 정책(CSP)은 JavaScript 공급망 공격을 방지할 수 있도록 스크립트의 동작을 제한하지만, 타사 공급업체가 CSP 제한에 어긋나는 방식으로 스크립트를 동적으로 업데이트하면 사이트 기능이 너무 쉽게 중단될 수 있습니다. 보안 정책을 위반하는 스크립트는 실행되지 않게 하는 것이 바람직할 수 있지만, 프로덕션 환경에서 이러한 문제가 발생하면 고객에게 막대한 영향을 미칠 수 있습니다. (참고: CSP가 실패하는 이유?) 또 다른 웹 보안 프로토콜인 하위 리소스 무결성(SRI)은 스크립트가 변경될 때마다 스크립트 태그의 해시 값을 업데이트해야 하므로 타사의 동적 콘텐츠에는 적용하기가 훨씬 더 어렵습니다. 사전 통지 없이 변경이 이루어지는 경우에는 이러한 업데이트가 불가능하기 때문입니다. 실제로 SRI는 대부분의 최신 애플리케이션이 의존하는 유형의 스크립트 업데이트를 방지하기 위한 것입니다.

JavaScript 공급망 취약점을 제거할 명확한 통제 수단이 없는 상황에서 조직은 최소한 위험을 모니터링할 방법이라도 창의적으로 모색해야 합니다. 조직은 사이트에서 사용되는 스크립트를 보다 체계적으로 문서화하고, 출처와 변경 빈도를 기준으로 위험도를 평가할 수 있습니다. 태그 관리자를 통해 추가된 스크립트는 위험 평가를 위해 정기적으로 검토해야 합니다. 합성 모니터링, 보고 모드의 CSP 또는 브라우저에서 실행되는 JavaScript 기반 에이전트를 사용하여 스크립트의 동작을 추적하는 모니터링 도구를 활용할 수도 있습니다.

타사 스크립트는 보안 검토를 거칠 기회도 없이 매우 빈번하게 변경되므로, 조직은 스크립트가 민감한 데이터를 읽어 신뢰할 수 없는 도메인으로 유출하는 등의 의심스러운 동작이 있는지 애플리케이션을 지속적으로 모니터링해야 합니다. JavaScript 공급망 공격에 대한 이러한 모니터링 없이는 어떤 형태의 MFA도 사용자를 안전하게 보호할 수 없습니다.

신뢰할 수 있는 사용자를 식별하고 의심스러운 행동에 추가 인증 요구

MFA의 목적은 무의미한 보안 절차로 고객에게 부담을 주는 것이 아니라 보안을 강화하는 데 있어야 합니다. 조직은 상황별 위험에 맞춰 로그인 요구 사항을 조정함으로써 소중한 재방문 고객에게 MFA를 계속 요구하는 대신, 사용자 세션을 연장하여 고객 여정을 간소화하고 개인화된 간편한 경험을 제공할 수 있습니다. 이는 TSA가 TSA PreCheck를 통해 신뢰할 수 있는 여행객의 수속을 신속하게 처리하는 것과 같습니다.

상황별 위험에는 여러 측면이 있습니다:

  • 지리적 위치: IP 주소를 기준으로 볼 때, 사용자가 평소 접속하던 지역에서 로그인하고 있나요?
  • ASN(자율 시스템 번호): IP 주소를 기준으로 볼 때, 사용자가 평소와 동일한 ISP, 즉 자택이나 직장 또는 자주 가는 카페와 관련된 ISP를 통해 로그인하고 있나요?
  • 기기: 사용자가 평소와 동일한 기기에서 로그인하고 있나요?
  • 시간/요일: 사용자가 평소와 같은 시간대나 요일에 로그인하고 있나요? 예를 들어, 오전에는 은행 업무를 보고 저녁에는 게임을 하기 위해 로그인하나요?
  • 행동: 사용자가 평소와 같은 속도로 입력하고, 동일한 패턴으로 마우스를 움직이며, 비슷한 방식으로 복사하고 붙여넣나요?
  • 기능 사용: 사용자가 평소와 동일한 기능을 사용하고 있나요?

사용자가 과거에 지속적으로 양호한 행동을 보였고, 평소와 같은 장소와 기기에서 비슷한 행동 패턴으로 같은 시간대에 접속해 평소 사용하는 기능을 이용한다면 로그인을 요구할 필요조차 없을 수 있습니다. 대신 지속적인 자동 인증을 수행하여 사용자의 편의를 위해 세션을 연장할 수 있습니다. 상황이 평소와 달라 위험도가 높다고 판단되면 애플리케이션에 적응형 정책을 추가하여 보안 요구 수준을 단계적으로 높일 수 있습니다. 예를 들어 비밀번호 로그인을 요구하거나, 2단계 인증(2FA)을 요구하거나, 검토가 필요한 계정으로 표시하거나, SMS 또는 이메일로 로그인 사실을 사용자에게 알리거나, 사용자가 지원팀에 문의하도록 계정을 잠글 수 있습니다.

세션 하이재킹 위험을 무시한 채 상황별 위험과 관계없이 세션 유지 시간을 일정하게 설정하는 경우가 너무 많습니다. 이로 인해 세션 토큰을 가진 사람이라면 누구나 사용자가 접근 권한을 보유한 데이터에 계속 접근할 수 있습니다. 더 안전한 접근 방식은 침해가 발생했다고 가정하고 지속적으로 모니터링하는 제로 트러스트 원칙을 따르는 것입니다. 세션 도중 상황이 바뀌면 세션을 조기에 종료하고 추가 인증을 요구해야 하며, 인증 강도는 상황이 얼마나 달라졌는지와 데이터의 민감도에 따라 조정해야 합니다.

결론

보안은 여정이라는 상투적인 표현처럼, MFA는 그 길에 여러 갈래의 선택지를 만들어 주었으며, 이를 올바르게 구현하면 보안을 실질적으로 강화할 수 있습니다. 하지만 요소가 아무리 많고, 구현이 아무리 잘되어 있으며, 비용이 아무리 많이 들더라도 어떤 형태의 MFA도 여정을 건너뛰고 곧바로 목적지에 도달하게 해 주지는 않습니다. 앞으로도 비밀번호의 종말을 선언하는 주장과 새로운 MFA 기술이 인증 보안을 단번에 완성할 것이라는 과장된 기대가 계속 나오겠지만, 집요한 공격자가 신기술을 우회할 방법은 여전히 존재할 것입니다.

중요 애플리케이션의 보안을 강화하는 여정에서 F5가 든든한 파트너가 되어 드립니다. F5 Distributed Cloud Services에는 봇을 완화하는 Bot Defense, JavaScript 공급망 공격을 모니터링하는 Client-Side Defense, 재방문 사용자를 식별하고 상황별 위험을 정량화하는 Authentication Intelligence가 포함됩니다. F5의 지원을 통해 고객 경험을 최적화하는 동시에 MFA의 보안을 보장할 수 있습니다. F5 Distributed Cloud Services에 대해 자세히 알아보고 등록하여 저희 팀과 상담해 보세요.

2023년 6월 26일 게시