【オプション一覧つき】enum4linuxの使い方を徹底解説!

SMBプロトコルを通じてユーザー・グループ・共有フォルダ情報を収集するツール
- enum4linux -

ペネトレーションテストの標準ディストリビューションであるKali Linuxには、enum4linuxがプリインストールされています。それほど、SMB情報収集ツールとして高い信頼性と実績を持つツールです。

本記事では、enum4linuxの使い方を基礎から実践レベルまで体系的に解説!コマンドの実行方法からオプション一覧、匿名接続と認証接続の違いをステップ・バイ・ステップで解説しています。

後継ツール「enum4linux-ng」との違いも解説!

新旧ツール(enum4linux/enum4linux-ng)の比較同一ターゲットに対するSMB情報列挙の比較実演も掲載しているので、最後までご覧ください。

目次

enum4linuxとは

enum4linuxは、SMB(Server Message Block)プロトコルを利用して、WindowsやSambaサーバに関する情報収集(列挙)を行うためのツールです。内部的にはrpcclientsmbclientnmblookupなど複数のコマンドを組み合わせて動作し、1回の実行で包括的な情報を取得できます。

enum4linuxはWindowsのツールであるenum.exeをPerlで再実装したもので、脆弱性診断やペネトレーションテストにおける情報収集で使用されています。

主な用途

enum4linuxは、WindowsサーバやSambaが稼働しているホストの情報を取得する目的で使用します。

取得できる情報概要
ユーザーアカウント一覧OS上に存在するローカルユーザーの列挙
グループ情報ローカルグループおよびメンバーの収集
共有フォルダ(Share)SMBで公開されている共有リソースの列挙
OSおよびドメイン情報OSバージョン、ドメイン名、ワークグループ名の把握
パスワードポリシー最小パスワード長、ロックアウトポリシーなどの確認
RIDサイクリングRID(Relative Identifier)をブルートフォースしてユーザーを列挙
プリンター情報ネットワーク上で公開されているプリンターの特定

これらの情報は、診断対象ホストの攻撃対象領域(Attack Surface)を把握する上で非常に重要であり、後続の診断作業の方針を決定づける基礎データとなります。

主な特徴

Sambaユーティリティのラッパーとして動作

enum4linuxは、rpcclientsmbclientなどの既存ツールを内部で呼び出す設計になっています。

匿名接続(Nullセッション)に対応

SMBの匿名接続(Nullセッション)が許可されているホストに対しては、認証情報なしで多くの情報を取得できます。

認証情報を指定したスキャンも可能

-u(ユーザー名)と-p(パスワード)オプションを使用することで、認証情報を持つユーザーとしてより詳細な情報を収集することもできます。

Kali Linuxにプリインストール

ペネトレーションテスト向けディストリビューションであるKali Linuxには標準でインストールされており、追加セットアップなしに即利用できます。

新ツール(enum4linux-ng)との違い

enum4linux-ngは、enum4linuxをPythonで書き直した後継ツールです。2021年にv1.0.0がリリースされ、現在も開発が継続しています。

比較項目enum4linux(旧)enum4linux-ng(新)
実装言語PerlPython3
出力形式テキスト形式のみJSON・YAMLでの構造化出力に対応
Kerberos対応非対応対応
メンテナンス状況停止現在も継続中
Kali Linuxの対応状況プリインストール公式リポジトリに収録

特にenum4linux-ngは、JSON形式での出力により自動化やツール連携が容易であり、大規模環境のセキュリティ診断に適しています。

注意事項

enum4linuxを使用する際は、以下の点に注意が必要です。

必ず許可を得た環境でのみ使用すること

enum4linuxによる情報収集は、対象ホストに対して複数のSMBクエリを送信します。明示的な許可なく第三者のシステムに対して実行することは、不正アクセス禁止法等の法令に違反する可能性があります。必ず診断対象の所有者から許可を取得した上で使用してください。

取得情報の取り扱いに注意すること

ユーザーアカウント名やパスワードポリシーなどのスキャン結果は機密情報に該当します。診断レポートや作業ログの管理には、情報セキュリティポリシーに従った適切な取り扱いが求められます。

メンテナンスが終了している

