Akamai Diversity

Akamai 블로그

API의 어두운 이면 (2부)

라이언 바넷(Ryan Barnett), Akamai 수석 보안 연구원

엘라드 슈스터(Elad Shuster), Akamai 선임 보안 연구원


Akamai 위협 연구팀은 인증정보 도용 공격을 연구하는 동안 API 기반 로그인이 얼마나 광범위하게 도입되었는지 확인하고 이러한 트렌드가 공격자와 공격 캠페인에 어떤 영향을 미치는지 파악하기 위해 웹 로그인을 분석했습니다. API 기반 로그인은 여러가지 이유로 인증정보 도용 공격의 주요 타겟이 되고 있는데 이는 사실 놀라운 일이 아닙니다.

핵심 포인트:

  • 모든 API 인증 시도의 30%가 악성입니다.
  • API 인증 엔드포인트에서 실행된 인증정보 도용 공격은 일반 웹 기반 인증 애플리케이션보다 4배 더 많은 사용자 인증정보를 처리합니다.
  • API 인증 엔드포인트에서 실행된 인증정보 도용 공격은 4.75% 더 많은 봇넷 클라이언트를 활용할 수 있습니다.

인증정보 도용 배경

애플리케이션이 표준 웹 요청에서 API 콜로 마이그레이션하면서 로그인은 가장 눈에 띄는 부분 중 하나입니다. 거의 모든 웹 및 모바일 애플리케이션은 사용자가 애플리케이션에 로그인하도록 요청하는 방식으로 사용자 상태를 유지 관리합니다. 기존의 로그인 요청은 사용자가 HTML 페이지에서 '로그인' 버튼을 클릭할 때 제출되는 표준 HTTP POST 요청이었습니다. AJAX, JavaScript 프레임워크(예: jQuery, Angular), 모바일 애플리케이션 프레임워크 사용이 증가하면서 로그인 요청이 API 콜로 전환됐습니다.

Akamai는 사이버 공격으로부터 고객을 지속적으로 보호하려는 노력의 일환으로 자사의 Kona 보안 제품을 사용하는 고객들을 대상으로 악성 로그인 요청을 모니터링하고 분석해 왔습니다. 이런 공격은 인증정보 도용 또는 "크리덴셜 스터핑"으로 알려져 있는데 Akamai는 Web Application Defender's Field Report: Account Takeover Campaigns SpotlightSSHowDowN: Exploitation of IoT devices for Launching Mass-Scale Attack Campaigns를 비롯하여 이 주제에 관한 여러 간행물을 이미 발간했습니다.

애플리케이션 로그인 기법 통계

Akamai는 이 연구를 진행하는 동안 자사의 CSI(Cloud Security Intelligence) 플랫폼에서 하루 동안의 데이터를 분석했습니다. 이 데이터는 27,882,776개의 IP 주소에서 48,702개의 인터넷 호스트를 대상으로 발생한 총 413,392,955건의 1일 로그인 요청이 포함합니다. Akamai가 모니터링한 애플리케이션 중 적어도 42%는 로그인을 위해 웹 및 모바일 API 콜을 사용하고 있었습니다. 이 애플리케이션은 JSON, XML, SOAP, 기타 API 관련 메시지 포맷을 사용해 사용자 인증정보를 웹 애플리케이션으로 전송했습니다. 표준 웹 기반 인증을 사용하는 애플리케이션은 전체의 55%에 불과했고 두 가지 방법을 모두 사용하는 비율은 3%였습니다.

API 기반의 로그인 요청 중 78%는 모바일 클라이언트에서 발생했는데 여기에는 모바일 브라우저, 모바일 앱의 HTML 렌더링 구성요소, 네이티브 모바일 앱이 포함됩니다. 나머지 22%는 표준 데스크톱 브라우저(AJAX API 콜의 일부분)와 IoT 디바이스(대부분 게임 콘솔)가 차지했습니다.


