元パチ屋店員NWエンジニアの技術ブログ

元パチ屋店員NWエンジニアが技術のアウトプット化を目的に、好き勝手な事を書いてるブログです

第42回「ネットワークパケットを読む会(仮)」

f:id:hayato-ota-rf:20170909193955j:plain

 

pa.hebikuzure.com

 「ネットワークパケットを読む会(仮)」のセミナーレポートです
今回はSMBがピックアップされたんですが、聞くだけでは身にならないので、実際に家でSMBパケットを解析してみました

前回レポート

raptor-falcon.hatenablog.com

今回のテーマ

主催者 hebikuzureさんによる

「SMB パケットを解析する」

常連ととろさんによる

MacPS4

特にSMBはWannaCryで耳にはしていたけど、なんやねんそれ?

って感じだったので、非常に良い勉強になりました!

情報共有の為、SMBについてまとめとくんで、是非見て下さいね(*´ω`*)

SMBってなんぞや?!

SMB【Server Message Block】

Windowsに搭載されているネットワーク共有プロトコル

具体的には、Windowsの共有ファイルなどにアクセスする時や、市販NASにアクセスする時に使われています

例↓

f:id:hayato-ota-rf:20170904071422j:plain

SMBはMicrosoftが開発したプロトコルですが、オープンなプロトコルである為、MacOSLinuxでもsmbfsといった名前で、Windowsとファイル共有する時とかに使われています

SMBのバージョン

SMB

初期バージョン

実装OS:WindowsNT 3.X/etc

CIFS

SMBをベースにオープン規格化されたものだが、現在ではSMBの方をMicrosoftがオープンにしているので、なんか可哀想な子

実装OS:Windows 9x/Windows Me/Windows NT 4.x

SMB 1.0

Kerberos認証やActive Directoryに対応

実装OS:Windows 2000Windows XPWindows Server 2003Windows Server 2003 R2

SMB 2.0

このバージョンからプロトコルの中身ががらっと変わったらしい

実装OS:Windows VistaWindows Server 2008

SMB 2.1

ブランチキャッシュ(WAN経由のファイルサーバとかにアクセスにする時、クライアント側にキャッシュあるなら、わざわざサーバに取りにいかず、高速なファイルアクセスを可能にす機能)に対応

実装OS:Windows 7Windows Server 2008 R2

SMB 3.0

ここら辺から大きな機能改変は無い

実装OS:Windows 8Windows Server 2012

SMB 3.1

現在の最新バージョン

実装OS:Windows 10/Windows Server 2016

 

ちなみにWannaCryでお祭り騒ぎの火付け役になってくれたバージョンは・・・

 

 

 

 

 

 

 

 

 

 SMB 1.0!!

 

f:id:hayato-ota-rf:20170904071437j:plain

こいつです

 

実のところWannaCryは、WindowsXPなんていうサポート切れたく●OS何時迄も使ってんじゃねーよ!

っていうゲイツからのメッセージだったりして(笑)

WannaCryの対策として、OSがWindows VistaWindows Server 2008以上のものはSMB 1.0無効にする方法がありますが

例↓(Windows8.1/2012 R2以上のOS、それ以前はsc.exeコマンド使用)

f:id:hayato-ota-rf:20170904071446j:plain

 

これやるとWindows XPとかが

f:id:hayato-ota-rf:20170904071456j:plain

ってなります(このネタしってる人は古参ニコ厨確定)

 

噂ではありますが、次回の大型WindowsUpdateでSMB 1.0はもう使えなくなるとかなんとか

SMBの前提

L4のネットワーク接続

TCP/IPかNetBEUI

名前解決

NetBIOSかDNS

Port

NetBIOS:137(TCP/UDP)、138(UDP)、139(TCP)

Direct Hosting SMB(Windows 2000以降のTCP/IPを使用したSMB):445(TCP/UDP)

SMBパケットキャプチャ

LAN内のPCにある共有ファイルにコマンドプロンプト経由でアクセスしたところをキャプチャ

f:id:hayato-ota-rf:20170904071505j:plain

なんでコマンドプロンプトなのかって?

GUIだとフォルダ更新監視する為にセッション張りっぱなしになるし、視覚情報やファイル一覧とかの情報も取ってくるので、ノイズががががぁぁってなるからだからです

また、キャプチャ取る時に注意して欲しいのがSMBのバージョンです

SMB2を使っている環境なのに、SMBでフィルタかけてもなにも表示されません

 

キャプチャしたパケット

f:id:hayato-ota-rf:20170904071536j:plain

かなり通信の過程が省略されしまっているので、解説に使うキャプチャはWiresharkWikiにあるサンプルパケットを使います(笑)

通信手順

1.TCP sessionの確立

f:id:hayato-ota-rf:20170904071546j:plain

3WayハンドシェイクでTCP sessionを確立している

2.NetBIOS sessionの確立

Negotiate Requestの段階で、TCP sessionの中にNetBIOS sessionを確立するようなんですが、パケットの中身を見てみたところ

f:id:hayato-ota-rf:20170904071601j:plain

ほとんど情報をやり取りしてませんでした

どうもNetBEUI使用時代の名残であるだけのセッションらしく、TCP/IP環境下では正直いるのか?

ってなりますが、ないと上手くいかないとかなんとか

3.Negotiate Request&Negotiate Response

クライアントとサーバの機能レベルのすり合わせ、サーバからの認証要求的なことをやってるっぽい

Negotiate Responseパケットの中を覗いてみると

f:id:hayato-ota-rf:20170904071613j:plain

f:id:hayato-ota-rf:20170904071637j:plain

DFSをサポートしてますよ~だとか

暗号化はサポートしてませんよ~とか

クライアントに認証おねしゃす!ってかんじの中身が見て取れる

4.SMB sessionの確立

ここから認証情報のやり取りをしてSMB sessionを確立しているっぽい

Session Setup Requestの中を覗いてみると

f:id:hayato-ota-rf:20170904071652j:plain

ドメイン名だけ入れて、User nameがNULLなんで匿名アクセスでもしてるんですかね

 

Session Setup Responseの中を覗いてみると

f:id:hayato-ota-rf:20170904071705j:plain

STATUS_SUCCESSになっとる

セキュリティェ・・・

 

正しいかどうか分からないけど、WannaCryはサーバ側に管理者権限でSMB sessionを張って、ウイルス送りつけて実行とかなんとかってどっかで見た気がしたから、SMBの脆弱性って、穴をつけばAdministratorのパスワード無しでSMB session張れる的な感じなのかな?

だとしたら恐ろしすぐる

5.Tree sessionの確立

SMB sessionの中にTree sessionを確立しているっぽい

フォルダパス指定してそのフォルダ自体にsession確立するんっすね

Tree Connect Requestの中を覗いてみると

f:id:hayato-ota-rf:20170904071720j:plain

アクセスしたいフォルダのパス指定してますね

 

Tree Connect Responseの中を覗いてみると

f:id:hayato-ota-rf:20170904071746j:plain

STATUS_SUCCESSとなっているので、指定したフォルダパスあったんですね

6.Create Request&Create Response

ここから先程sessionを張ったフォルダに対してアクションを行っています

Create Requestの中を覗いてみると

f:id:hayato-ota-rf:20170904071757j:plain

Disposition:Open(if file exists open it, else fail)となっているので、

指定したfileがあればOpenして、なければfailを返せってことですね

場合によってはここをelse createとして、指定したfileがなければcreateとかもあるらしいです

てかこのCreate Request、Filenameが空だぞ?

 

Create Responseの中を覗いてみると

f:id:hayato-ota-rf:20170904071827j:plain

Create Action:The file existed and was openedとなっているので

指定したfileあったらしいっす

ようわからん(笑)

fileがCreateされた時刻とかもここでクライアントにResponseしてますね

7.GetInfo Request&GetInfo Response

ここで追加のfile情報の要求をしてるっぽい

GetInfo Responseの中を覗いてみると

f:id:hayato-ota-rf:20170904071840j:plain

なんか色々な情報をResponseしてますが、見るのたるいんでスルーで(笑)

検証結果

SMBのセキュリティの要はやはりSMB session確立時の認証だと思います(まあ当然な気もするが)

ここをAdministratorで認証された日には\(^o^)/オワタ

最後に未だにWindosXP使ってるやつ

f:id:hayato-ota-rf:20170904071855j:plain