impacket
문제
impacket 윈도우 공격 모음
답변
1. 개념
Impacket은 네트워크 프로토콜을 처리하는 Python 라이브러리 모음으로, 주로 윈도우 환경의 네트워크 프로토콜을 대상으로 저수준(Low-level) 프로그래밍 액세스를 제공한다. SECUREAUTH에서 개발한 오픈소스 프로젝트로, 주로 보안 전문가, 침투 테스터(Penetration Tester)가 네트워크 프로토콜 조작과 윈도우 인프라 취약점 테스트에 활용한다.
2. 역할 & 목적
- 네트워크 프로토콜 분석 및 조작
- 윈도우 인프라 보안 취약점 테스트
- 네트워크 인증 메커니즘 테스트
- 원격 명령 실행 및 권한 상승 검증
- 보안 감사 및 레드팀(Red Team) 활동 지원
3. 구조 및 구성요소
Impacket은 다음과 같은 주요 구성요소로 이루어져 있다:
-
프로토콜 구현 모듈
- SMB(Server Message Block)
- MSRPC(Microsoft Remote Procedure Call)
- NTLM(NT LAN Manager)
- Kerberos
- LDAP(Lightweight Directory Access Protocol)
- DCERPC(Distributed Computing Environment/Remote Procedure Call)
-
유틸리티 스크립트
- 인증 관련 스크립트
- 원격 실행 스크립트
- 정보 수집 스크립트
- 권한 상승 스크립트
4. 주요 공격 도구 및 기능
4.1 인증 관련 공격
- secretsdump.py: SAM, NTDS.dit 파일에서 계정 해시 덤프
- GetNPUsers.py: Kerberos AS-REP Roasting 공격 수행
- GetUserSPNs.py: Kerberos 서비스 계정 티켓 요청(Kerberoasting)
- lookupsid.py: SID 브루트포스를 통한 사용자 열거
- ntlmrelayx.py: NTLM 릴레이 공격 수행
4.2 원격 실행 관련 공격
- psexec.py: SMB를 통한 원격 명령 실행(윈도우 PsExec 유사 기능)
- wmiexec.py: WMI(Windows Management Instrumentation)를 통한 원격 명령 실행
- smbexec.py: SMB 및 서비스 제어를 통한 명령 실행
- dcomexec.py: DCOM(Distributed COM)을 통한 원격 명령 실행
- atexec.py: 작업 스케줄러(Task Scheduler)를 통한 원격 명령 실행
4.3 정보 수집 관련 기능
- samrdump.py: 원격 시스템의 사용자 계정 정보 수집
- rpcdump.py: RPC 엔드포인트 매핑 수집
- netview.py: 네트워크 호스트 및 공유 정보 수집
- reg.py: 원격 레지스트리 조작
4.4 특수 공격
- goldenPac.py: MS14-068 취약점을 이용한 골든 티켓 공격
- karmaSMB.py: 악성 SMB 서버를 통한 인증 정보 수집
- ticketer.py: Kerberos 티켓 조작(Golden/Silver Ticket 생성)
- mimikatz.py: mimikatz 기능 일부 구현
5. 공격 원리 및 특징
| 공격 유형 | 대상 프로토콜/서비스 | 공격 원리 | 주요 도구 |
|---|
| 패스워드 추출 | SMB, LDAP, Kerberos | 자격 증명 파일 접근 및 해시 덤프 | secretsdump.py |
| 계정 열거 | RPC, LDAP | SID 브루트포스, RPC 호출 | lookupsid.py, samrdump.py |
| 원격 코드 실행 | SMB, WMI, DCOM | 관리 인터페이스 활용, 서비스 생성 | psexec.py, wmiexec.py |
| 인증 우회 | NTLM, Kerberos | 릴레이 공격, 티켓 위조 | ntlmrelayx.py, ticketer.py |
| 권한 상승 | Kerberos | 취약점 활용, 티켓 조작 | goldenPac.py, GetUserSPNs.py |
6. 장단점
장점
- 다양한 윈도우 프로토콜에 대한 포괄적 지원
- 파이썬 기반으로 확장성과 유연성이 높음
- 상세한 프로토콜 조작이 가능
- 완전한 오픈소스로 지속적 업데이트
- 침투 테스트 도구와의 높은 호환성
단점
- 오용 시 심각한 보안 위협 초래 가능
- 복잡한 프로토콜 지식 필요
- 일부 기능은 높은 권한 요구
- 지속적인 윈도우 보안 업데이트로 기능 제한 가능성
7. 방어 대책
- 최신 보안 패치 적용
- SMB 서명 강제 활성화
- NTLM 인증 제한 및 Kerberos 보안 강화
- 네트워크 세그먼트화 및 접근 제어
- EDR(Endpoint Detection and Response) 솔루션 활용
- 강력한 계정 관리 정책 수립
상세 내용: Impacket 주요 공격 시나리오
Pass-the-Hash 공격
해시 값만으로 인증을 수행하여 평문 비밀번호 없이도 시스템에 접근
psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 administrator@10.0.0.1
Kerberoasting 공격
서비스 계정의 SPN(Service Principal Name)을 이용하여 서비스 티켓을 요청한 후, 오프라인에서 크래킹
GetUserSPNs.py domain/user:password -dc-ip 10.0.0.1 -request
AS-REP Roasting 공격
Kerberos 사전 인증이 비활성화된 계정에 대해 암호화된 AS-REP를 요청하여 오프라인에서 크래킹
GetNPUsers.py domain/ -usersfile users.txt -dc-ip 10.0.0.1
NTLM 릴레이 공격
중간자 공격을 통해 인증 데이터를 가로채어 다른 서비스에 릴레이하는 공격
ntlmrelayx.py -t smb://10.0.0.1 -smb2support
어린이 버전 요약
Impacket은 컴퓨터 전문가들이 윈도우 컴퓨터의 보안을 검사하는 데 사용하는 도구 모음이에요. 이 도구는 컴퓨터들이 서로 대화하는 방식(네트워크 프로토콜)을 이해하고 테스트할 수 있게 해줘요. 마치 열쇠를 모으는 것처럼 컴퓨터 접근 권한을 확인하거나, 멀리 있는 컴퓨터에 명령을 내릴 수 있게 도와줘요. 하지만 이 도구는 오직 허락받은 컴퓨터에서만 테스트해야 해요. 그렇지 않으면 다른 사람의 컴퓨터를 몰래 들여다보는 것과 같기 때문이죠!