데스크톱 브라우저의 AJAX API 콜을 자세히 살펴본 후에 이들 중 대부분이 '동일한 도메인(Same Domain)' AJAX 콜이었다는 점을 관측했습니다. 이는 사이트 내부에서 실행되는 Javascript 코드에 의해 로그인 API 콜이 발생했고 동일한 도메인에 호스팅된 API 엔드포인트에 접촉했다는 것을 의미합니다.

'동일한 도메인' vs '크로스 도메인'(AJAX) 로그인 API 콜은 보안 측면에서 흥미로운 문제로 이어집니다. 자동 공격 툴을 차단하는 API 보안 기능은 JavaScript 삽입 또는 일부 클라이언트 핑거프린팅 코드에 의존합니다. JavaScript 삽입은 기본적으로 클라이언트와 서버 코드를 모두 컨트롤할 때 가능합니다. 하지만 여러 써드파티가 API를 사용하는 경우 API 콜은 잠재적으로 '크로스 도메인' 되고, 클라이언트에서 JavaScript 코드를 실행하는 옵션은 가능하지 않을 수도 있습니다. 신용카드 결제 트랜잭션을 처리하는 모바일 API를 제공하는 회사를 예로 들어보겠습니다. 이 API는 신용카드 API 회사가 컨트롤하지 않는 다양한 모바일 앱에서 이용될 수 있습니다. 따라서 JavaScript 삽입이나 다양한 모바일 클라이언트 앱에서 실행되는 모바일 디바이스 핑거프린팅 솔루션을 적용하기가 매우 어려울 수 있습니다. 이 교차 도메인 로그인 아키텍처는 보안 옵션을 제한합니다.


인증정보 도용 공격 통계

Akamai가 분석한 로그인 중 30%는 대규모 인증정보 도용 공격의 일환으로 실행된 악성 로그인인 것으로 밝혀졌습니다. 로그인 시도의 거의 1/3이 악성 로그인이라는 매우 놀라운 결과입니다.

Akamai 데이터에 따르면 대규모(하루 수백만의 고유 공격 소스) 인증정보 도용 공격의 경우 공격자의 88%가 공격 중 특정 시점에 API 콜을 표적으로 삼았습니다. 반면 표준 웹 인증을 도용한 공격자는 22%에 불과했습니다. 물론 공격하는 애플리케이션에 따라 2가지를 모두 공격한 경우도 있었습니다.

API 기반 인증정보 도용 공격과 표준 웹 인증 공격 사이의 가장 분명한 차이점은 애플리케이션당 로그인을 시도한 평균 계정의 수입니다. 표준 웹 형태의 경우 1백만 건의 도용 시도가 이뤄진 반면 API 애플리케이션 로그인에 대해서는 애플리케이션당 4배 많은 거의 4백만 건의 시도가 관측되었습니다.


인증정도 도용 시나리오에서 일부 '자동화 방지' 및 '안티 봇' 솔루션이 의존하는 일부 기능이 주요 원인일 가능성이 높습니다. 대부분의 솔루션은 디바이스 핑거프린팅, CAPTCHA, JavaScript 삽입에 의존합니다. 이러한 탐지 기법은 표준 웹 생태계에서 상당히 유용할 수 있지만, 모바일 환경과 IoT 디바이스에는 효과적이지 않을 수 있습니다.

이 분야의 일부 벤더사(Akamai 포함)는 모바일 애플리케이션에서 사람과 봇을 구별할 수 있는 솔루션을 제공합니다. 이와 같은 탐지 기능을 갖추려면 모바일 애플리케이션 개발자가 벤더사가 제공하는 SDK를 모바일 앱 코드에 포함시켜야 합니다. 이 SDK는 모바일 디바이스 기반 지표와 텔레메트리를 수집하고 분석합니다. 여기에는 글로벌 위치 데이터, 터치스크린 동작, 화면 해상도 및 방향, 접속 유형 등 다양한 측정치가 포함됩니다.

