Akamai Diversity

Akamai 블로그

인증정보 도용 위협 효과적으로 방어하기

자주 방문하는 웹사이트에서 로그인할 때 사용자 이름과 비밀번호를 1~2번 잘못 입력한 적이 있으신가요? 틀림없이 있을 것입니다. 그렇다면 3번 연속 잘못 시도한 적이 있으신가요? 이 경우 대부분의 보안 웹사이트는 사용자의 의도를 확인하는 질문을 시작합니다.

보안 측면에서 비정상적인 사용 패턴이 탐지되면 웹사이트는 잘못된 로그인 시도를 차단하고 신뢰 여부를 판단해야 합니다.

하지만 공격자가 로그인을 한 번만 시도하는 경우는 어떨까요? 아니면 공격자가 대규모 감염된 컴퓨터와 디바이스를 이용해서 인증정보 도용 공격을 실행하고 하나의 디바이스가 한 번의 로그인만 시도하는 경우는 어떨까요?

2016년 12월에 Akamai 위협 연구팀은 점차 확산되고 있는 공격 방법인 인증정보 도용 악성 활동에 관한 연구를 실시했습니다. 이 연구는 인증정보 도용 공격이 성공을 거두고 있는 이유와 최신 보안 기능을 통해 이 공격을 탐지하기 어려운 이유를 조사하고 공격자들이 사용하고 있는 기법에 대해 분석했습니다.

이 게시물에서는 분석 내용을 간략하게 소개하고 탐지 역량을 개선할 수 있는 솔루션을 제안합니다.

Part I: 소개 - 인증정보 도용 공격 분석

초기 결과

분석의 첫 단계에서 인증정보 도용 공격을 받은 이커머스 웹사이트를 모니터링했습니다. 악성 봇넷이 24시간 동안 약 1만3000개의 IP를 통해 진행한 공격입니다. 다음은 몇 가지 연구 결과입니다.

  • 봇넷 IP의 약 70%는 스페인, 한국, 대만의 인터넷 서비스 사업자 3곳에 속해 있었습니다.
  • 봇넷은 1만2936개의 IP 주소로 구성되어 있었습니다.
  • 24시간 동안 총 16만7039건의 로그인을 시도했습니다.
  • 12만 3909개의 계정을 표적으로 삼았습니다.
  • 전체 봇넷이 시간당 평균 6902건의 로그인을 시도했습니다.
  • 하나의 봇넷이 2시간마다 평균 1번 로그인을 시도했습니다.

Improving Credential Abuse Threat Mitigation Fig1.png

그림 1 - 24시간 동안의 봇넷 활동

 

인증정보 도용 공격을 방어하는 방법

인증정보 도용 공격은 정보 유출 사건에서 노출된 사용자 이름과 비밀번호를 사용합니다. 무차별 대입(brute force) 공격은 동일한 계정에 대해 비밀번호만 바꿔가면서 여러 차례 로그인을 시도합니다. 반면 인증정보 도용 공격은 이미 유출된 인증정보를 사용해 하나의 계정에 한 번만 로그인을 시도합니다.

공격 방식에 따라 공격을 탐지하고 방어하는 방법 역시 달라져야 합니다. 무차별 대입 공격의 경우 비정상적인 로그인 시도가 탐지되면 공격의 표적이었던 계정을 잠가 계정 탈취를 차단할 수 있습니다.

인증정보 도용 공격의 경우 한 번의 로그인 시도가 발생했다고 해서 계정을 잠그는 것은 위험합니다. 따라서 여러 개의 계정에 대해 비정상적인 로그인을 시도하는 공격 리소스를 탐지해야 합니다.
이 계정 중의 일부는 동일한 웹사이트에 존재하지 않기도 합니다.

오프라인 위협 인텔리전스 분석은 악성 활동을 효과적으로 찾아낼 수 있습니다. 하지만 오프라인 분석은 웹사이트에 이미 접속한 후에 악성 로그인 시도에 적극적으로 대응할 수 없다는 한계가 있습니다. 인증정보 도용 공격을 차단하려면 런타임(실행시간) 예방 솔루션을 도입해야 합니다.
이는 대부분의 보안 벤더사가 이미 제공하고 있는 기능입니다. 많은 보안 제품은 로그인 시도를 모니터링하는 시간 간격을 사전에 미리 정의합니다. 그리고 공격 리소스(IP 주소)가 임계치에 도달하면 차단 기능이 활성화됩니다.

하지만 만약...

하지만 만약 보안 기능이 탐지할 수 없는 낮은 수준의 로그인 시도를 전송한다면 어떻게 될까요?
5분 탐지 메커니즘의 슬라이딩 윈도우를 사용했을 때 탐지하지 못한 로그인 시도는 어떤 영향을 끼치게 될까요? 웹사이트에 24시간 동안 한 번만 로그인 시도를 전송하는 공격 리소스를 어떻게 탐지할 수 있을까요?