enum4linuxは、2021年6月27日リリースのv0.9.1を最後に、開発およびメンテナンスが終了しています。現在は新たなバグや脆弱性への対応が行われていないため、公式リポジトリで提供しているKali Linux環境で利用するか、後継ツールである〝enum4linux-ngへの移行を推奨します。

enum4linuxのインストール

enum4linuxのインストール方法は、使用するOSによって異なります。本セクションでは、代表的な環境であるKali LinuxおよびUbuntuにおけるインストール手順を解説します。

Kali Linuxの場合

Kali Linuxは、脆弱性診断やペネトレーションテストを目的としたツールが多数プリインストールされており、enum4linuxもその一つです。そのため、追加のインストール作業は不要です。

ただし、環境によっては削除されている可能性もあるため、以下のコマンドで確認します。

STEP

インストール済みか確認する

$ apt list --installed | grep enum4linux

# 実行結果(インストール済みの場合)
enum4linux/kali-rolling,now 0.9.1-0kali2 all [インストール済み、自動]
※インストールされていない場合、何も表示されません。

enum4linuxのパッケージがインストールされているか確認します。インストールされていない場合、以下のコマンドでインストールします。

$ sudo apt update                # パッケージリストの更新
$ apt show enum4linux            # パッケージ情報の確認
$ sudo apt install enum4linux    # インストール
STEP

実行パスの確認

$ which enum4linux
/usr/bin/enum4linux

アプリケーションメニューにも配置されています。

09-Discovery>Network Share Discovery>enum4linux

Kali Linuxのアプリケーションメニューからenum4linuxを起動する

Ubuntuの場合

Ubuntuの公式リポジトリには、enum4linuxパッケージが含まれていません。そのため、Ubuntuでenum4linuxを使用するには、Snapパッケージを利用するのが最も手軽な方法です。

SnapはCanonicalが開発したパッケージ管理方式で、Ubuntu 24.04 LTSにも標準で搭載されています。Snapは自己完結型パッケージのため、依存関係を含めて簡単に導入できる点が特徴です。

STEP

パッケージ検索

$ snap find enum4linux
Name        Version             Publisher  Notes  Summary
enum4linux  v0.9.1-19-gee106b7  jitpatro   -      Enumerates info from Windows and Samba systems

enum4linuxパッケージがSnapストアで公開されていることを確認します。

STEP

パッケージの詳細情報

$ snap info enum4linux
name:      enum4linux
summary:   Enumerates info from Windows and Samba systems
publisher: Jitendra Patro (jitpatro)
store-url: https://snapcraft.io/enum4linux
license:   GPL-3.0-or-later
description: |
  Enum4linux is a tool for enumerating information from Windows and Samba systems. It attempts to
  offer similar functionality to enum.exe formerly available from www.bindview.com.
  It is written in Perl and is basically a wrapper around the Samba tools smbclient, rpclient, net
  and nmblookup.
  The tool usage can be found in the below URL followed by examples, previous versions of the tool
  can be found at the bottom of that page.

  Features include:

     RID Cycling (When RestrictAnonymous is set to 1 on Windows 2000)
     User Listing (When RestrictAnonymous is set to 0 on Windows 2000)
     Listing of Group Membership Information
     Share Enumeration
     Detecting if host is in a Workgroup or a Domain
     Identifying the remote Operating System
     Password Policy Retrieval (using polenum)

  More info: https://labs.portcullis.co.uk/tools/enum4linux/

  Installation: `sudo snap install enum4linux`
snap-id: ArOr6R6UpAbuadwOoqh642uNDqVPibq6
channels:
  latest/stable:    v0.9.1-19-gee106b7 2025-01-15 (66) 53MB -
  latest/candidate: ↑
  latest/beta:      ↑
  latest/edge:      v0.9.1-20-ge6fe887 2025-09-16 (79) 54MB -

インストール前にパッケージの詳細情報を確認します。

STEP

enum4linuxのインストール

$ sudo snap install enum4linux

パッケージ情報に問題がなければ、enum4linuxをインストールします。Snapは自動的に依存関係を解決するため、追加の設定は不要です。(当サイトの検証環境では、30秒程度でインストールを完了しました。)

STEP

実行パスの確認

$ which enum4linux
/snap/bin/enum4linux

