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회 미만으로만 시도.

참고