모의해킹(침투 테스트)에서 네트워크 서비스 스캐닝은 매우 중요한 단계이며, 그 중에서도 **배너 그래빙(Banner Grabbing)**과 **프로빙(Probing)**은 시스템이 어떤 서비스를 실행 중인지 식별하는 데 필수적인 기술입니다. 두 기술은 모두 서비스 식별 및 취약점 탐지를 목적으로 하지만, 방법과 결과가 다릅니다.
nc 1.1.1.1 21
220 (vsFTPd 3.0.3)
같은 응답이 나타남telnet 1.1.1.1 80
GET / HTTP/1.1
Host: 1.1.1.1
nmap -sV -p 21,22,80,443 1.1.1.1
-sV
: 서비스 버전 탐지 (배너 포함)nmap -sV --script=banner,ftp-anon,http-methods -p 21,80 1.1.1.1
--script
: 프로빙 스크립트를 이용한 고급 탐지curl -I http://1.1.1.1
openssl s_client -connect 1.1.1.1:443
항목 | 배너 그래빙 | 프로빙 |
---|---|---|
방식 | 서비스의 초기 응답(배너) 읽음 | 실제 명령/요청을 보내고 반응 분석 |
난이도 | 쉬움 | 다소 복잡 (프로토콜 이해 필요) |
탐지 가능성 | 낮음 | 보통 중간 |
탐지 대상 | 서비스 이름/버전 | 숨겨진 설정, 응답 동작 등 |
도구 | nmap, netcat, telnet | nmap (NSE), curl, openssl 등 |
nmap -sS -p- 1.1.1.1
→ 포트 식별nmap -sV -sC -p 21,80,443 1.1.1.1
→ 배너 + 기본 스크립트nc 1.1.1.1 21
, curl -I
, openssl
등으로 수동/정밀 프로빙exploit-db
, CVE
, searchsploit
검색배너 그래빙은 마치 문을 열자마자 "안녕하세요! 저는 웹서버 1.2.3이에요!" 라고 말하는 걸 듣는 거고요,
프로빙은 "이 사람 누구지?" 싶을 때, 질문을 던져서 대답을 듣고 알아내는 거예요!
공격자는 이걸로 그 시스템이 뭘 쓰는지 알아보고, 약한 점이 있는지 찾는 거예요.
배너 그래빙은 서버와의 TCP 연결이 성립되었을 때, 서버가 자동으로 보내는 응답 메시지를 받아 소프트웨어의 이름과 버전 정보 등을 수집하는 기법입니다.
상황 | 설명 |
---|---|
배너 비활성화 설정 | 서비스가 기본적으로 배너 출력 기능을 꺼두었거나, 설정을 통해 출력을 차단 |
접속 후 요청 필요 | 일부 서비스는 연결만으로는 배너를 보내지 않고, 특정 명령어나 프로토콜 요청 후에만 응답 |
고의적 위장 | 보안을 의식한 시스템에서는 배너를 의도적으로 허위 정보로 설정 |
접근 제어 | 특정 IP만 실제 응답을 하도록 구성되어 있으며, 외부 요청에는 배너 자체를 숨김 |
서비스 | 배너 출력 특성 |
---|---|
FTP (vsftpd, proftpd 등) | 기본적으로 접속 직후 배너 출력함 |
SSH | 기본적으로 OpenSSH 등의 버전 표시, 설정으로 숨김 가능 |
HTTP (Apache, Nginx) | 서버 헤더에 포함, 보안 설정으로 제거 가능 (ServerTokens , ServerSignature ) |
SMTP | 접속 시 220 메시지에 배너 포함, 스팸 우회 방지 위해 숨기기도 함 |
MySQL/PostgreSQL | 정상 클라이언트 프로토콜로 접속하지 않으면 아무 것도 응답 안 함 |
기본 배너 수집 시도
telnet
, nc
, nmap -sV
, curl
, wget
등을 통해 포트에 접속 후 배너 확인nc target.com 80
, curl -I http://target.com
스캐닝 도구 고급 옵션 활용
nmap
의 -sV
+ --version-all
, --script=banner
등 적극 탐지 옵션 사용masscan
등으로 빠르게 포트만 스캔 후, 상세 분석은 nmap으로전용 클라이언트 사용
mysql
, FTP는 ftp
, SSH는 ssh
클라이언트 등으로 접속 시도우회/추측 기법 사용
http://target.com/robots.txt
요청/admin
, /server-status
) 등 접속openssl s_client
사용)보안 우회 탐지
TTL
, 패킷 크기, 핸드셰이크 응답 시간 등으로 OS 및 미탐지 서비스 추론보안 구성 예시 | 설명 |
---|---|
배너 제거 | /etc/ssh/sshd_config 에서 Banner , Version 숨김 |
서버 헤더 제거 | Apache, Nginx에서 Server: Apache/2.4.41 같은 문자열 제거 |
IPS/IDS로 포트 필터링 | 포트 열려 있어도 트래픽 차단 또는 응답 없음 처리 |
Port Knocking | 올바른 패킷 순서 없으면 포트 열리지 않음 |
Proxy 앞단 설정 | 리버스 프록시가 배너를 제거하고 대신 응답함 |
# 일반 배너 수집
nc target.com 21
telnet target.com 25
curl -I http://target.com
openssl s_client -connect target.com:443
# nmap으로 서비스 탐지
nmap -sV --script=banner -p 21,22,80 target.com
어떤 컴퓨터랑 이야기하려고 하면, 보통 "나는 누구야!" 하고 자기소개를 해요.
근데 보안에 민감한 컴퓨터는 낯선 사람에게는 **아무 말도 안 하거나**, **거짓말**을 해요!
그래서 해커들은 자기가 직접 말도 걸어보고, 편지도 보내보고, 힌트를 모아서 정체를 알아내는 거예요.