📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 213편
이전 글: 212. OS Detection · 다음 글: 214. 특정 Port Scan

1. 개념

Version Detection(버전 탐지) 은 211. Service Detection에서 확인한 서비스가 어떤 제품의 몇 버전인지까지 알아내는 단계입니다. "SSH가 있다"에서 끝나지 않고 "OpenSSH 8.9"까지 확인하는 것입니다.

버전 정보가 중요한 이유는 알려진 취약점(CVE)과 바로 연결되기 때문입니다. 공격자에게 버전은 사용할 공격 코드의 선택 기준이고, 방어자에게는 노출된 버전이 패치 대상인지 확인하는 기준입니다.

단계알아내는 것예
포트 스캔포트 상태22/tcp open
서비스 탐지프로토콜SSH
버전 탐지제품·버전·부가 정보OpenSSH 8.9p1, 배포판 표기

2. 동작 원리

버전 정보는 대부분 서비스가 스스로 알려주는 문자열에서 나옵니다. 서버 선발화 서비스는 연결 직후 배너에, HTTP는 응답 헤더와 오류 페이지에 제품·버전을 담는 경우가 많습니다. 배너가 없으면 도구는 더 구체적인 요청을 차례로 보내 응답 형식의 미세한 차이로 버전을 좁힙니다.

서비스 탐지 결과 (예: 80/tcp = HTTP)
      ↓
배너·헤더 수집 ── 버전 문자열 있음 → 제품·버전 판단
      │
      없음
      ↓
더 구체적인 요청을 추가로 전송 (같은 포트에 새 연결 반복)
      ↓
응답 코드·헤더 순서·오류 메시지 형식 비교 → 버전 범위 추정
      ↓
방어 측 흔적: 같은 포트에 서비스 탐지보다 많은 세션, 다양한 요청 형식, 오류 응답 증가
서비스버전이 드러나는 위치형식 예시
SSH연결 직후 식별 문자열SSH-2.0-OpenSSH_8.9p1 Ubuntu-3
HTTPServer 헤더, 기본 오류 페이지Server: Apache/2.4.57 (Rocky Linux)
FTP·SMTP220 인사 메시지220 (vsFTPd 3.0.5)
웹 애플리케이션X-Powered-By 등 부가 헤더언어·프레임워크 버전

3. 주요 특징

  • 서비스 탐지보다 긴 상호작용: 배너가 없거나 모호하면 요청이 늘어나므로, 한 포트에 대한 세션 수와 오류 응답이 서비스 탐지보다 많습니다.
  • 정상처럼 보이는 요청 포함: HTTP의 GET / 같은 요청은 정상 방문과 구분되지 않습니다. 판단은 짧은 시간 여러 포트·여러 형식이 섞였는지로 합니다.
  • TLS 서비스는 두 겹: 암호화 포트는 TLS 연결을 먼저 맺고 그 안에서 다시 서비스·버전을 확인하므로, 인증서 정보도 함께 수집됩니다.
  • 버전 탐지 결과는 추정: 배포판이 보안 패치를 적용해도 버전 문자열은 그대로인 경우가 많아, 문자열만으로 취약 여부를 단정할 수 없습니다.
기준서비스 탐지버전 탐지
목표프로토콜 식별제품·버전 식별
포트당 요청적음더 많음(배너가 없을 때)
서비스 로그preauth 종료, 형식 오류동일 + 특이 경로·메서드 요청
노출 영향공격 대상 선정공격 코드 선정

4. 예시

실습 예시 — 본인 소유 서버가 어떤 버전 정보를 노출하는지 점검하고, 수집된 버전 정보를 Zeek로 확인하는 방어 측 명령입니다(값은 환경마다 다름).

# 자기 웹 서버의 응답 헤더 점검
curl -sI http://192.168.10.20/ | grep -iE '^(server|x-powered-by):'

# Zeek software.log: 관찰된 트래픽에서 식별된 소프트웨어·버전
zeek-cut host software_type unparsed_version < software.log | sort -u

# Zeek ssh.log: 서버·클라이언트 식별 문자열
zeek-cut id.orig_h id.resp_h client server < ssh.log

결과 형식 예시(값은 환경마다 다름):

Server: Apache/2.4.57 (Rocky Linux) OpenSSL/3.0.7
X-Powered-By: PHP/8.1.14
192.168.10.20  HTTP::SERVER  Apache/2.4.57 (Rocky Linux) OpenSSL/3.0.7
192.168.10.21  SSH::SERVER   OpenSSH_8.9p1 Ubuntu-3

배너 최소화 설정 예시(적용 전 서비스 영향 확인 필요):

대상설정효과
ApacheServerTokens Prod, ServerSignature OffServer 헤더를 제품명만, 오류 페이지 서명 제거
Nginxserver_tokens off;헤더·오류 페이지의 버전 제거
PHPexpose_php = OffX-Powered-By 헤더 제거
OpenSSH(Ubuntu)DebianBanner no배포판 부가 문자열 제거(프로토콜·제품 버전은 남음)

5. 보안 관점

  • 버전 문자열은 공격자가 공개 취약점 목록과 바로 대조할 수 있는 정보입니다. 외부 노출 서비스는 배너를 최소화하고, 무엇보다 실제 패치 상태를 유지해야 합니다.
  • 배너를 숨겨도 응답 형식 차이로 버전 범위는 추정될 수 있으므로, 배너 최소화는 보조 대책이지 패치를 대신할 수 없습니다.
  • 방어자에게 Zeek software.log 같은 수동 수집 결과는 자산별 노출 버전 목록이 됩니다. 새 취약점 공개 시 영향 범위를 빠르게 파악하는 데 씁니다.

6. SOC 관점

흔적 위치확인 내용
서비스 로그같은 출발지의 다양한 형식 요청, 오류 응답 증가
방화벽 세션 로그열린 포트당 세션 수 증가, 짧은 지속 시간
IDS스캔 도구 특징 요청 관련 Alert(룰셋에 따라 다름)
Zeeksoftware.log·ssh.log의 노출 버전

관제자가 확인할 질문

  • 버전 탐지 흔적이 있는 서비스의 노출 버전은 무엇이며, 알려진 취약점 대상인가?
  • 탐지 이후 그 버전을 노린 공격 요청(특정 경로, 특정 페이로드)이 이어졌는가?
  • 외부에 버전 문자열을 불필요하게 노출하는 서비스가 있는가?

오탐 주의: 취약점 점검 솔루션, 자산관리 시스템, 인증서 만료 점검 도구도 같은 흔적을 만듭니다. 출발지가 예외 목록에 있고 공유된 일정과 맞는지 먼저 확인합니다. 검색 엔진·연구 목적 스캐너의 배너 수집도 외부에서 상시 관찰됩니다(229. 외부망 정찰).


7. 핵심 정리

  • Version Detection은 서비스의 제품명·버전을 배너, 응답 헤더, 응답 형식 차이로 알아내는 단계입니다.
  • 버전 정보는 공개 취약점과 바로 연결되므로 공격 코드 선택의 기준이 됩니다.
  • 서비스 탐지보다 포트당 세션과 오류 응답이 많고, 정상처럼 보이는 요청도 섞입니다.
  • 배너 최소화는 보조 대책이며, 실제 패치 상태 유지가 우선입니다.
  • Zeek software.log·ssh.log로 자산별 노출 버전을 파악해 취약점 대응에 활용합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글