GooOOoodbyestar

시스템 계정을 이용한 히든 계정의 생성 방법

공부 ? 2010.10.07 댓글 내꿈은보신탕

(이 작업은 victim GUI환경까지 장악했을 경우를 가정하였다)
※Windows 의 최고 권한은 Administrator이 아닌 SYSTEM 이다.

시스템 계정은 시스템의 모든 권한을 갖고 있는 administrator(관리자)계정보다 상위 단계이다. 일반적인 방법으로는 정상적인 사용자가 권한을 획득할 수 없다. 시스템 계정을 획득하면 레지스트리 DB의 다음의 위치에 SAM파일의 값들을 직접 확인할 수 있다.

시스템 계정 획득 방법
mt.exe (중국 툴) 이용한 권한 상승 : mt su -
pstools (PsExec) 툴도 가능 : psexec -s -i  -d cmd.exe
 
위의 명령어를 사용하면 cmd.exe이 새로 생성되며 그 창에서 실행하는 모든 명령어는 시스템 계정의 권한을 얻는다.


아래와 같이 실행하면 mt -su와 똑같은 효과를 얻는다


위에서 획득한 시스템 계정으로 히든 계정을 생성해 보자
 
시스템 계정으로 레지스트리 DB의 SAM에 접근(HKLM\SAM\SAM\Domains\Account)에 접근을 하게 되면 Users\Names 키 값을 확인할 수 있는데 이 곳은 계정 정보가 저장되어 있는 SAM파일들의 내부를 들여다 본 것이다. 이를 조작하면, 히든 계정을 얻는 것이 가능해진다. 이 레지스트리들을 조작해보자.
 
1. 우선, $로 간헐적인 히든 계정을 만들자.
시스템계정의 히든 계정과 같은 이름으로 생성될 것이므로 신경써서 만들자. 다음과 같은 명령어로 일반적인 히든 계정을 생성 할 수 있다. 
net user goodbyestar$ ghlee /add
net localgroup administrators goodbyestar /add
 
2. mt -su로 시스템 계정을 획득하고 해당 SAM DB 레지스트리로 접근하자.
(pstools 도 가능 : psexec -s -i -d regedit.exe)
경로 : HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names

goodbyestar$ 필드를 확인하면 0x3fc의 값을 갖고 있는 것을 볼 수 있다. 이 값과 ...\Users 키들 중 일치 하는 키를 찾자. [종류 : 0x3fc → User 와 매핑]

000003FC의 값을 확인해 보면 F와 V가 존재한다. 이 값들을 저장해 두어서 나중에 써 먹어야 하므로 레지스트리의 내보내기 기능을 이용하여 따로 저장해 두자. 그리고 역시 Administrator(여기서는 goodbyestar)의 Users필드도 내보내기로 따로 저장한다. 마지막으로 goodbyestar$계정의 Names필드도 내보내자. 총 3개의 .reg파일을 생성하자.

이제 더이상 goodbyestar$계정은 가치가 없다. 과감하게 삭제를 한다.
 net user goodbyestar$ /delete

 위에서 생성된 3개의 레지스트리 파일을 가지고 몇 가지 편집 작업을 해야 한다. 간략하게 설명하자면 goodbyestar_users.reg(최고관리자의 users필드)를 편집기로 열어 F값을 복사하자.


블럭된 부분을 Ctrl+C로 복사.
이제 goodbyestar$_users.reg(아까 생성한 히든 계정)을 다시 편집기로 열어 Ctrl+C로 복사한 F값들을 덮어 씌우자



이제 모든 준비는 끝났고 생성된 goodbyestar$_user.reg와 goodbyestar$.reg를 등록해야 하는데, 이 것을 등록하기 위해서는 시스템계정의 권한이 필요하므로 mu -su로 생성된 cmd창에서 다음의 명령으로 레지스트리를 등록한다.
regedit /s goodbyestar$_user.reg
regedit /s goodbyestar$.reg



이렇게 생성된 goodbyestar$계정은 어떠한 곳에서도 확인 할 수 없으며, 확인 할 수 있는 방법은 시스템 계정 권한을 얻어 레지스트리를 직접 들여다 보는 수 밖에 없다. goodbyestar계정과 암호, 프로필정보를 모두 공유하며 정상적인 사용자처럼 사용하는 것이 가능하다.

 - 추가사항 - 
계정에 $가 붙으면 net user명령어에는 보이지 않으나 lusrmgr.msc에는 보임
시스템권한으로 계정을 생성하면 net user에는 보이나 lusrmgr.msc에는 안보임
이 둘을 조합하여 두 곳 모두에서 보이지 않는 완벽한 히든계정을 생성하는 것이 가능해진다.

결론 : reg 조합이다.

댓글