개념
레슨 6의 DAST, 실제로는 이렇게 생겼다
레슨 6에서 DAST(Dynamic Application Security Testing)를 "실제로 애플리케이션을 실행한 상태에서, 외부에서 공격하듯 요청을 보내며 취약점을 찾는 것"이라고 배웠다. OWASP ZAP과 Burp Suite는 이 개념을 실제로 실행하는 대표적인 두 도구다.
프록시로 트래픽을 가로챈다는 점에서 익숙하다
모듈 9(레슨 10)에서 Charles로 네트워크 트래픽을 가로채는 법을 배웠다. ZAP과 Burp Suite도 같은 프록시 방식으로 동작한다 — 브라우저의 모든 요청이 이 도구를 거쳐가게 설정하면, 도구가 그 요청·응답을 기록하고 분석한다. Charles가 "디버깅"이 목적이었다면, ZAP·Burp Suite는 그 트래픽을 의도적으로 조작해 취약점을 찾아내는 것이 목적이라는 점이 다르다.
Charles(모듈 9): 요청을 관찰하고, 필요하면 조작해 화면 반응을 확인
ZAP/Burp Suite: 요청을 자동으로 변형해 대량으로 반복 전송하며,
취약점 신호가 나오는지 자동으로 탐지자동 스캔이 하는 일
ZAP의 "Active Scan"을 예로 들면, 도구가 사람 대신 다음을 자동으로 반복한다.
1. 페이지의 모든 입력 필드와 파라미터를 자동으로 찾아냄
2. 각 필드에 레슨 10에서 손으로 시도했던 것과 같은 종류의
테스트 값(' OR '1'='1, <script>alert(1)</script> 등)을
자동으로 대입
3. 응답을 분석해 에러 메시지, 비정상적인 응답 패턴이 나오는지 확인
4. 의심되는 항목을 위험도별로 정리해 리포트로 제시레슨 10에서 사람이 손으로 한 땀 한 땀 시도했던 것을, 이 도구는 수백~수천 개의 입력 조합에 대해 자동으로, 훨씬 빠르게 반복한다. 이건 모듈 1(레슨 5)에서 배운 "조합 폭발"을 사람이 아니라 도구의 힘으로 다루는 방식이기도 하다.
Burp Suite와 ZAP — 무엇이 다른가
| OWASP ZAP | Burp Suite | |
|---|---|---|
| 라이선스 | 완전 무료(오픈소스) | 무료판(Community)은 기능 제한, 유료판(Professional)이 실무 표준 |
| 진입 장벽 | 상대적으로 쉬움, 입문용으로 많이 추천됨 | 기능이 더 강력하지만 학습 곡선이 있음 |
| 확장성 | 플러그인으로 확장 가능 | 확장 기능(BApp Store)이 더 풍부하고 전문 침투 테스터가 많이 씀 |
실무에서는 예산과 팀의 전문성 수준에 따라 선택이 갈린다 — 이건 레슨 3(SoapUI 등)에서 반복해온 "도구는 우열이 아니라 상황의 문제"라는 원칙과 같다.
자동 스캔 결과를 그대로 믿으면 안 되는 이유
레슨 6에서 "SAST 결과의 모든 경고를 실제 취약점으로 단정하지 말라"고 배웠다. DAST 스캐너도 마찬가지다 — 자동 스캔은 의심되는 패턴을 찾아낼 뿐, 그게 실제로 악용 가능한 진짜 취약점인지는 사람이 확인해야 한다.
스캐너 보고: "이 파라미터에서 SQL Injection 가능성이 의심됩니다"
QA가 확인할 것:
- 레슨 10에서 배운 방식으로 실제로 재현되는가?
- 재현된다면 어떤 데이터까지 노출/조작 가능한가?
- 재현이 안 된다면 오탐(false positive)으로 분류하고 근거를 남긴다이 확인 없이 스캐너 결과를 그대로 개발팀에 던지면, 오탐이 섞인 채로 전달되어 "이거 확인해보니 별거 아니던데요"라는 반응이 반복되고, 다음번 진짜 위험한 보고까지 신뢰를 잃게 된다 — 모듈 1(레슨 2)에서 배운, 잘못된 확신이 신뢰를 깎는다는 원칙과 같다.
실무에서 왜 필요한가
전담 보안팀이 없는 조직에서, QA가 릴리스 전 ZAP으로 자동 스캔을 한 번 돌려보는 것만으로도 명백한 보안 구멍(예: 관리자 페이지가 인증 없이 열려 있음)을 출시 전에 잡아낼 수 있다. 다만 이 레슨의 핵심은 도구 사용법 자체보다 **"스캐너는 후보를 찾아줄 뿐, 최종 판단은 레슨 10에서 배운 수동 확인으로 검증해야 한다"**는 태도다. 자동화와 수동 확인이 함께 있어야 신뢰할 수 있는 결과가 나온다.