Windows Authentication [ SAM ]
- LSA , Local Security Authority [ lsass.exe ]
- SRM , Security Reference Monitor
- SAM , Security Account Manager
SAM
windows 계정의 패스워드 해시를 저장하고 있는, *nix의 `` /etc/shadow``같은 파일이다.
SYSKEY로 암호화 되어있기 때문에 SYSKEY를 이용해서 복호화해야 password hash를 얻을 수 있다.
* 사실 단순히 password hash가 목적이라면 fgdump같은 툴을 사용해 memory에 올라가 있는 hash value를 바로 얻는 방법도 있다.
Format
SAM 암호화를 풀면, windows 계정 패스워드가 다음과 같은 형태로 저장되어 있다.
```
username:SID:LM hash:NTLM hash:::
e.g.
Administrator:500:611D6F6E763B902934544489FCC9192B:B71ED1E7F2B60ED5A2EDD28379D45C91:::
```
LM hash와 NTML hash는 같은 password를 각각 다른 hash function으로 hashing한 결과이기 때문에 하나만 크랙해도 password를 얻어낼 수 있다.
LM hash는 rainbow table matching 확률이 높기 때문에 windows 7 이상은 NTLM hash만 사용한다.
LM hash를 사용하지 않는 경우 LM hash 자리에 다음과 같이 들어간다.
- `` NO PASSWORD*********************``
- `` AAD3B435B51404EEAAD3B435B51404EE``
- `` 000.... (padding zero)``
SYSKEY
SAM의 암호화에 사용된다. key size는 128bit( 16byte )이고, SYSTEM 파일에서 얻을 수 있다.
웬만한 버전에서는 SYSKEY가 기본으로 활성화 되어 있는데, 일단 SYSKEY가 활성화 되고 나면 비활성화 될 수 없다.
그러나 SYSTEM에서 SYSKEY를 얻어내는 과정이 그리 복잡하지 않아 큰 문제는 없다.
결과적으로 SAM에서 password hash를 얻어내기 위해서는 SAM과 SYSTEM file 둘 다 필요하다.
pwdump7을 사용하면 자동으로 SYSKEY를 얻어내 SAM을 복호화해준다.
Location
```
%systemroot%\system32\config\SAM
%systemroot%\system32\config\SYSTEM
```
windows가 실행 중일 때는 이 파일에 접근할 수 없다.
다음 위치에 복사본이 있기는 하지만, 이 역시 system에서 열려있다며 복사 등의 작업이 불가능하다.
```
%systemroot%\system32\config\RegBack\
%systemroot%\system32\repair\
```
forecopy를 사용하면 system에서 사용중인 파일도 복사할 수 있다.
물론 pwdump의 copy기능, shadow copy 등을 사용해도 된다.
'OS > Windows' 카테고리의 다른 글
로컬 접근으로 SAM & SYSTEM 획득 및 Windows password crack (0) | 2016.12.25 |
---|---|
[Windows] 공유 폴더 설정 (0) | 2016.11.01 |
Windows boot process, MBR (0) | 2016.10.02 |
RDP를 활용한 Shadowing & Remote control (0) | 2016.09.30 |
DLL, DLL mapping과 API 주소 결정 방식 (0) | 2016.09.03 |