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 (성공 로그온) 이벤트가 각 쿼리마다 쌓임 — 조용한 작업 아님.

참고