어두운 방 안, 후드를 뒤집어쓴 해커가 번개 같은 속도로 키보드를 두드리며 순식간에 시스템을 장악하는 모습. 영화에서 흔히 보는 장면이죠. 🎬 하지만 실제 전문가가 수행하는 웹 모의해킹(Web Penetration Testing)은 그런 무작위적인 공격이 아니라, 마치 잘 짜인 군사 작전처럼 매우 체계적이고 단계적인 절차에 따라 진행됩니다.

오늘은 실제 보안 전문가들이 어떤 과정을 거쳐 우리 웹사이트의 숨은 허점을 찾아내는지, 그 흥미진진한 '공격 시나리오'의 전 과정을 단계별로 상세히 알아보겠습니다.
1단계: 계획 및 범위 산정 (Planning & Scoping) 📝
모든 작전의 시작은 철저한 계획입니다. 모의해킹 역시 **'무엇을, 어디까지, 어떻게 테스트할 것인가'**를 명확히 정의하는 것에서부터 출발합니다. 이 단계는 고객과 모의해킹 수행자 간의 신뢰를 형성하고, 테스트가 안전하고 효과적으로 진행되기 위한 가장 중요한 과정입니다.
- 🎯 목표 설정: 이번 테스트의 최종 목표는 무엇인가? 단순히 웹 서버의 관리자 권한을 획득하는 것인가, 아니면 핵심 데이터베이스에 접근해 특정 고객 정보를 빼내는 것인가 등을 구체적으로 정합니다.
- 🔍 범위 산정: 테스트를 수행할 웹사이트의 주소(URL), IP 대역 등을 명확히 합니다. 반대로, 테스트해서는 안 되는 시스템(예: 실시간 운영 중인 다른 서비스)을 '범위 외(Out-of-Scope)'로 지정하여 혹시 모를 사고를 방지합니다.
- 🤝 규칙 협의 (Rules of Engagement): 공격을 수행할 수 있는 시간(예: 업무 시간 이후, 새벽 시간), 허용되는 공격 유형과 금지되는 공격 유형(예: 서비스 거부 공격(DoS) 금지) 등 세부적인 규칙을 정합니다.
- 📜 법적 동의: 비밀유지계약(NDA)과 작업 동의서 등을 작성하여 모든 테스트 활동이 합법적인 테두리 안에서 이루어짐을 보장합니다.
2단계: 정찰 및 정보 수집 (Reconnaissance) 🔎
본격적인 공격에 앞서 목표물에 대한 정보를 최대한 많이 수집하는 단계입니다. "아는 만큼 보인다"는 말처럼, 이 단계에서 수집한 정보의 양과 질이 전체 테스트의 성패를 좌우하기도 합니다.
- passively (소극적 정보 수집): 목표 시스템에 직접적인 신호를 보내지 않고, 인터넷에 공개된 정보를 통해 정보를 수집합니다. 마치 멀리서 망원경으로 적진을 살피는 것과 같습니다.
- 구글 해킹(Google Hacking): 특정 검색 연산자를 사용해 웹사이트의 설정 파일, 숨겨진 페이지 등 민감한 정보를 찾아냅니다.
- WHOIS 조회: 도메인 등록 정보를 통해 관리자 연락처, 네임서버 정보 등을 확인합니다.
- SNS 및 채용 사이트 분석: 회사 직원들의 SNS나 채용 공고를 통해 내부에서 사용하는 기술 스택(프로그래밍 언어, 프레임워크, DB 등)을 유추합니다.
- actively (적극적 정보 수집): 목표 시스템에 직접 트래픽을 보내 반응을 살피며 정보를 얻습니다.
- DNS 쿼리: 어떤 하위 도메인들이 존재하는지 확인합니다.
- 포트 스캔: 어떤 서비스 포트(문)가 열려 있는지 확인합니다. (예: 80번-웹, 22번-SSH)
3단계: 스캐닝 및 분석 (Scanning & Analysis) 📡
정찰 단계에서 얻은 정보를 바탕으로, 자동화된 도구를 사용해 시스템의 어떤 부분에 취약점이 있을지 구체적으로 스캔하고 분석합니다. 이제 적진의 지도를 그리는 단계라고 할 수 있습니다.
- 포트 스캐너 (e.g., Nmap): 어떤 포트가 열려 있고, 그 포트에서 어떤 서비스(웹 서버, DB 서버 등)와 버전이 동작하고 있는지 상세하게 파악합니다.
- 취약점 스캐너 (e.g., Nessus, OpenVAS): 스캔을 통해 식별된 서비스 버전에 알려진 보안 취약점(CVE)이 있는지 자동으로 목록을 만들어 줍니다.
- 웹 구조 분석 (Spidering): 웹사이트의 모든 페이지와 디렉터리 구조를 파악하여 공격할 지점(Attack Surface)을 식별합니다.
4단계: 취약점 공격 및 접근 획득 (Exploitation) 💥
드디어 실전 공격 단계입니다! 이전 단계들에서 수집하고 분석한 정보를 바탕으로, 실제 취약점을 공격하여 시스템에 침투하고 접근 권한을 획득합니다.
- 공격 코드 실행: 식별된 취약점(예: SQL 인젝션, XSS, 파일 업로드 취약점)을 이용해 로그인 우회, 악성 스크립트 실행, 서버에 악성 파일(웹쉘) 업로드 등을 시도합니다.
- 사회 공학적 기법: 필요한 경우, 정찰 단계에서 얻은 정보를 바탕으로 관리자에게 피싱 메일을 보내는 등의 기법을 사용하기도 합니다.
- 인증 정보 탈취: 로그인 페이지를 공격해 관리자나 사용자의 아이디와 비밀번호를 알아내려 시도합니다.
이 단계의 목표는 어떻게든 시스템의 '발판(Foothold)'을 마련하는 것, 즉 문을 열고 안으로 한 발짝 들어가는 것입니다.
5단계: 권한 상승 및 내부망 이동 (Post-Exploitation) 🏃♂️
시스템에 일단 침투했다고 해서 임무가 끝나는 것은 아닙니다. 해커는 더 높은 권한을 얻어 더 깊숙한 곳으로 이동하려고 시도합니다.
- 권한 상승 (Privilege Escalation): 처음 획득한 권한이 일반 사용자 수준이라면, 운영체제(OS)나 애플리케이션의 또 다른 취약점을 이용해 시스템 최고 관리자(root, Administrator) 권한을 획득하려 시도합니다.
- 내부망 이동 (Lateral Movement): 관리자 권한을 얻은 서버를 발판 삼아, 외부에서는 접근할 수 없었던 내부망의 다른 서버들(데이터베이스 서버, 파일 서버 등)로 공격을 확장해 나갑니다.
- 접근 유지 (Maintaining Access): 실제 해커처럼 나중에도 쉽게 다시 들어올 수 있도록 백도어(Backdoor)를 설치하여 지속적인 통제권을 확보하는 시뮬레이션을 합니다.
6단계: 보고 및 해결 방안 제시 (Reporting) 📄
모든 공격 시나리오가 끝나면, 모의해킹 전문가는 자신이 들어왔던 모든 흔적(백도어, 로그 등)을 깨끗하게 지우고 작전을 마무리합니다. 그리고 가장 중요한 결과물인 보고서를 작성합니다.
- 요약 보고서 (Executive Summary): 경영진이 이해하기 쉽도록 발견된 취약점의 위험도와 비즈니스에 미치는 영향을 요약합니다.
- 상세 분석 보고서 (Technical Details): 개발자와 실무자를 위해 어떤 취약점이 어떤 과정을 통해 공격에 성공했는지, 재현 가능한 상세한 시나리오와 증거(스크린샷 등)를 첨부합니다.
- 권고안 (Recommendations): 발견된 모든 취약점에 대해 위험도 순위를 정하고, 각각의 문제를 어떻게 해결할 수 있는지 구체적인 해결 방안(코드 수정 예시, 서버 설정 변경 가이드 등)을 제시합니다.
이 보고서를 바탕으로 기업은 취약점을 패치하고, 다시 테스트(재검증)를 진행하며 보안 수준을 한 단계 끌어올리게 됩니다. 이처럼 모의해킹은 파괴가 아닌, 더 안전한 시스템을 만들기 위한 '건설적인 파괴' 활동인 셈입니다. 🏗️
'일반IT' 카테고리의 다른 글
| 🐍 파이썬 웹 크롤러/스캐너 Requests와 BeautifulSoup 날개 달기 (5) | 2025.08.16 |
|---|---|
| 🐍 파이썬 웹 크롤러/스캐너, 뼈대부터 제대로 설계하기 (3) | 2025.08.16 |
| 🛡️ "우리 웹사이트는 안전해요"… 정말 그럴까요? 웹 모의해킹이 필수인 이유 (2) | 2025.08.16 |
| 믿었던 Docker Hub 최신 이미지의 배신? CVE 대처법 😱 (2) | 2025.08.15 |
| Jenkins의 자물쇠: Credentials는 정말 안전할까? 🔑 (4) | 2025.08.15 |