이러한 질문에 답하고 위협 환경에 대한 이해도를 높이기 위해 앞에서 언급한 공격 캠페인을 심층 분석했습니다. 1만2936개의 IP로 구성된 봇넷이 24시간 동안 일으킨 로그인 시도 공격도 여기에 포함됩니다.

Part II: 보안 컨트롤의 한계 - 봇넷 IP 활동 분석

1단계: - 공격 리소스 활동 검토

IP 주소별로 로그인 시도를 분석한 결과 그림 2의 막대 그래프가 보여주는 것처럼 대부분의 IP
주소는 24시간 동안 20회 미만의 로그인 시도를 전송했습니다.

Improving Credential Abuse Threat Mitigation Fig2.png

그림 2 - 봇넷 시각화: 24시간 동안 모니터링한 12000개의 IP 활동, 로그인 횟수별 IP 주소

 

동일한 데이터를 다른 관점에서 살펴보기 위해 로그인 시도 건수에 따라 전체 봇넷의 IP 비율을 누적해 보았습니다. 그림 3의 막대 그래프는 봇넷 IP 비율 증가에 따라 로그인 시도 건수를 자세히 보여줍니다. 전체 봇넷 IP의 10%는 1번의 로그인 시도를 전송하고, 65%는 최대 10번, 92%는 최대 20번의 로그인 시도를 전송합니다. 따라서 공격자가 하나의 웹사이트에 대해 낮은 건수의 로그인 시도를 전송할 때 이를 탐지하기 어렵습니다.

Improving Credential Abuse Threat Mitigation Fig3.png

그림 3 - 로그인 시도 건수별 봇넷 구성원 대비 IP 누적 비율

 

2단계 - 봇넷 IP 탐지 범위 측정

시간 간격별 탐지 범위를 평가하기 위해 슬라이딩 윈도우 메커니즘을 시뮬레이션했고 1~60분
사이의 모든 시간 간격을 검증했습니다. 24시간 동안의 로그인 시도를 기준으로 분석했고 악성 활동을 탐지하는 기준으로 5건의 로그인 시도를 임계치로 사용했습니다.

Improving Credential Abuse Threat Mitigation Fig4.png

그림 4 - 슬라이딩 윈도우 탐지 범위(1~60 사이)

 

그림 4의 표는 5분의 슬라이딩 윈도우를 사용하면 봇넷 IP의 3%를 탐지할 수 있다는 것을 보여줍니다. 30분일 경우 봇넷 IP의 16%를 탐지하고, 60분은 27%만 탐지할 수 있습니다. 

3단계 - 공격 영향 평가

2단계에서는 탐지된 봇넷 IP의 범위를 측정했습니다. 이미 매칭된 봇넷 IP(로그인 시도 5회를 매칭 기준으로 사용)에서 생성되는 로그인 시도에 대한 탐지 범위를 측정했습니다. 이 평가를 통해 로그인 시도를 탐지하지 못했을 때 발생하는 여파를 보다 정확하게 이해할 수 있습니다.

Improving Credential Abuse Threat Mitigation Fig5.png

그림 5 - 슬라이딩 윈도우 로그인 시도 탐지 범위(1~60)

 

그림 5의 로그인 시도 그래프는 5분 슬라이딩 윈도우를 사용할 때 봇넷 로그인 시도의 38%를 탐지하고, 30분은 51%, 60분은 64%만 탐지할 수 있다는 것을 보여줍니다.

지금까지 배운 교훈

지금까지 여러 단계에 걸쳐 분석한 결과에 따르면 로그인 시도 임계치를 5건으로 보수적으로 설정하면 슬라이딩 윈도우를 60분으로 잡아도 탐지 범위가 줄어든다는 것을 알 수 있습니다.

  • 봇넷 IP의 42%만 탐지합니다.
  • 로그인 시도 공격의 1/3은 탐지가 되지 않기 때문에(로그인 시도의 64%만 탐지됨) 웹사이트가 공격에 취약해집니다.
  • 봇넷 IP의 10%는 로그인 시도를 한 번만 전송하므로 이러한 IP를 차단하는 것은 거의 불가능합니다.

보안 기능이 근시안적인 이유는 무엇일까요?

IP 주소를 모니터링할 때 5분 이내에 로그인을 5회 시도한다면 충분히 악성 활동으로 판단할 수 있습니다. 하지만 5시간 동안 로그인 시도가 5회 발생했다면 여러 사용자가 동일한 IP 주소를 공유하면서 발생한 정상 사용자 행동일 수 있습니다. 또한, 런타임 모니터링 메커니즘은 CPU와 메모리를 소비합니다. 따라서 로그인 활동을 모니터링하는데 사용되는 시간 프레임 동안에 보안 기능을 제한합니다. 이 시간 프레임은 대부분의 경우 60분을 초과하지 않습니다.

