ATT&CK: T1021.002 SMB/Admin Shares (psexec, smbexec), T1021.006 WinRM, T1047 WMI (wmiexec), T1053.005 Scheduled Task (atexec) · Lateral Movement (TA0008)
Impacket에는 “원격 Windows 호스트에서 명령 하나 돌리기"를 하는 스크립트가 네 개 있다. 결과는 비슷하지만 내부 메커니즘, 로그 흔적, 전제조건이 다르다 — 환경에 따라 하나는 통하고 다른 건 안 통한다.
1. 공통 전제
- 전부 원격 호스트의 로컬 관리자 또는 동급 권한 필요.
- 네트워크 레벨 인증은 NTLM(패스워드/해시) 또는 Kerberos.
- 모두 임시 바이너리/서비스/이벤트를 생성하므로 디스크/이벤트 로그 흔적이 있다.
2. psexec.py
impacket-psexec 'CORP/alice:Pw@10.0.0.5'
메커니즘: ADMIN$에 임의 바이너리 업로드 → SCM에 임시 서비스 등록 → 서비스가 바이너리 실행 → stdin/stdout을 네임드 파이프로 넘김.
장점: 상호작용 셸(TTY-like) 제공. 가장 호환성 좋음.
단점: 가장 요란함.
- Service installed Event ID 7045 생성 — SOC가 매우 좋아하는 이벤트.
- 임의 서비스 이름(기본은
RemComSvc) — 변경 없으면 즉시 블록. - ADMIN$에 임시 .exe 떨어짐 → 파일 생성 Event.
OPSEC: -service-name 플래그로 서비스 이름 변경, 하지만 7045 자체는 못 피함.
3. wmiexec.py
impacket-wmiexec 'CORP/alice:Pw@10.0.0.5'
메커니즘: WMI Win32_Process.Create로 명령 실행 → 결과를 ADMIN$ 공유의 임시 파일에서 읽음.
장점:
- 서비스 설치 없음 → 7045 안 뜸.
- WMI는 관리 작업에 흔히 쓰이므로 상대적으로 조용.
단점:
- 완전한 TTY 아님 — 상호작용 복잡한 명령(파이프, 리다이렉션)엔 불편.
- WMI 로그(Microsoft-Windows-WMI-Activity/Operational)에 흔적.
- 결과 파일을 ADMIN$에서 읽기 때문에 SMB 트래픽은 남음.
OPSEC 특화: -nooutput 플래그로 결과 파일 생성 생략 (하지만 결과를 못 받음).
4. smbexec.py
impacket-smbexec 'CORP/alice:Pw@10.0.0.5'
메커니즘: psexec과 비슷하지만 임의 바이너리를 올리지 않는다. 서비스 생성 시 ImagePath에 cmd.exe /c <명령> > \\...\pipe\...을 직접 넣는 트릭.
장점: 디스크에 EXE 파일 안 떨어짐.
단점: 서비스는 여전히 생성 → 7045 이벤트는 뜬다. 그리고 서비스 ImagePath가 cmd.exe /c ... 패턴이라 지문이 오히려 더 특이함.
5. atexec.py
impacket-atexec 'CORP/alice:Pw@10.0.0.5' whoami
메커니즘: ATSVC (Task Scheduler) RPC로 원격 스케줄 작업 등록 → 즉시 실행 → 결과 파일 읽음.
장점: 서비스 설치 없음. Task Scheduler 사용은 관리 작업에서 흔해서 상대적으로 조용.
단점:
- 스케줄 작업 Event ID 4698/4702 생성.
- 상호작용 셸 아님 — 단발성 명령만.
6. 선택 기준
| 상황 | 추천 |
|---|---|
| 상호작용 셸 필요 | psexec (가장 요란) 또는 wmiexec |
| EDR 피해서 단발 명령 | atexec 또는 wmiexec |
| WinRM이 열려있고 자격 있음 | evil-winrm (별도 글, Impacket 아님) |
| 서비스 설치 못 들키게 | smbexec (하지만 7045 뜨긴 함) |
7. 공통 OPSEC
- 패스더해시: 네 스크립트 모두
-hashes LM:NT지원 → 평문 없이도 사용 가능. - Kerberos:
-k -no-pass+KRB5CCNAME환경변수 → 티켓만으로 인증. - ADMIN$가 비활성: 전부 안 됨 (psexec, smbexec, wmiexec 결과 전달 모두 ADMIN$ 의존). 이땐 WinRM(evil-winrm) 또는 RDP로.
8. 블루팀 탐지 요약
| 스크립트 | 가장 분명한 신호 |
|---|---|
| psexec | Event 7045 + ADMIN$ EXE 쓰기 |
| wmiexec | WMI-Activity 로그 + ADMIN$ 임시 파일 |
| smbexec | Event 7045 (ImagePath에 cmd.exe /c) |
| atexec | Event 4698 (Task Created) |
SIGMA 룰 저장소에 네 가지 모두 커버되는 룰 공개됨.
참고
- fortra/impacket
- MITRE ATT&CK — T1021.002, T1047