Mimikatz에서 ChangeNTLM 및 SetNTLM 명령을 사용하면 Mimikatz, 공격자가 사용자 비밀번호를 조작하고 Active Directory에서 권한을 상승시킬 수 있습니다. 이제 이러한 명령과 각 명령이 수행하는 작업을 살펴보겠습니다.
ChangeNTLM
ChangeNTLM 명령은 비밀번호 변경을 수행합니다. 이 명령을 사용하려면 계정의 현재 비밀번호 또는 NTLM 비밀번호 해시를 알아야 합니다. NTLM 비밀번호 해시는 평문 비밀번호보다 훔치기가 훨씬 더 쉽습니다. 기본적으로 사용자의 비밀번호를 변경할 수 있는 권한은 Everyone에 부여되므로, 이 명령은 특별한 권한 없이도 모든 사용자가 실행할 수 있습니다.
다음은 현재 비밀번호 해시만 알고 사용자의 비밀번호를 변경하기 위해 해당 명령을 사용하는 예입니다:
이 작업은 도메인 컨트롤러 이벤트 로그에 이벤트 ID 4723을 생성합니다.
SetNTLM
이 명령은 비밀번호 재설정을 수행합니다. 이 명령을 실행하려면 사용자의 현재 비밀번호를 알아야 하는 것은 아니지만, 해당 계정에 'Reset Password' 권한이 있어야 합니다. 이 권한은 기본적으로 Everyone에게는 부여되지 않습니다.
다음은 해당 명령을 사용해 사용자의 비밀번호를 재설정하는 예시입니다:
이 작업을 수행하면 도메인 컨트롤러 이벤트 로그에 Event ID 4724가 생성됩니다.
공격 시나리오: ChangeNTLM
사용자의 비밀번호 해시가 손상되면 공격자는 pass-the-hash attacks를 수행할 수 있습니다. 그러나 이러한 공격은 일반적으로 시스템과 애플리케이션에 대한 명령줄 액세스로 제한됩니다. Outlook Web Access (OWA), SharePoint 또는 원격 데스크톱 세션에 로그인하려면 공격자가 사용자의 평문 비밀번호가 필요할 수 있습니다. 공격자는 네 가지 빠른 단계로 공격을 수행하고 흔적을 지울 수 있습니다:
- 계정의 NTLM 해시를 손상(탈취)합니다.
- 해시를 사용해 비밀번호를 변경합니다.
- 새 평문 비밀번호를 사용해 원하는 애플리케이션 또는 서비스에 액세스합니다.
- 탈취한 해시를 사용해 비밀번호를 이전 값으로 되돌립니다.
이 공격은 손상(탈취)된 계정을 추가로 악용하는 데 매우 유용합니다.
공격 시나리오: SetNTLM
이 시나리오에서 공격자는 도메인에 대한 접근 권한이 제한된 계정을 손상시켰습니다. 해당 공격 경로를 악용하려면 사용자의 암호를 재설정해 계정을 장악해야 하지만, 공격자는 암호를 변경하는 방식으로 사용자의 계정이 손상되었다는 사실을 사용자에게 알리고 싶지 않습니다. 그렇다면 공격자는 대상이 손상된 후 사용자의 암호를 재설정한 다음 다시 이전 값으로 되돌리려면 어떻게 해야 할까요? SetNTLM을 입력하세요.
공격자는 다음과 같은 기본 경로를 따를 수 있습니다:
- Bloodhound를 사용해 Active Directory 권한과 암호 재설정을 활용하는 공격 경로를 식별합니다.
- 공격 경로를 악용하고 필요에 따라 암호를 재설정합니다.
- 특권 액세스가 확보되면 Mimikatz 를 사용하여 손상된 모든 계정의 NTLM 비밀번호 기록을 추출합니다.
- SetNTLM을 사용하여 이전 NTLM 해시를 계정에 적용하면, 비밀번호를 원래대로 되돌릴 수 있습니다.
참고: 동일한 작업은 Set-SamAccountPasswordHash 명령으로도 수행할 수 있습니다.
예시
다음과 같은 공격 경로가 있다고 가정해 보겠습니다. 이 경로를 통해 현재 사용자에서 3번의 비밀번호 재설정을 거쳐 Domain Admin으로 이동하게 됩니다:
어떤 계정을 침해해야 하는지 이제 알게 되었으므로, 사용자에게 경고가 울리지 않도록 가능한 한 빠르게 공격을 실행하려고 합니다. 기본적인 PowerShell을 사용해 암호 재설정 공격 경로를 스크립트로 구현할 수 있습니다. 아래 스크립트는 암호를 입력으로 받아 공격 체인을 따라가며, 목표인 Domain Admin에 도달할 때까지 가는 동안 각 침해된 사용자를 가장합니다:
다음으로, Domain Admin으로 새 PowerShell 세션을 시작한 후 DCSync 작업을 수행하여 모든 계정의 NTLM 암호 기록을 가져옵니다:
그다음에는 SetNTLM 명령을 사용해 암호를 이전 값으로 다시 설정합니다:
이제 끝입니다. 우리는 이제 Domain Admin이 되었고, 그 과정에서 사용자들이 자신의 계정이 침해되었음을 깨닫지 못하도록 가능한 한 흔적을 감추었습니다.
SetNTLM 및 ChangeNTLM 공격 탐지 및 방지
공격 탐지
공격자가 ChangeNTLM 공격을 사용하면 4723 이벤트가 생성되지만, 아래와 같이 Subject와 Target Account는 서로 다르게 나타납니다. 이는 사용자가 스스로 수행하는 일반적인 비밀번호 변경과 구분됩니다. 일반적으로 두 값은 동일합니다. 관리자가 비밀번호를 재설정할 경우에는 재설정을 수행하고 4724 이벤트를 생성합니다.
공격 방지
SetNTLM 공격이 실행될 위험을 줄이려면 디렉터리에서 비밀번호 재설정 권한을 제어하세요. ChangeNTLM 공격의 위험을 줄이려면 사용자 해시가 어떻게, 그리고 어디에 저장되는지 제어하세요.
Netwrix가 도와줄 수 있는 방법
The Netwrix Active Directory Security Solution 는 현재 AD 설정에서 보안 취약점을 조명하는 것부터 실시간으로 정교한 공격을 탐지하고 위협에 즉시 대응하는 것까지, Active Directory를 처음부터 끝까지 안전하게 보호하도록 도와줍니다. 또한 모든 ID, 그들이 접근 권한을 제공하는 민감 데이터, 그리고 기반이 되는 AD 인프라가 깨끗하게 유지되고, 명확히 이해되며, 올바르게 구성되고, 면밀하게 모니터링되며, 강력하게 통제되도록 해줍니다. 결과적으로 여러분의 업무를 더 쉽게 만들고 조직의 보안을 더욱 강화합니다.
공유하기
더 알아보기
저자 소개
Jeff Warren
최고 제품 책임자
Jeff Warren은 Netwrix의 제품 포트폴리오를 총괄하며, 보안에 초점을 둔 제품 관리 및 개발 분야에서 10년이 넘는 경험을 바탕으로 기여하고 있습니다. Netwrix에 합류하기 전 Jeff는 Stealthbits Technologies에서 제품 조직을 이끌었으며, 소프트웨어 엔지니어로서의 경험을 활용해 혁신적이고 엔터프라이즈 규모의 보안 솔루션을 개발했습니다. 직접적인 실행 중심의 접근 방식과 까다로운 보안 과제를 해결하는 데 강점을 지닌 Jeff는 실제로 효과가 있는 실용적인 솔루션을 구축하는 데 집중하고 있습니다. 그는 델라웨어 대학교에서 정보 시스템(Information Systems) 학사 학위를 취득했습니다.