Eyes, JAPAN Blog > wanna-scanというツールの紹介

wanna-scanというツールの紹介

Yuya Kanesawa

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。

こんにちは.アルバイトスタッフの兼澤です.会津では雪が溶けてきており,春の訪れを感じています.今回は,私が作ったwanna-scanというツールの紹介をします.

wanna-scanについて

https://github.com/ywkw1717/wanna-scan

このツールは,WannaCryが使う脆弱性が存在している端末と,WannaCryが設置するバックドアであるDoublePulsarが存在する端末を探し出すことができます.WannaCryと言えば,昨年5月辺りから世界中で感染が確認され,日本での感染も確認されたランサムウェアの一つです.騒動が収まったかと思いましたが,今年の1月にはNTTデータさんの社内システムがWannaCry2.0の亜種に感染していたという報告もありました.( http://tech.nikkeibp.co.jp/it/atcl/news/17/012202996/ )

DoublePulsar検知ツールを探すとGitHubでいくつか見つかりますが,同一ネットワーク内を探すようなものがあまり見当たらなかったり,隔離されたネットワークで検知できるか試してみてもプログラム内にバグがあり,検知できていないツールもありました.

そこで,プログラミングの練習にもなるし丁度いいなと思い,作ることにしました.使用した言語は,私が最近使っていたという理由のみでRubyを使って書きました.

使い方など

現在,3つのオプションを用意していますが,重要なのはiオプションとIオプションです.まずiオプションで $ ruby wanna_scan.rb -i 192.168.0.153 とした場合,192.168.0.153 に対して,脆弱性が存在しているか・DoublePulsarが設置されていないかを調査することができます.

もし脆弱性が存在する場合は上記のような出力をするようにしています.

次にIオプションですが,こちらはNICのデバイス名で指定できるようにしました.例えば,enp0s9という名前のネットワークインターフェースを調べたい時は以下のように指定します.

技術的なことを説明すると,同一ネットワーク内を調査する際はまず,arp-scanコマンドを用いてホストを列挙しています.その後,nmapを用いて445番ポートが空いている端末を探し,その端末に対してWannaCryが使うSMBパケットを1バイトずつ組み立てて送信し,その応答パケットを見ています.もし脆弱性が存在する場合はPeekNamedPipe Requestのレスポンスにおいて,NT Statusの値がSTATUS_INSUFF_SERVER_RESOURCES (0xc0000205) になり,DoublePulsarが存在する場合はMultiplex IDという値を65にして送った場合に81が返るような挙動をするので,そのような特定の値になっているかどうかをこのツールでは確認しています.

まとめ

最近でもバグを見つけて修正したばかりでまだまだ発展途上のものですが,少しでも誰かのお役に立てれば嬉しい限りです.”もっとこうしたほうがいいよ”とか”ここのコードもっと綺麗に書けるよ”とかなんでもお待ちしておりますのでよろしくお願いします.

Comments are closed.