インストール後、実行ファイルのパスを確認します。

Snapでインストールしたアプリケーションの実行ファイルは、/snap/binディレクトリに配置されます。スクリプトやツール連携でパスを指定する場合、この点にご注意ください。

基本的な使い方

コマンド構文

$ enum4linux [オプション] <ターゲットホスト>

基本コマンド

最も基本的なコマンドは、オプションを指定せず、ターゲットホストのみ指定します。

$ enum4linux 192.0.2.1

オプションを何も指定しない場合、自動で-aオプションが適用されます。

-aオプションは、-U -S -G -P -r -o -n -iをまとめて実行します。各オプションの意味は、後述のオプション解説をご覧ください。

匿名接続と認証接続

# 匿名接続(NULLセッション)
$ enum4linux -a 192.0.2.1

# 認証情報を使った接続
$ enum4linux -a -u <ユーザー名> -p <パスワード> 192.0.2.1

enum4linuxは、認証情報を使用しない匿名接続(NULLセッション)に加え、ユーザー名およびパスワードを指定した認証接続にも対応しています。

匿名接続(Nullセッション)とは

ユーザー名・パスワードを指定せずにSMBセッションを確立する手法。

匿名接続では取得できる情報が限定されるため、認証あり・認証なしの双方で差分を見ると理解が深まります。

(参考)ファイル出力

enum4linuxコマンドにはファイル出力機能が備わっていないため、必要に応じて出力系コマンドと組み合わせて使用します。

$ enum4linux 192.0.2.1 | tee enum4linux_result.txt

teeコマンドを使用すると、ターミナルへの出力とファイルへの書き込みを同時に行えるため、リアルタイムで進捗を確認しながら結果を保存できます。

オプション一覧

