LSASS 자격 증명 추출: Python을 활용한 보안 이탈 공격 기법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
보안
대상자
- 대상자: 보안 테스트 엔지니어, 레드 팀 멤버, 시스템 관리자
- 난이도: 중간~고급 (Windows API, Python, 보안 메커니즘 이해 필요)
핵심 요약
- LSASS 메모리 접근:
OpenProcess()
및ReadProcessMemory()
를 사용한 직접 메모리 읽기,MiniDumpWriteDump()
로 생성한 minidump 분석,pypykatz
라이브러리 활용이 주요 기법 - 보안 방어:
Protected Process Light (PPL)
,Virtual Secure Mode (VSM)
등 현대 Windows의 보호 메커니즘, EDR 시스템의OpenProcess
호출 감지 - 이탈 기술: 레지스트리 프로세스 활용, LSASS 복제, 디스크 I/O 회피 등 감지 회피 전략
섹션별 세부 요약
1. LSASS의 역할과 보안 중요성
- LSASS 기능: 사용자 인증, NTLM 해시, Kerberos 티켓, 캐시된 자격 증명 저장
- 보안 위협: 권한 상승 및 네트워크 이동을 위한 민감 정보 저장
- 현대 보호 기법: PPL, VSM, EDR 시스템의 실시간 감지
2. 직접 메모리 접근 (ctypes)
- 코드 예시:
```python
kernel32.OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, False, pid)
kernel32.ReadProcessMemory(h_process, address, buffer, len(buffer), ctypes.byref(bytes_read))
```
- 단점: EDR 시스템 감지 가능성 높음, 실시간 감지 위험
- 기능:
ctypes
라이브러리로 Windows API 직접 호출
3. Minidump 생성 (MiniDumpWriteDump)
- 메커니즘:
dbghelp.dll
의MiniDumpWriteDump()
함수 활용 - 코드 예시:
```python
dbghelp.MiniDumpWriteDump(h_lsass, pid, h_file, MINIDUMP_FULL_MEMORY, None, None, None)
```
- 장점: Task Manager 등 정당 도구와 혼동 가능, 감지 회피 효과
4. pypykatz를 통한 메모리 분석
- 기능:
pypykatz.go_live()
로 실시간 LSASS 메모리 분석 - 코드 예시:
```python
for session in katz.logon_sessions:
for cred in session.credentials:
print(f"{cred.username}\\{cred.domain} : {cred.password}")
```
- 장점: Mimikatz 외부 이진 파일 사용 없이 분석 가능
5. 감지 회피 전략
- 정당 프로세스 활용: Task Manager, WMI 제공자 내부에서 메모리 추출
- LSASS 복제: 원본 프로세스 직접 접근 없이 복제된 프로세스에서 추출
- 디스크 I/O 회피: 메모리 스트림을
named pipe
또는 메모리 버퍼로 직접 전달
결론
- 실무 권장사항: pypykatz와 minidump 기법 활용, EDR 감지 회피를 위해 정당 프로세스 내부에서 실행, 디스크 I/O 최소화
- 핵심 원칙: LSASS 자격 증명 추출은 기술적 접근과 감지 회피 전략의 균형이 필수적