29 Jan 2015, 12:53

WireShark で SMB/CIFS のパケット解析をするときの便利 Tips

はじめに

仕事で SMB プロトコルのパケット解析ばかりするようになってきた.

少し Tips がたまってきたので, 忘れないうちにメモしようと思う. SMB2 限定.

かなりニッチな内容だけれども, いつかどこかで誰かの役に立つことを願う.

検索を利用する

Ctrl + F で検索窓か開くので, キーワードから検索.

Filter を利用する

素早く情報を検索するには, フィルタが有効.

  • ツールバーからフィルタのパターンを入力
  • よく利用するものは, save を押すと再利用可能
  • フィルタの追加, 削除は Edit > Preferences > Filter Expressions から.

以下, よく利用するものを列挙

smb プロトコルをフィルタする

<div class="outline-text-3" id="text-3-1">
  <p>
    これは基本.
  </p>

  <p>
    [sourcecode language=&#8221;text&#8221; title=&#8221;&#8221; ]<br /> smb or smb2<br /> [/sourcecode]
  </p>
</div>

IP アドレスでフィルタリング

<div class="outline-text-3" id="text-3-2">
  <p>
    サーバのログをみるとき, たくさんのクライアントからのアクセスがある ので, ログが見づらい. 以下で, 送信元または送信先でフィルタリング.
  </p>

  <p>
    [sourcecode language=&#8221;text&#8221; title=&#8221;&#8221; ]<br /> ip.addr == 10.0.0.1<br /> [/sourcecode]
  </p>

  <p>
    送信元と先を指定する.
  </p>

  <p>
    [sourcecode language=&#8221;text&#8221; title=&#8221;&#8221; ]<br /> ip.addr == 10.0.0.1 and ip.addr == 10.0.0.0<br /> [/sourcecode]
  </p>
</div>

NT Status が エラーのものをフィルタリングする

<div class="outline-text-3" id="text-3-3">
  <p>
    エラーを素早くチェックするために.
  </p>

  <p>
    [sourcecode language=&#8221;text&#8221; title=&#8221;&#8221; ]<br /> smb2.nt_status > 0<br /> [/sourcecode]
  </p>
</div>

Command Code でフィルタリング

<div class="outline-text-3" id="text-3-4">
  <p>
    コマンドコードで絞込み.
  </p>

  <p>
    [sourcecode language=&#8221;text&#8221; title=&#8221;&#8221; ]<br /> # create でフィルタ<br /> smb2.cmd==5<br /> [/sourcecode]
  </p>

  <p>
    コマンドコード一覧
  </p>

  <ul class="org-ul">
    <li>
      <a href="https://msdn.microsoft.com/en-us/library/cc246528.aspx">2.2.1.1 SMB2 Packet Header &#8211; ASYNC</a>
    </li>
  </ul>
</div>

FileId でフィルタリング

<div class="outline-text-3" id="text-3-5">
  <p>
    create response コマンドにある fileId を追跡する.
  </p>

  <p>
    [sourcecode language=&#8221;text&#8221; title=&#8221;&#8221; ]<br /> smb2.fid==00004001-0000-0000-0000-000000000000<br /> [/sourcecode]
  </p>
</div>

tshark を利用する

コマンドラインの tshark を利用したほうが, 操作が早いことに気付く. しかし, Detail をしっかりみるためには GUI 版の WireShark がいい.

smb でフィルタリンクしたものを吐き出し. これでログが軽くなる.

[sourcecode language=”text” title=”” ]
tshark -r hoge.pcapng -Y ‘smb2’ -w foo.pcapng
[/sourcecode]

-Y でフィルタをかける. サブ画面でちょっとした grep をするのに便利.

[sourcecode language=”text” title=”” ]
tshark -r hoge.pcapng -Y ‘smb2.cmd==5’
[/sourcecode]

エラーがないかなどを素早くチェックする.

[sourcecode language=”text” title=”” ]
tshark -r hoge.pcapng -Y ‘smb2.nt_status > 0’
[/sourcecode]