보안 도구를 직접 만들면 성숙한 스캐너 뒤의 입력 처리, 타임아웃, 동시성, 프로토콜 필드, 오류 처리, 결과 필터링을 이해할 수 있습니다. 이 실습형 과정은 Python으로 정찰 도구를 개발하고 결과를 연결합니다.
멀티스레드 TCP connect 스캐너, Scapy ICMP/TCP 패킷, 동시 웹 경로 열거기를 만듭니다. 마지막 챌린지는 로컬 웹 포트를 찾고 열린 서비스마다 단어 목록을 적용해 통합 보고서를 씁니다.
학습 내용
argparse로 대상과 포트 범위 CLI 만들기socket.connect_ex, 타임아웃, 예외로 열린 TCP 포트 탐지하기- 순차 스캔과 스레드 동시성 비교하기
- Scapy에서 IP, ICMP, TCP 계층을 쌓고 필드 검사하기
sr1로 ICMP 요청 한 번을 보내고 응답 또는 타임아웃 처리하기- 단어 목록에서 경로를 읽고 HTTP 요청을 동시에 실행하기
- 선택한 HTTP 상태 코드로 endpoint를 필터링하고 오류 처리하기
- 포트 스캔과 경로 발견을 localhost 보고 도구로 연결하기
추천 대상
이 중급 과정은 기본 스캐너와 열거 도구의 내부를 이해하려는 사이버 보안 학습자, 네트워크 엔지니어, Python 개발자를 대상으로 합니다. Nmap이나 ffuf 대체가 아니라 구현 개념과 안전한 실습을 다룹니다.
선수 지식: Python 함수, 모듈, 컬렉션, 예외, 파일 처리와 TCP 포트, HTTP 상태 코드, IP/ICMP/TCP 헤더, Linux 터미널 기초가 필요합니다.
학습 환경: Python 3, Scapy, requests, 로컬 웹 서버, 단어 목록이 있는 Ubuntu 22.04입니다. 스캔은 127.0.0.1, 패킷 실습은 네트워크 정책에 따라 8.8.8.8로 ICMP Echo 한 번을 보냅니다.
자주 묻는 질문
아무 호스트에나 도구를 사용할 수 있나요?
본인이 소유하거나 명시적으로 승인받은 시스템에만 사용해야 합니다. 스캔은 127.0.0.1이며 Scapy는 응답 연습으로 Google Public DNS에 표준 ICMP Echo 한 번을 보냅니다.
Scapy 응답이 없으면 어떻게 되나요?
ICMP나 raw packet이 차단되면 정상입니다. 스크립트는 2초 타임아웃 후 무응답을 처리하며 인터넷 연결 보장이 목표가 아닙니다.
도구가 운영 환경에 바로 적합한가요?
아닙니다. 성숙한 도구에는 제한된 동시성, 속도 제한, 서비스 탐지, 재시도, wildcard 응답 처리, TLS, 입력 검증, 결정적 출력, 테스트가 필요합니다.
여기서 fuzzer는 비정상 payload를 보내나요?
아닙니다. 일반 GET과 상태 코드로 단어 목록 경로를 열거합니다. 프로토콜 변형, payload 주입, 메모리 손상 테스트는 하지 않습니다.



