metasploit frameworkはkaliにプリインストールされているハッキングツールです。
過去に発見された脆弱性情報を元に、その脆弱性を悪用して侵入する手段(モジュール)をデータベース化して内蔵しています。
さらには侵入後に接続を確立しておく手段が用意されており、これを相手側サーバーに運搬する(PAYLOAD)ことが出来、最終的にハッキングさせます。
逆に言うとまだ脆弱性が発見されていないサーバーにはこの攻撃も成立しないことになります。
(注意)当たり前ですが他人の管理下にあるサーバーを攻撃するのはやめましょう。明らかな犯罪行為です。
Metasploit Framework Consoleの起動
画面左上のkaliアイコンから 08 Exploitation Tools ー metasploit framework を選択します
これで勝手にターミナルが起動しmsfconsoleが立ち上がります。
msfconsole = MetaSploitFramework console
Metasploit Frameworkはこのconsoleを通じて操作します。
msfconsoleは一種のシェルと考えれば良いです。ターミナルのいつものシェル(kaliのデフォルトでは ” zsh(zシェル) ” が、msfconsoleのシェル(ハッキング専門のシェル)に切り替わる感じです。ちなみにmsfconsoleから抜けていつものシェルに戻るコマンドは、 ” exit ” です。( ” quit ” でも良い)
最初は、エラーや警告が何回か出ましたが、起動と終了を繰り返すうちに出なくなりました。
上記は起動画面ですが、2行目から4行目まではデータベースが保有するモジュールの数と思われます。
- exploit (侵入手段) 2111個
- auxilary (偵察手段) 1206個
- post (リモート接続後のツール) 412個
- payloads (侵入後に接続を確立する手段) 975個
- encoders (暗号化手段) 46個
- nops (何もしない) 11個
- evasion (アンチウイルス回避手段) 9個
なお下から4行目 ” msf6 > ” の後の4行は何らかの警告が出ています。非推奨の引数を変更してくれと言っていて、該当ファイルの980行目はタイムスタンプに関するものですのでこれに関連する不具合でしょうか。いずれにせよ動作には関係ないようです。
大まかな作業の流れ
- ターゲットの特定
- 適切なモジュールを探す
- モジュールの決定
- モジュールの設定項目の設定
- 実行する
- 相手サーバー内での操作(ハッキング)
ここでは大まかな作業の流れを解説します。
ターゲットの特定
例えばnmapなどで、適切なターゲットのIPアドレス、開いているポート番号、OSの種類とそのバージョン、待機しているアプリケーションの種類とそのバージョンを調べて当たりをつけておきます。
msfconsole上でもnmapは動きます
適切なモジュールを探す
” search ” コマンドを使用して、データベースからターゲットに対して適切なモジュールを探します。
検索には、下記の検索フィールドを使用することもできます。(使用しなくても良い)
- app: 入力値(client/server)
- auther: モジュールの作者名
- type: モジュールのタイプ 入力値 [ auxiliary(侵入の準備)/ exploit(侵入)/ payload(侵入後の接続の確立)/ post(接続後のハッキング操作)/ encoder(暗号化)/ nop(何もしない)]
- name: モジュールの名前
- platform: OSやアプリケーションの種類
- bid: 脆弱性データベースのID
- cve: 脆弱性データベースのID
- edb: 脆弱性データベースのID
- osvdb: 脆弱性データベースのID
ここではH田病院の事案で有名になったCVE-2018-13379で検索してみます。
search cve:CVE-2018-13379
1件ヒットしました。
ヒットした内容:
- ナンバー: 0
- Name: auxiliary/gather/fortios_vpnssl_traversal_creds_leak
- Disclosure Date
- Rank: Normal
- Check: No
- Description: FortiOS Path Traversal Credential Gatherer
(フォーティネット社の)フォーティOSの認証情報収集機能とあります。
モジュールの決定
モジュールの決定には ” use ” コマンドを使います。
use auxiliary/gather/fortios_vpnssl_traversal_creds_leak
プロンプトが、msf6 auxiliary(gather/fortios_vpnssl_traversal_creds_leak) >
と変わり、使用するモジュールが表示されています。
ちなみに選択したモジュールを解除するコマンドは ” back “です
モジュールの設定項目の設定
ここから先は選択したモジュールごとに設定項目が異なります。
今回は、auxiliary(gather/fortios_vpnssl_traversal_creds_leak)で続行してみます。
まずは、どんな項目を設定しなければならないかを調べます。
show options
オプションは9項目あります。このうちRequiredが ” yes ” の項目は必須項目ですので埋めなければなりません。
Requiredが ” yes ” かつ埋まっていない項目は ” RHOST “のみです。
RHOSTとはリモートホスト(=相手サーバー:ターゲット)のことです。次のコマンドで相手サーバーを特定させます。
RHOST、RPORTは相手のIPとポート番号。
反対語はLHOST、LPORTで、自分のIPとポート番号です。(L = Local)
set RHOST 192.168.xx.xx
ここでは、ターゲットを192.168.11.13にしてみます。
” show options ” で確認すると、 ” RHOSTS ” に ” 192.168.11.13 ” が入っており、必須項目は満たされているのがわかります。
さて実行コマンドは、 ” run ” です。
実行結果は上記のとおり
ターゲットはFortiOSの機器ではありませんので当然偵察には失敗しています。
えっ、ターゲットは何だったかって?
この ” 192.168.11.13 ” はウチのA⚫︎⚫︎zonのア⚫︎クサ先生です。
その後の操作
ここまでは偵察なので実際の侵入は ” exploit ” モジュールを検索後に使用( ” use ” )してその各種設定を行います。
設定内容はモジュールによって違いますが、
- モジュールのオプション設定
- ターゲットの設定
- ペイロードオプションの設定
などを行います。
そしていよいよ 侵入の実行(exploitコマンド) ー 相手サーバーでのペイロード展開 ー 相手サーバーへのリモート接続の確立 ー 相手サーバー上での権限の奪取・ランサムウェアの展開 ー 相手ネットワーク内での水平展開などやりたい放題へと移行します。
まとめ
- 脆弱性情報が公表されると、
- メーカーが対応パッチを発表するが、
- 同時にmetasploit frameworkのデータベースには侵入モジュールが搭載される
- パッチを当てないでいるとそのまますぐにそのデータベースを使って侵入可能な状態となる
- 侵入後の被害の程度はサーバーやネットワークのセキュリティ設定レベルによる
ということになります。
脆弱性修正のパッチの情報が出るとすぐに当てなければならない理由がここにあります。
追加:Parrotでのmsfconsole の起動
画面左上の ParrotApplications ー Pentesting ー Exploitation Tools ー Metasploit Framework ー Metasploit Consoleで起動します。
普通に起動できました。
バージョンは6.3.5でkaliのもの(6.3.14)より若干古いです。
CVE-2018-13379でsearchした結果。kaliの時と同じでした。
コメント