$ enum4linux -h
enum4linux v0.9.1 (http://labs.portcullis.co.uk/application/enum4linux/)
Copyright (C) 2011 Mark Lowe (mrl@portcullis-security.com)

Simple wrapper around the tools in the samba package to provide similar functionality to enum.exe (formerly from www.bindview.com).
Some additional features such as RID cycling have also been added for convenience.

Usage: ./enum4linux.pl [options] ip

Options are (like "enum"):
    -U        get userlist
    -M        get machine list*
    -S        get sharelist
    -P        get password policy information
    -G        get group and member list
    -d        be detailed, applies to -U and -S
    -u user   specify username to use (default "")
    -p pass   specify password to use (default "")

The following options from enum.exe aren't implemented: -L, -N, -D, -f

Additional options:
    -a        Do all simple enumeration (-U -S -G -P -r -o -n -i).
              This option is enabled if you don't provide any other options.
    -h        Display this help message and exit
    -r        enumerate users via RID cycling
    -R range  RID ranges to enumerate (default: 500-550,1000-1050, implies -r)
    -K n      Keep searching RIDs until n consective RIDs don't correspond to a username. Impies RID range ends at 999999. Useful against DCs.
    -l        Get some (limited) info via LDAP 389/TCP (for DCs only)
    -s file   brute force guessing for share names
    -k user   User(s) that exists on remote system (default: administrator,guest,krbtgt,domain admins,root,bin,none)
              Used to get sid with "lookupsid known_username"
              Use commas to try several users: "-k admin,user1,user2"
    -o        Get OS information
    -i        Get printer information
    -w wrkg   Specify workgroup manually (usually found automatically)
    -n        Do an nmblookup (similar to nbtstat)
    -v        Verbose.  Shows full commands being run (net, rpcclient, etc.)
    -A        Aggressive. Do write checks on shares etc

RID cycling should extract a list of users from Windows (or Samba) hosts
which have RestrictAnonymous set to 1 (Windows NT and 2000), or "Network
access: Allow anonymous SID/Name translation" enabled (XP, 2003).

NB: Samba servers often seem to have RIDs in the range 3000-3050.

Dependancy info: You will need to have the samba package installed as this script is basically just a wrapper around rpcclient, net, nmblookup and smbclient.
Polenum from http://labs.portcullis.co.uk/application/polenum/ is required to get Password Policy info.
  • -U:ユーザー一覧を取得
  • -M:マシン一覧を取得 ※一部のバージョンで未実装
  • -S:共有一覧を取得
  • -P:パスワードポリシー情報を取得
  • -G:グループおよびメンバー一覧を取得
  • -d:詳細表示(-Uまたは-Sと併用)
  • -u user:ユーザー名を指定(デフォルト:空文字)
  • -p pass:パスワードを指定 (デフォルト:空文字)
  • -a:すべてを対象に列挙(-U -S -G -P -r -o -n -i と同じ)
  • -h:ヘルプメッセージを表示
  • -r:RIDサイクリングによるユーザー列挙
  • -R range:列挙するRID範囲(デフォルト:500-550、1000-1050) ※-rオプション自動有効
  • -K n:連続するn個のRIDがユーザー名と一致しなくなるまで探索を継続
  • -l:LDAP(389/TCP)経由で情報を取得(DC専用)
  • -s file:指定したファイルを使用して共有名をブルートフォース(総当たり)する
  • -k user:リモートシステムに存在するユーザーを指定(デフォルト:administrator,guest,krbtgt,domain admins,root,bin,none)※複数指定はカンマ区切り
  • -o:OS情報を取得
  • -i:プリンター情報を取得
  • -w wrkg:ワークグループを指定(通常は自動検出)
  • -n:nmblookupを実行する
  • -v:冗長モード(実行中のコマンドを表示)
  • -A:アグレッシブモード(共有フォルダへの書き込みチェックを実行)

【比較実演】同じターゲットにenum4linuxを実行する

このセクションでは、ローカル環境に構築したKali LinuxMetasploitable2を使用して、実際にenum4linuxによるSMB情報収集を実行します。

Metasploitable2とは

脆弱性診断やペネトレーションテストの学習を目的として設計されたLinux仮想マシンです。

本検証で使用する仮想マシンは、外部ネットワークから隔離されたローカル環境(Windows上のVirtualBox)で稼働しています。

検証環境のシステム構成

enum4linux実行マシンKali Linux 2026.1
enum4linux v0.9.1
診断対象マシンMetasploitable2
192.168.10.101
ネットワークアダプターホストオンリーアダプター

enum4linuxコマンドを実行する

$ enum4linux -S 192.168.10.101
Starting enum4linux v0.9.1 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Mon Mar 23 14:06:51 2026

 =========================================( Target Information )=========================================

Target ........... 192.168.10.101
RID Range ........ 500-550,1000-1050
Username ......... ''
Password ......... ''
Known Usernames .. administrator, guest, krbtgt, domain admins, root, bin, none


 ===========================( Enumerating Workgroup/Domain on 192.168.10.101 )===========================


[+] Got domain/workgroup name: WORKGROUP


 ==================================( Session Check on 192.168.10.101 )==================================


[+] Server 192.168.10.101 allows sessions using username '', password ''


 ===============================( Getting domain SID for 192.168.10.101 )===============================

Domain Name: WORKGROUP
Domain Sid: (NULL SID)

[+] Can't determine if host is part of domain or part of a workgroup


 ================================( Share Enumeration on 192.168.10.101 )================================


        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        tmp             Disk      oh noes!
        opt             Disk
        IPC$            IPC       IPC Service (metasploitable server (Samba 3.0.20-Debian))
        ADMIN$          IPC       IPC Service (metasploitable server (Samba 3.0.20-Debian))
Reconnecting with SMB1 for workgroup listing.

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
        WORKGROUP            METASPLOITABLE

[+] Attempting to map shares on 192.168.10.101

//192.168.10.101/print$ Mapping: DENIED Listing: N/A Writing: N/A
//192.168.10.101/tmp    Mapping: OK Listing: OK Writing: N/A
//192.168.10.101/opt    Mapping: DENIED Listing: N/A Writing: N/A

[E] Can't understand response:

NT_STATUS_NETWORK_ACCESS_DENIED listing \*
//192.168.10.101/IPC$   Mapping: N/A Listing: N/A Writing: N/A
//192.168.10.101/ADMIN$ Mapping: DENIED Listing: N/A Writing: N/A
enum4linux complete on Mon Mar 23 14:06:51 2026

以下の記事では、同じターゲット(Metasploitable2)に対してenum4linux-ngコマンドを実行した結果を掲載しています。あわせてご覧ください。

デフォラボ

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
目次