RID Hijacking
RID Hijacking 공격은 로컬 관리자 권한을 획득한 공격자가 은닉 및 지속성을 위해 관리자와 동일한 권한을 갖는 숨김 계정을 생성하는 공격 방식입니다.
Abuse
# 히든 계정 생성
.\CreateHiddenAccount_v0.2.exe -u hidden -p 'Password123!' -cu Administrator
# 히든 계정 삭제
.\CreateHiddenAccount_v0.2.exe -d hidden
Root Cause
SAM에 저장된 값을 확인하면 03 EC(리틀앤디안)로 저장된 RID가 확인됩니다.

리틀 앤디안으로 저장되었기에 순서를 변경하여 헥스값으로 입력하면 1004가 되고, 이 값은 파워쉘에서 확인한 hidden$ 계정의 RID 값과 일치합니다.

이 값을 500인 01 F4로 변경하면 Administrator와 레지스트리 RID 값이 동일해집니다.

레지스트리 값을 조작한 hidden$ 계정은 관리자 권한을 유지합니다.
하지만 whoami /user 명령을 통해 확인한 SID는 Administrator와 동일하지만, Get-LocalUser의 결과는 이전 SID가 그대로 저장되어 있습니다.

서로 다른 명령어 간의 SID 반환 결과 차이가 발생하는 이유는 SID를 조회하는 방식에 있습니다. whoami /user 명령은 SAM 레지스트리에 저장된 값을 통해서 가져오지만, Get-LocalUser 함수는 Local Security Authority API로 간접적으로 가져옵니다.
폴더의 이름은 사용자 RID 값을 기반으로 만들어지기 때문에 레지스트리 값을 변경한다고 하더라도 폴더의 이름은 이전 RID 값과 동일합니다. LSA API로 가져오는 방법이 SAM에 저장된 사용자 폴더 이름이기 때문에 이와 같은 차이가 발생합니다.
References
Last updated
Was this helpful?