IT 그리고 정보보안/Knowledge base

윈도우 XP 은폐 계정 생성

plummmm 2021. 4. 18. 20:23
반응형

*테스트 환경

OS: Winows XP SP3 (VM 가상 이미지)

Tool: PsExec, whoami

---------------------------------------------------------------------------------------------------------------------------

1. 은폐계정 생성

주로 공격자들이 windows 시스템을 점령한 후에 은폐계정을 생성하여 사용자의 PC를 휘젓고(?)다닌다.

기본적으로 계정명 뒤에 '$'을 붙이면 은폐계정이 생성된다.

 

[그림1. 기본적인 은폐계정 생성]

 

>net user [계정명]$ /add

명령을 수행하면 은폐계정이 생성된다. net user 명령어로 등록된 계정명을 검색하면 확인이 불가능하다.

하지만!! 윈도우 GUI 상에서는 은폐 계정이 확인이 가능하다.

 

[그림2. GUI상에서 확인 가능한 은폐 계정]

 

말 그대로 무늬만 은폐계정인 것이다.

반대로 net user로 확인이 가능하고 GUI에서 확인이 불가능했다면 또 모르겠다.

이런 허울뿐인 은폐계정은 아무 도움이되지 않는다(!)

 

그렇다면 완벽하게 은폐 계정을 만드는 방법은 없을까?

물론 있다.

 

2. 완벽한 은폐계정 생성하기

완벽한 은폐계정을 생성하기 위해서는 먼저 SAM파일에 접근이 가능해야 한다.

WINDOWS에 대해 공부한 사람은 알겠지만, windows에서 최고 권한은 Administrator가 아니라

SYSTEM 계정이다. (LINUX의 root권한 이겠지?)

 

PsExec라는  Sysinternals에서 개발한 툴이 있다.

이 툴을 이용하면 손쉽게 SYSTEM 권한으로 계정을 승격시킬 수 있다.

 

[그림3. SYSTEM 권한으로 승격]

>PsExec.exe -s -i -d cmd.exe  명령을 수행하면

SYSTEM 권한으로 command 창을 띄울 수 있다.

 

그 다음, whoami 명령을 수행하여 SYSTEM 계정에 대한 확인 작업을 거친다.

 

[그림4. whoami 수행]

이렇게 SYSTEM 권한으로 승격 되었다면, 아까 열어둔 command창에서 Regedit를 실행한다.

여기서 주의할 점은, 일반 admin권한으로 regedit를 실행하면 SAM파일 레지스트리에 접근할 수 없다.

"꼭" PsExec로 실행한 cmd창에서 regedit를 실행해야 한다.

 

[그림5. SAM파일 접근]

SYSTEM 권한으로 regedit을 실행시키면 그림 5와 같이 SAM 하위 레지스트리에 접근이 가능하다.

이제 이 상태에서 아까 생성한 '무늬만 은폐계정'(?)인 dongwoo$과 Administrator의 필드에 접근한다.

 

[그림6. 생성된 은폐계정의 필드값 확인]

 

[그림7. Administrator 계정의 필드값 확인]

 

레지스트리에 SAM\Domains\Account\Users 리스트에 보면 Names목록에 있는 Administrator와 미리 생성된 은폐계정의 값과 일치하는 필드가 존재하는 것을 확인할 수 있다. 계정마다 할당된 레지스트값이 따로 저장되 있다는 말이다.

 

완벽한 은폐계정을 만들기 위해서는 여기 필드값들을 조작하면 된다.

먼저, Admin 필드값(Users에 000001F4), 은폐계정 필드값(Users에 000003EB) 그리고 은폐계정의 값(Names에 dongwoo$)을

내보내기를 이용하여 따로 빼온다.

 

[그림8. 추출해온 계정 Reg 값들]

 

레지스트리 값들을 추출한 후 먼저 생성해 두었던 은폐 계정부터 삭제를 시킨다.

왜? 완벽한 은폐계정으로 다시 생성을 하는데 기존의 계정이 존재하고 있다면 

자칫 잘못하다 메모리단이 꼬여버릴 수가 있다.

 

[그림9. 기생성된 은폐계정 삭제]

은폐 계정을 삭제하고 난 후, 이제 완벽한 은폐 계정을 생성한다.

먼저 000001F4의 필드값(admin 필드) 편집을 열어

'F' 부분의 값들을 뽑아 낸다.

 

[그림10. Admin 필드 "F"값 추출]

F값을 복사하고 000003EB 필드값(은폐계정 필드) 편집에 들어가서

아까 복사해둔 F값을 은폐계정 필드의 F값에 덮어 씌운다.

 

[그림11. 추출한 F값 은폐계정 필드에 붙여넣기]

작업이 끝났다면 다시 레지스트리에 등록을 해 주어야 한다.

 

[그림12. 편집한 레지스트리 재등록]

>regedit /s [은폐계정의 필드값]

>regedit /s [은폐계정 이름의 reg값]

두 가지를 등록하면 완벽한 은폐계정이 완성 된다.

 

완성된 은폐 계정은 'net user'와 윈도우 GUI상 어디에도 노출되지 않으며

오로지 레지스트리에서만 확인이 가능하다.

 

[그림13. net user 명령에 노출되지 않는 은폐 계정]
[그림14. windows GUI상에서 노출되지 않는 은폐 계정]

 

레지스트리에서 확인하더라도 SYSTEM권한이 없다면 SAM파일에 접근하지 못하기 때문에

일반인 사용자들은 거의 알 방법이 없다고 봐도 무방하다.

반응형