Kerberoasting
Last updated
Was this helpful?
Last updated
Was this helpful?
Kerberoasting은 Active Directory 환경에서 자주 사용되곤 하는 Kerberos 인증 프로토콜의 특수한 매커니즘을 이용하는 공격으로 TGS를 발급하는 과정에서 서비스 주체의 NT Hash로 암호화된 데이터를 해쉬 크래킹을 통해 복호화를 시도하며 평문 패스워드를 탈취하는 방식입니다.
커버로스 프로토콜은 총 6단계로 이루어진 인증 매커니즘을 갖고 있습니다. AS는 티켓인 Key를 분포하는 곳인, Key Distribution Center의 약어입니다. Active Directory 환경에서는 Domain Controller가 AS의 역할을 합니다.
Alice는 본인의 계정정보로 로그인 한 이후 DC로 본인의 ID와 Timestamp를
해쉬화된 패스워드로 암호화한 것을 DC에게 전송하여 ST 발급 요청
DC는 Alice의 해쉬 암호로 암호화된 Alice에 대한 정보와 비밀키 Sa를 발급
Alice는 자신의 해쉬 암호로 해당 정보를 복호화하여 ST 획득
획득한 ST을 가지고 DC에 TGS 요청
(요청을 할 때는 ST 정보와 함께 현재 시간(TimeStamp)를 Sa로 암호화하여 전송
DC는 Sa로 복호화한 TimeStamp 정보를 구해서 일치한다면 TGS 발급
Alice는 TGS를 가지고 서비스를 이용할 수 있음
발급된 TGS는 Service Admin의 NT Hash 정보로 암호화 되어있음
AS-REP-Roasting을 통해서 얻은 정보를 가지고 해쉬 크래킹을 통해 크리덴셜 정보를 획득하듯 TGS 정보를 사전 파일을 통해 복호화를 시도하면서 Service Admin에 관한 NT Hash 정보를 크래킹하여 가져올 수 있습니다.
GetUserSPNs 도구에서 -request-user
옵션 없이 사용 시에는 커버로스팅이 가능한 유저의 목록이 출력되지만, CrackMapExec 혹은 Rubeus와 같은 도구에서는 획득이 가능한 서비스 목록을 탐색하고 발견한 서비스에 대한 티켓을 즉시 가져옵니다. 만약 대상의 보안 담당자가 공격 탐지용 계정을 통해 더미 서비스를 실행했을 경우 Windows 이벤트 ID 4769가 생성되는데 이러한 이벤트는 정상적인 행위에서 발생하지 않기 때문에 탐지 위험이 있습니다. 따라서 우리는 은닉성을 위해 대상 시스템에서 등록된 서비스 목록을 열거한 뒤 필요한 계정만 선택적으로 공격할 수 있습니다.