API 기반 공격의 핵심은 수천 개의 봇 노드에 걸쳐 공격 워크로드를 손쉽게 분산시키는 능력입니다. API 기반 로그인은 프로그래밍 방식으로 진행되기 때문에 공격자가 분산된 봇넷을 매우 쉽게 구축할 수 있고 이 봇넷은 수천개의 노드에 걸쳐 공격을 분산시킵니다. 이런 방식은 인증정보 도용 공격에서 매우 중요합니다. 로그인 시도가 3번 실패하면 애플리케이션은 사용자 로그인을 차단합니다. 따라서 하나의 노드가 24시간 동안 3~5건의 로그인 요청을 발생시키는 '로우 앤 슬로우(low & slow)' 방식을 사용할 수밖에 없습니다.

Akamai 연구가 이런 내용을 강력하게 뒷받침합니다. API 기반 공격 캠페인에는 평균 19,000개의 고유 IP 주소가 사용되는 반면, 표준 웹 기반 로그인을 공격하는 캠페인은 4,000개의 IP 주소만 사용됩니다. API 기반 로그인을 공격할 때 사용되는 봇 노드 수가 4.75배 더 많습니다.


인증정보 도용

크리덴셜 스터핑 공격을 할 수 있는 자동화 툴은 다수 존재합니다. 또한, 미리 설정된 크리덴셜 스터핑 파일을 판매하는 대규모 커뮤니티가 형성되어 있는 경우도 있습니다. 가장 널리 알려진 인증정보 도용 툴은 SentryMBA입니다. 

<SentryMBA 스크린샷>

지하 웹사이트를 탐색하고 판매 중인 미리 설정된 파일을 살펴보면서 아래 그림에 표시된 것처럼 API 로그인에 대한 캠페인 설정 파일이 표준 웹 형태를 표적으로 삼는 캠페인 설정 파일보다 더 높은 가격에 거래된다는 점을 확인했습니다.

<인증정보 도용에 사용되는 SentryMBA 설정 가격>

가격이 더 높은 이유는 API 인증을 보다 빠른 속도로 진행할 수 있고 기존의 자동화 차단 메커니즘과 관련된 문제 때문입니다.

 

결론

API 인증은 인증정보 도용 공격자에게 매력적인 표적입니다. API 포트폴리오를 인증정보 도용 공격으로부터 방어하려면 보안 솔루션을 선택할 때 다음과 같은 기능이 있는지 반드시 확인해야 합니다.

  1. 웹 및 모바일 API 콜 메시지를 분석 및 이해하고 적절한 보안 및 탐지 기법을 가장 정밀한 방식으로 적용할 수 있어야 합니다. 여기에는 XML 기반 메시지, JSON 메시지, RESTful 서비스가 포함됩니다.
  2. 자동화된 악성 공격을 구분할 수 있어야 합니다. 특히, 웹 브라우저(네이티브 모바일 앱, 게임 콘솔, IoT 디바이스)가 사용되지 않는 API 환경에서 봇에 의해 발생되는 공격을 분별할 수 있어야 합니다.
  3. API의 보안 이벤트에 대한 로깅과 정밀한 가시성 뿐만 아니라 특정 API 엔드포인트 및 기법에 대한 인사이트를 제공해야 합니다.
  4. API 엔드포인트별로 별도의 보안 정책을 적용하고 정밀한 애플리케이션 레이어 보안 기능과 전송률 제어 기능을 갖추고 있는지 확인해야 합니다. 또한, 외부 사용자에게 노출된 모든 API에 대한 가시성을 제공하고 관리 편의성이 높은 API 보안 솔루션이어야 합니다.
  5. 클라이언트 평판 및 인텔리전스에 대한 피드를 제공해야 합니다. 여기에는 특히 모바일, 웹, IoT 애플리케이션에서 사용되는 API 콜을 통해 인증정보 도용 공격을 일으키는 악의적 공격자에 대한 가시성이 포함됩니다. 이런 피드는 기존의 보안 기능으로 방어할 수 없는 부분에 대해 안전망 또는 최종 방어선 역할을 합니다.

 

고지사항

본 문서에 제공된 연구 내용과 데이터는 오르 카츠(Or Katz)와 애론 프리드만(Aharon Fridman)이 공동 수집 및 분석한 데이터를 기반으로 오리 시걸(Ory Segal)이 원본 초안을 작성했습니다.

Leave a comment (코멘트 남기기)