법과 윤리 — 여기서부터 시작하는 이유
"해킹 기술"과 "사이버 범죄"를 가르는 유일한 기준은 딱 하나, 승인(authorization)입니다. 같은 명령어, 같은 도구라도 본인 소유 시스템이나 서면으로 허가받은 대상에서 쓰면 보안 연구이고, 허가 없는 제3자 시스템에서 쓰면 범죄입니다. 대한민국에서는 정보통신망 이용촉진 및 정보보호 등에 관한 법률 (정보통신망법)과 형법상 컴퓨터등 사용사기죄·업무방해죄가, 미국에서는 CFAA(Computer Fraud and Abuse Act)가 승인되지 않은 접근 자체를 처벌 대상으로 규정합니다.
실무에서는 프로젝트 시작 전 Rules of Engagement(RoE) 문서에 대상 범위(IP/도메인), 허용 시간대, 금지 기법(예: 실서비스 DoS 금지), 비상 연락망을 명시하고 양측이 서명합니다. 개인 학습 단계에서도 이 습관을 들이는 것이 좋습니다 — "내가 지금 손대는 이 시스템, 나에게 권한이 있는가?"를 매 실습 전에 스스로 확인하는 것입니다.
침투테스트 방법론 5단계
업계 표준(PTES, OWASP Testing Guide)이 공유하는 공통 골격입니다. 각 단계는 순서대로 진행되며, 다음 단계는 이전 단계의 산출물을 입력으로 씁니다.
정찰 (Recon)
공개 정보 수집. 도메인, IP 대역, 기술 스택, 조직 구조 파악.
스캐닝·열거
열린 포트, 실행 서비스, 버전 정보를 능동적으로 확인.
취약점 분석
알려진 CVE, 설정 오류, 로직 결함 매칭.
익스플로잇
랩 환경에서만 — 취약점이 실제 악용 가능한지 검증.
보고 (Report)
재현 절차·위험도·조치 방안을 문서화해 전달.
이 매뉴얼은 1~3단계와 5단계를 자세히 다루고, 4단계는 본인 소유 랩에서만 다루는 것을 전제로 툴 사용법 위주로 설명합니다.
합법적으로 연습할 수 있는 랩 만들기
실습은 반드시 격리된 환경에서 진행합니다. 아래는 개발자가 가장 빠르게 시작할 수 있는 조합입니다.
① 공격자 머신 — Kali Linux
침투테스트용 도구가 사전 설치된 데비안 기반 배포판입니다. VM으로만 운용하고 호스트 OS와 분리합니다.
② 대상 머신 — 취약점 실습용 VM
고의로 취약하게 설계된 학습용 이미지입니다. 실제 서비스가 아니므로 마음껏 공격해도 합법입니다.
③ 클라우드 기반 연습 플랫폼
| 플랫폼 | 특징 | 추천 대상 |
|---|---|---|
| TryHackMe | 가이드형 학습, 초보자 친화적 룸 구성 | 입문자 |
| HackTheBox | 실전형 박스, 난이도 높음, 커뮤니티 활발 | 중급 이상 |
| PortSwigger Web Security Academy | Burp Suite 제작사 운영, 무료, 웹 취약점 특화 | 웹 개발자 |
| PentesterLab | 실습 중심, CVE 재현 랩 다수 | 실무 지향 |
이 플랫폼들은 자체 인프라가 "공격받는 것"에 동의한 상태로 운영되므로, 별도 서면 승인 없이도 합법적으로 실습할 수 있습니다.
정찰과 스캐닝 — Nmap
Nmap은 네트워크 상의 호스트, 열린 포트, 서비스 버전을 식별하는 표준 스캐너입니다. 자신의 서버 상태를 점검하거나 보안 설정을 검증할 때도 실무에서 매일 쓰입니다.
-sV 서비스 버전 탐지 · -A 종합 진단(OS/버전/트레이스라우트) ·
-p- 전체 포트 · -T4 스캔 속도(공격적)
본인 네트워크의 이상 트래픽 탐지, 프로토콜 디버깅, 암호화되지 않은 통신 점검에 사용합니다. GUI에서 캡처 후 필터를 적용해 특정 프로토콜만 확인합니다.
웹 애플리케이션 분석 — Burp Suite / OWASP ZAP
웹 취약점 진단의 핵심은 브라우저와 서버 사이에 프록시를 끼워 넣어 요청·응답을 가로채고 조작해보는 것입니다. 아래는 PortSwigger Web Security Academy나 DVWA 같은 합법적 대상에 대한 표준 워크플로우입니다.
Repeater 탭에서 파라미터 값을 바꿔 재전송하며 입력 검증 로직을 관찰합니다. 예: 게시글 ID를 다른 사용자의 값으로 바꿔 보내 접근 제어(IDOR)가 제대로 되는지 확인.
OWASP Top 10 — 웹 취약점 10대 유형
OWASP 재단이 실제 침해 사고 데이터를 기반으로 매년 갱신하는 웹 애플리케이션 취약점 순위입니다. 코드를 작성하는 개발자 입장에서는 "무엇을 스캔당하는가"보다 "무엇을 미리 막을 것인가"로 읽는 게 더 유용합니다.
| 유형 | 설명 | 방어 기본기 |
|---|---|---|
| Broken Access Control | 권한 없는 리소스에 접근 가능 | 서버 측 권한 검증, 객체 참조 재확인 |
| Injection (SQL/NoSQL/Command) | 사용자 입력이 쿼리·명령으로 실행됨 | Prepared Statement, 입력 화이트리스트 |
| Cryptographic Failures | 민감정보 평문 저장·전송 | TLS 강제, bcrypt/Argon2 해싱 |
| Insecure Design | 설계 단계부터 위협모델 부재 | Threat modeling, 보안 요구사항 명시 |
| Security Misconfiguration | 기본 계정, 불필요 서비스 노출 | 최소 권한 원칙, 정기 하드닝 |
| Vulnerable Components | 취약한 오픈소스 의존성 사용 | SCA 도구, 정기 의존성 업데이트 |
| Auth & Session Failures | 세션 고정, 약한 인증 | MFA, 세션 만료/재발급 정책 |
| Software/Data Integrity | 서명 검증 없는 업데이트·역직렬화 | 서명 검증, 신뢰 소스 제한 |
| Logging & Monitoring Failures | 침해 발생해도 탐지 불가 | 중앙 로깅, 이상행위 알림 |
| SSRF | 서버가 공격자가 지정한 URL로 요청 | 아웃바운드 요청 화이트리스트 |
AI/LLM 애플리케이션 보안 — OWASP LLM Top 10
LLM을 활용한 서비스를 만드는 개발자에게 특히 중요한 취약점 유형입니다. 전통적 웹 보안과 겹치지 않는 새로운 공격 표면이 존재합니다.
사용자 입력이나 외부 문서에 숨겨진 지시문이 시스템 프롬프트를 무력화. 방어: 신뢰 경계 분리, 출력 검증, 도구 호출 권한 최소화.
LLM 출력을 검증 없이 실행/렌더링해 XSS·명령 실행으로 이어짐. 방어: 출력을 신뢰하지 않는 사용자 입력처럼 취급하고 항상 sanitize.
에이전트에 과도한 도구·API 권한 부여. 방어: 최소 권한, 민감 작업은 사람 승인 단계 삽입.
학습 데이터·시스템 프롬프트·API 키가 응답에 노출. 방어: 시스템 프롬프트에 비밀정보 미포함, 응답 필터링 계층 추가.
전체 목록과 최신 사례는 OWASP GenAI Security Project 공식 문서를 참고하는 것을 권장합니다.
합법적으로 돈이 되는 경로
자격증 로드맵
- CompTIA Security+ — 보안 기초 개념 검증, 입문 표준
- eJPT (INE) — 실습형 입문 침투테스트 자격
- OSCP (Offensive Security) — 실전형 최고 권위 자격, 24시간 실습 시험
- CEH (EC-Council) — 이론 중심, 국내 인지도 높음
버그바운티로 수익화
- HackerOne / Bugcrowd — 기업이 공식 허가한 대상만 테스트, 취약점 리포트로 포상금 획득
- Scope 문서를 반드시 확인 — 범위 밖 자산 테스트는 즉시 실격이자 위법
- 초기에는 중복 제보가 잦은 만큼 리포트 품질(재현 가능한 PoC, 명확한 영향도 서술)이 승패를 가름
보고서 작성 — 발견보다 전달이 어렵다
침투테스트의 가치는 발견한 취약점이 아니라, 그것이 고쳐지는 것에서 나옵니다. 좋은 보고서는 개발자가 30분 안에 재현하고 고칠 수 있게 씁니다.
위험도는 CVSS(Common Vulnerability Scoring System) 기준으로 산정하고, 개발팀이 바로 쓸 수 있도록 조치안은 코드 레벨로 구체화합니다(예: "입력 검증 강화" 대신 "이 파라미터에 parameterized query 적용").