title: "Windows 네트워크 스택: GoodbyeDPI(WinDivert/WFP) vs Wireshark(Npcap/NDIS)"
slug: windows-stack-goodbyedpi-vs-wireshark
series: "URL·TLS·SNI·필터링·DPI 실전 가이드"
author: EX Corp. Tech Team
summary: "GoodbyeDPI는 WFP(WinDivert)에서 인라인 수정/주입, Wireshark는 NDIS(LWF: Npcap)에서 패시브 캡처. 서로 경쟁하지 않고 레이어가 달라 공존한다. 인/아웃바운드 경로별로 무엇이 먼저/나중에 보이는지 정리."
tags: [Windows, WFP, WinDivert, Npcap, NDIS, DPI, 패킷캡처, 네트워크스택]
reading_time: "10~12분"
cover_image_suggestion: "Windows 네트워크 스택 단면도: App↔TCP/IP↔WFP(WinDivert)↔NDIS(Npcap)↔NIC, 인/아웃바운드 화살표 포함"
한눈에 핵심
- GoodbyeDPI = WinDivert = WFP 레이어: 패킷을 가로채서(인라인) 분할/변형/드롭/재주입할 수 있다.
- Wireshark = Npcap = NDIS LWF 레이어: 프레임을 복사해서(패시브) 캡처만 한다. 변경은 못 한다.
- 경쟁 아님: 서로 다른 드라이버/레이어이므로 공존. 다만 다른 보안/ VPN 드라이버와 순서/성능 상호작용은 있을 수 있다.
- 관측 관점:
- 아웃바운드: Wireshark는 GoodbyeDPI가 가공한 후의 패킷을 본다.
- 인바운드: Wireshark는 원본 프레임(NIC에서 올라온 직후) 을 먼저 보고, 이후 GoodbyeDPI가 드롭/가공할 수 있다.
1) Windows 스택 개념도
[User App]
│ Winsock
[afd.sys / tcpip.sys] ← L4/L7 스택
│
[WFP callout 레이어] ← WinDivert(=GoodbyeDPI) 훅 포인트 (인라인 수정/주입)
│
[NDIS LWF 필터 체인] ← Npcap(=Wireshark) 훅 포인트 (패시브 캡처)
│
[NIC Miniport Driver]
│
────────────── 네트워크 ──────────────
- WFP(Windows Filtering Platform): 커널 네트워크 경로의 여러 지점(ALE/Transport/Stream 등)에 콜아웃(callout) 을 걸어 허용/차단/수정/주입 가능. WinDivert는 이 레이어를 이용.
- NDIS(LWF: Lightweight Filter): NIC 드라이버 위/아래에 필터 드라이버 를 적층하여 프레임을 관찰/미러링. Npcap은 여기에서 복사본을 어플리케이션(Wireshark)로 전달.
2) 인/아웃바운드에서 “무엇을 먼저 보나”
아웃바운드(내 PC → 인터넷)
App → TCP/IP → WFP(WinDivert/GoodbyeDPI: 수정/분할/주입) → NDIS(Npcap/Wireshark: 캡처) → NIC → 외부
- Wireshark는 수정된 결과물을 본다.
- 예: TLS ClientHello가 분할/재정렬되면 캡처에도 동일하게 나타난다.
인바운드(인터넷 → 내 PC)
외부 → NIC → NDIS(Npcap/Wireshark: 캡처) → WFP(WinDivert/GoodbyeDPI: 드롭/수정) → TCP/IP → App
- Wireshark는 NIC에서 올라오는 원본 프레임을 먼저 본다.
- 이후 GoodbyeDPI가 해당 패킷을 드롭했다면, 애플리케이션까지는 도달하지 않아도 캡처에는 남는다.
결론: “누가 앞이냐”는 방향에 따라 달리 보이지만, 구조적으로는 WFP(조작) → NDIS(캡처) 순으로 이해하면 쉽다(아웃바운드 기준).
3) 역할 차이 정리
| 항목 | GoodbyeDPI (WinDivert/WFP) | Wireshark (Npcap/NDIS) |
|---|---|---|
| 레이어 | WFP callout(커널 필터/주입) | NDIS LWF(경량 필터) |
| 동작 | 인라인: 허용/차단/수정/분할/재주입 | 패시브: 복사·제공(읽기 전용) |
| 목적 | 트래픽 행위 변경/교란/정책 적용 | 트래픽 관찰/포렌식/디버깅 |
| 영향 | 세션 상태/성능에 직접 영향 가능 | 성능 영향은 비교적 적음(캡처 부하 제외) |
| 공존성 | 다른 WFP 콜아웃과 순서 상호작용 | 다른 LWF와 적층, 순서 영향 가능 |
4) 현업 관측 팁(안전·합법 범위 내)
- 동일 세션을 두 시점에서 비교:
- 아웃바운드: Wireshark에 잡힌 ClientHello가 분할/변형 돼 보이면, 상위(WFP)에서 가공이 있었던 것.
- 인바운드: 캡처에는 보이는데 앱이 못 받으면, WFP 단계에서 드롭/차단 가능성.
- 다른 보안/VPN과의 상호작용:
- EPP/EDR, VPN(TAP/LWF/WFP), 방화벽 드라이버가 레이어·순서에 관여. 성능 이슈나 캡처 누락이 생기면 드라이버 스택 순서/우선순위 점검.
- 성능:
- 캡처는 드롭률 모니터링(고속 NIC, 다량 세션).
- 인라인 조작은 RTT/핸드셰이크 실패율 지표로 영향 평가.
주의: 업무·법규를 준수한 진단/관측 목적에서만 활용하세요. 타인의 통신을 무단으로 조작하거나 회피를 유도하는 행위는 금지됩니다.
5) 안전한 랩(테스트) 체크리스트
- 테스트 대상/범위: 사내 승인된 테스트 호스트/도메인 으로 한정.
- 측정 지표: ClientHello 분할 유무, ServerHello 수신 여부, RST/타임아웃 패턴.
- 툴 세트:
- Wireshark/Npcap(최신),
tshark로 CSV 로깅 - Windows 이벤트 로그(네트워킹), 성능 카운터
- Wireshark/Npcap(최신),
- 재현성: 동일 조건으로 3회 이상 캡처 비교(아웃/인 바운드, VPN 온/오프, H2/H3).
6) 트러블슈팅 Q&A
Q1. Wireshark가 “수정된” 패킷만 보여요. 원본도 보고 싶어요.
A. 인바운드 관점 캡처를 추가하세요(NIC 수신 경로). 아웃바운드만 보면 이미 WFP 변형 후입니다.
Q2. 캡처가 비면 Npcap/인터페이스 문제일까요?
A. 관리자 권한, 올바른 인터페이스 선택(특히 VPN 어댑터), 오프로드 옵션 확인. 고속 환경은 버퍼/스냅렌 조정.
Q3. 다른 보안 제품과 충돌합니까?
A. 충돌이라기보다 순서·성능 상호작용 이슈가 잦습니다. VPN/EDR 배포 시 레이어 우선순위 문서를 확인하세요.
7) 요약
- GoodbyeDPI는 WFP(WinDivert) 에서 조작하는 인라인 도구, Wireshark는 NDIS(Npcap) 에서 관찰하는 캡처 도구.
- 아웃바운드에서는 Wireshark가 조작 이후 의 패킷을, 인바운드에서는 조작 이전 의 프레임을 본다.
- 둘은 경쟁하지 않고 공존한다. 다만 다른 필터/드라이버와의 순서/성능 관리가 중요하다.
답글 남기기