공격자들은 이런 제한을 잘 알고 있기 때문에 탐지하기 어려운 공격 기법을 사용합니다. 공격자는 크로스 표적 공격을 실행하는 대규모 봇넷을 사용하며, 이와 동시에 각 봇넷 IP가 표적 웹사이트에 대해 적은 건수의 로그인 시도를 생성하도록 합니다. 공격자는 이 기술을 사용해 탐지 레이더망을 빠져나갈수 있고 높은 수준의 공격 효율성을 유지할 수 있습니다.

지금까지 보안 도전과제에 대해 알아봤고 이제 이를 해결할 수 있는 솔루션에 대해 살펴보겠습니다.

Part III: 솔루션 - 크로스 사이트 분석

지금까지 살펴본 것처럼 하나의 웹사이트만 분석하면 탐지 범위가 충분히 확보되지 않습니다. 하지만, Akamai CSI(Cloud Security Intelligence) 플랫폼을 통해 여러 고객사의 웹사이트에서 발생한 로그인 시도를 교차 분석하면서 관점을 확대한 결과, 봇넷이 71개 웹사이트를 표적으로 삼는 것을 확인했습니다.

모든 표적 웹사이트에 대한 로그인 시도를 위에서 언급한 것과 동일한 봇넷 분석 기술을 사용해 분석한 결과 의미 있는 결과를 도출할 수 있었습니다.

크로스 사이트 캠페인

단일 사이트와 모든 표적 웹사이트에 대한 봇넷의 로그인 시도 활동을 비교하여(그림 6) 악성 봇넷 활동의 실제 규모를 확인했습니다. 즉, 단일 사이트의 경우 평균 6902건의 로그인 시도가 있었고 모든 표적 웹사이트의 경우 20만3793건의 로그인 시도가 발생했습니다.


Improving Credential Abuse Threat Mitigation Fig6.png

그림 6 - 24시간 동안 집계된 단일 사이트와 크로스 사이트의 봇넷 활동 비교

 

1단계: - 공격 리소스 활동 검토

각 IP 주소에서 생성되는 로그인 시도를 살펴보면(그림 7) 1만2000건 이상의 로그인 시도를 트리거하는 IP 주소도 있지만, IP 주소별 로그인 시도 건수는 여전히 낮습니다.


Improving Credential Abuse Threat Mitigation Fig7.png

그림 7 - 크로스 사이트: 로그인 횟수별 IP 주소

 

IP 주소별 크로스 사이트 로그인 시도 누적 비율(그림 8)을 살펴보면 봇넷 IP의 2%만 로그인 시도를 1회 전송하고, 17%는 최대 10회, 31%는 최대 20회, 92%는 단일 사이트에서 최대 20회 전송하는 것을 알 수 있습니다.

Improving Credential Abuse Threat Mitigation Fig8.png

그림 8 - 크로스 사이트: 로그인 시도 횟수별 봇넷 IP 대비 IP 누적 비율

 

2단계 - 봇넷 IP 탐지 범위 측정

Improving Credential Abuse Threat Mitigation Fig9.png

그림 9 - 크로스 사이트: 1~60분 사이의 슬라이딩 윈도우 탐지 범위 

그림 9의 그래프는 5분 슬라이딩 윈도우를 사용할 때(5회 로그인 시도 임계치 적용) 봇넷 IP의 34%를 탐지할 수 있다는 것을 보여줍니다. 30분은 71%, 60분은 81%를 탐지할 수 있습니다. 단일 사이트의 경우 27%만 탐지했던 것에 비해 크게 증가한 수치입니다.

3단계 - 공격 영향 평가

Improving Credential Abuse Threat Mitigation Fig10.png

그림 10 - 크로스 사이트: 1~60 사이의 슬라이딩 윈도우 로그인 시도 탐지 범위

 

그림 10의 로그인 시도 탐지 범위 그래프에서는 거의 완벽한 탐지 범위를 확인할 수 있습니다.
5분 슬라이딩 윈도우를 사용할 때 봇넷 로그인 시도의 94%를 탐지하고, 30분은 99.14%, 60분은 99.69%를 탐지할 수 있습니다.

요약

약 1만3000개의 IP로 이루어진 봇넷의 공격은 오늘날의 위협 환경에서 충분히 발생 가능합니다. Akamai의 위협 연구팀은 이런 공격 캠페인을 매주 수 백건씩 모니터링하고 있습니다.

인증정보 도용 공격이 증가하고 있으며 공격자가 더 많은 계정을 탈취하기 위해 노력하고 있다는 것을 알 수 있습니다. 공격자의 목표는 탈취한 계정을 블랙마켓에서 판매해 수익을 거두는 것입니다.

이 게시물에서 살펴본 것처럼 이제 온프레미스 보안 방식에서 벗어나 클라우드 크로스 사이트 기능을 활용하는 멀티레이어 방어 전략으로 전환해야 할 때입니다. 이를 통해 인증정보 도용 공격을 방어할 때 큰 효과를 거둘 수 있습니다.

Leave a comment (코멘트 남기기)