네트워크의 어떤 사용자 계정에 대한 자격 증명(크리덴셜)을 알게 되면 공격자에게 상당한 권한과 영향력이 생깁니다. 공격자가 정상 사용자로 로그인한 뒤에는 다른 시스템으로 가로이동(수평 이동)하고 권한을 상승시켜 랜섬웨어를 배포하거나, 핵심 데이터를 탈취하거나, 중요한 운영을 방해하는 등 다양한 악의적 행위를 수행할 수 있습니다.
대부분의 조직은 이를 알고 있으며 사용자 자격 증명을 보호하기 위한 조치를 취합니다. 특히 Active Directory password policy 를 사용해 비밀번호 길이, 복잡성, 과거 비밀번호 이력 요구 사항을 적용하고, 일정 횟수의 실패한 로그인 시도 후 계정을 잠금 처리하는 정책을 수립합니다. 그렇다면 안전한 거 아닐까요?
안타깝게도 그렇지 않습니다. 이러한 통제가 마련되어 있어도, 많은 사람들이 Winter2017 또는 Password!@# 처럼 쉽게 추측할 수 있는 비밀번호를 선택합니다. 이는 회사의 표준에는 부합하지만 기억하기 쉽기 때문입니다. 이런 약한 비밀번호는 공격자가 네트워크에서 발판을 마련하기 위해 사용하는 가장 단순한 공격 중 하나인 ‘추측(guessing)’에 조직이 취약해지게 만듭니다.
이 전략이 얼마나 잘 작동하는지 놀랄 수도 있습니다. 비밀번호 추측 공격의 예를 함께 살펴본 다음, 취약성을 어떻게 평가하고 사이버 보안 역량을 어떻게 강화할 수 있는지 알아보겠습니다.
엄선한 관련 콘텐츠:
비밀번호 스프레이 공격이 작동하는 방식
비밀번호 password spraying 공격에서는 공격자가 널리 사용되는 비밀번호 1개를 선택한 뒤, 이를 조직 내 각 계정에 로그인하는 데 시도합니다. 대부분의 시도는 실패하지만, 특정 계정에 대해 한 번 실패한 로그인만으로는 잠금(lockout)이 발생하지 않습니다. 모든 시도가 실패하면, 공격자는 준비한 다음 비밀번호로 다시 시도할 뿐입니다. 만약 조직의 단 한 명의 사용자만 선택한 비밀번호를 찾아내면, 공격자는 이미 여러분의 네트워크 안에 들어온 것이며, 피해를 일으킬 준비가 된 상태가 됩니다.
공격자가 비밀번호 스프레이(password spraying) 공격을 수행하는 한 가지 방법은 CrackMapExec 와 함께 사용하는 것입니다. Github에서 다운로드하려면 비용이 드는 유틸리티입니다. CrackMapExec에는 자격 증명 수집(credential harvesting)을 돕기 위한 Mimikatz 모듈(PowerSploit을 통해)이 번들로 포함되어 있습니다. 공격이 어떻게 작동하는지 살펴보겠습니다:
1단계. Active Directory의 비밀번호 정책과 잠금(lockout) 정책을 확인합니다.
잠금이 발생하지 않으려면 공격자는 계정당 몇 번까지 잘못된 비밀번호를 추측할 수 있는지 알아야 합니다. 또한 성공할 가능성이 높은 비밀번호를 고르려면 회사의 AD 비밀번호 정책을 알아야 합니다. CrackMapExec은 이 두 가지를 모두 제공합니다. 다음은 제공되는 출력 예시입니다:
이제 공격자는 이 환경에서 사용자별 비밀번호에 대해 잠금(lockout)을 유발하지 않고 9번까지 추측할 수 있음을 알게 됩니다. 또한 최소 비밀번호 길이가 5자이며 비밀번호 복잡성이 활성화되어 있음을 확인할 수 있습니다. 이 정보는 정책에 의해 거부될 비밀번호에 대해 추측을 낭비하지 않고, 후보 비밀번호에 대한 맞춤 사전(dictionary)을 만드는 데 사용할 수 있습니다. (또는 여러 password lists 중 하나를 사용할 수도 있는데, 이는 data breach에서 얻은 비밀번호 덤프를 사용해 생성한 것입니다. 이런 목록도 GitHub에서 쉽게 구할 수 있습니다.)
2단계. 모든 사용자 계정을 열거(enumerate)합니다.
다음 단계로 공격자는 비밀번호를 대입해볼 계정 목록이 필요합니다. LDAP 쿼리로 모든 사용자 계정의 목록을 쉽게 추출할 수 있으며, 또는 아래와 같이 CrackMapExec의 rid-brute 기능을 사용할 수도 있습니다:
3단계. 각 비밀번호를 모든 사용자 계정에 대해 대입해 봅니다.
모든 AD 사용자 계정 목록(users.txt)과 후보 비밀번호 목록(passwords.txt)이 있으면, 공격자는 다음 명령을 실행하기만 하면 됩니다:
이 명령은 일치하는 결과를 찾을 때까지 각 계정에 대해 각 비밀번호를 계속 시도합니다:
취약한 비밀번호 찾기
보시는 것처럼, 환경 내에서 접근 권한이 없는 공격자도 AD 계정을 손쉽게 손상시키는 매우 효과적인 방법이 있습니다. 바로 평문 비밀번호를 추측하는 것입니다. 아마도 여러분의 조직이 이러한 공격에 얼마나 취약한지 궁금하실 수 있습니다.
확인하려면 DSInternals 명령 Test-PasswordQuality을(를) 사용할 수 있습니다. 이 명령은 모든 사용자 계정의 비밀번호 해시를 추출한 다음, 약한 비밀번호 사전에 포함된 비밀번호 해시와 비교합니다.
다음은 분석을 실행하기 위해 실행할 수 있는 명령입니다. 원격으로 실행할 수 있으며, DCSync Mimikatz attack과 유사한 방식으로 DC 복제를 사용해 비밀번호 해시를 추출합니다.
출력 보고서 상단에는 되돌릴 수 있는(복호화 가능한) 암호화로 저장된 계정 목록이 표시됩니다. 이 주제는 이전 글인 last post에서 다룬 바 있습니다.
그 다음 보고서에는 사전에서 비밀번호가 발견된 모든 계정이 나열됩니다:
Netwrix가 약한 비밀번호에 맞서 방어하는 데 어떻게 도움을 드릴 수 있는지
Microsoft 비밀번호 정책을 사용하면 일부 제약을 설정할 수는 있지만, 공격자가 쉽게 추측할 수 있는 비밀번호를 사용자가 선택하지 못하도록 막기에는 충분하지 않습니다. Netwrix는 Active Directory security solution을 제공하여 강력한 비밀번호를 요구할 수 있게 합니다. 더 나아가 Active Directory를 처음부터 끝까지(전 구간에 걸쳐) 안전하게 보호할 수 있습니다. 다음을 수행할 수 있습니다:
- 약한 비밀번호뿐만 아니라 과도한 권한, 섀도우 관리자, 사용하지 않는 계정 등 Active Directory의 취약점을 식별하고 완화할 수 있습니다.
- 강력한 비밀번호 정책을 적용하고, AD 구성과 권한을 제어하여 자격 증명(credential) 탈취를 방지합니다.
- 고급 위협까지도 탐지하여, 악의적인 행위자가 임무를 완수하기 전에 차단합니다.
- 자동화된 대응 조치로 보안 침해를 즉시 차단하여 비즈니스에 미치는 피해를 최소화하세요.
- 악의적이거나 기타 부적절한 변경 사항을 최소한의 중단 시간으로 롤백하거나 복구하세요.
공유하기
더 알아보기
저자 소개
Jeff Warren
최고 제품 책임자
Jeff Warren은 Netwrix의 제품 포트폴리오를 총괄하며, 보안에 초점을 둔 제품 관리 및 개발 분야에서 10년이 넘는 경험을 바탕으로 기여하고 있습니다. Netwrix에 합류하기 전 Jeff는 Stealthbits Technologies에서 제품 조직을 이끌었으며, 소프트웨어 엔지니어로서의 경험을 활용해 혁신적이고 엔터프라이즈 규모의 보안 솔루션을 개발했습니다. 직접적인 실행 중심의 접근 방식과 까다로운 보안 과제를 해결하는 데 강점을 지닌 Jeff는 실제로 효과가 있는 실용적인 솔루션을 구축하는 데 집중하고 있습니다. 그는 델라웨어 대학교에서 정보 시스템(Information Systems) 학사 학위를 취득했습니다.