ATT&CK: T1046 Network Service Discovery · Discovery (TA0007)
enum4linux-ng는 Nicolas Biscos가 Python으로 재작성한 enum4linux. 단일 호스트에 대해 깊게 열거할 때 쓰고, 다수 호스트는 NetExec이 낫다.
1. 설치
pipx install enum4linux-ng
2. 기본 — Null session 가능 여부 체크
enum4linux-ng -A 10.0.0.5
-A: all. SMB 서비스에서 아래를 전부 시도:
- 세션 유형(null, authenticated)
- OS/도메인 정보
- 사용자/그룹 리스트
- 공유 목록
- 패스워드 정책
- RPC 쿼리로 추가 정보
3. 자격증명 지정
인증된 세션에서 더 많은 정보를 뽑는다:
enum4linux-ng -u alice -p 'Pw' -A 10.0.0.5
4. JSON/YAML 출력
후처리를 위한 구조화된 출력:
enum4linux-ng -A 10.0.0.5 -oY session.yaml
enum4linux-ng -A 10.0.0.5 -oJ session.json
jq/yq로 파싱해서 다른 도구에 넘길 때 유용.
5. 유용한 섹션들
5.1 패스워드 정책
Min password length: 7
Password history length: 0
Lockout threshold: 0 (= 잠금 없음)
Lockout threshold가 0이면 패스워드 스프레이가 계정 잠금 걱정 없이 가능 — 공격자에겐 가장 중요한 사전 정보.
5.2 세션 유형별 가능한 작업
출력에 자동으로 표시된다:
Null session possible: True→ 익명 열거 가능Authenticated session possible: True→ 아래 쿼리들이 작동
5.3 공유 목록 + 접근권한
Everyone READ/WRITE가 걸린 공유가 보이면 즉시 조사 대상.
6. NetExec과 역할 분담
| 상황 | 도구 |
|---|---|
| 호스트 1개 깊게 | enum4linux-ng |
| 서브넷 넓게 지문 | NetExec (nxc smb) |
| 공유 폴더만 보기 | NetExec --shares |
| 패스워드 정책 확인 | enum4linux-ng (가장 상세) |
| 사용자 리스트 추출 | 둘 다 가능 (NetExec이 더 빠름) |
실전에선 NetExec으로 서브넷 지문 → 흥미로운 호스트에 enum4linux-ng로 심층.
7. 블루팀 체크
- 익명 세션 자체를 끊기: SMB
RestrictAnonymous = 2(레지스트리 또는 GPO). - RPC 레벨에서 LSA/SAM 액세스 제한:
RestrictAnonymousSAM = 1. - 서비스 로그에서 익명 쿼리의 소스 IP를 모니터링.
8. OPSEC
- Null session 쿼리는 Windows 2003 이후 기본 비활성. 많이 열려있는 네트워크면 레거시 서버 조사 신호.
- 인증 세션으로 쿼리하면 4624 (성공 로그온) 이벤트가 각 쿼리마다 쌓임 — 조용한 작업 아님.
참고
- cddmp/enum4linux-ng
- MITRE ATT&CK — T1046