[정보 보안] 포트 스캐닝

Cookie·2024년 10월 5일
0

정보보안

목록 보기
12/40
post-thumbnail

오늘은 정보보안을 공부하면서 공격자의 입장에서 침입 전 취약점을 분석하기 위해 실행하는 포트스캐닝에 대해 정리하고 스캔 방식에 따라 포트가 열린상태, 닫힌 상태에 따라 어떤 응답이 오는지 정리하고자 함




포트 스캐닝이란?

포트 스캐닝(Port Scanning)이란 네트워크 상의 호스트(컴퓨터나 서버)에서 열려 있는 포트들을 탐색하는 과정으로 각 포트는 특정 서비스나 애플리케이션과 연결되어 있음
포트 스캐닝은 네트워크 보안이나 침투 테스트 과정에서 중요한 도구로 사용되며, 시스템의 취약점을 찾는 데 도움이 될 수 있음

포트 스캐닝은 네트워크 관리자에게 유용한 도구임 하지만 악의적인 해커가 시스템의 취약점을 찾기 위해 사용될 수도 있어 방어 기술도 중요함

  • 일반적으로 포트 스캐닝을 수행하기 위한 포트 스캐너로 nmap을 많이 사용함



주요 목적

  1. 열려 있는 포트 확인: 시스템에서 어떤 포트가 열려 있는지 확인하여 어떤 서비스가 실행 중인지 파악
  2. 서비스 확인: 각 포트에서 실행 중인 서비스 종류와 버전 파악
  3. 취약점 분석: 특정 포트에서 실행 중인 서비스가 보안 취약점이 있는지 확인



포트 스캐닝의 종류

  1. TCP 스캔
    : TCP 연결을 시도하여 열려 있는 포트를 확인 가장 일반적인 포트 스캔 방법

  2. SYN 스캔
    : 완전한 TCP 연결을 시도하지 않고, SYN 패킷만 보내고 응답을 확인하여 포트 상태를 파악. 비교적 빠르고 은밀하게 스캔 가능

  3. UDP 스캔
    : UDP 프로토콜을 사용하는 포트를 탐색. TCP에 비해 스캔이 느리고 응답이 불확실할 수 있음

  4. 스텔스 스캔
    : 탐지가 어려운 방식으로 포트를 스캔, 방화벽이나 IDS(침입 탐지 시스템) 회피를 목적으로 함




nmap 포트스캐너 사용법

nmap [scan type] [options] <target>

스캔 타입 (Scan Type)

  • -sS: TCP SYN 스캔 (Half-Open Scan) – TCP 포트 열려 있는지 확인
  • -sT: TCP Connect 스캔 – TCP 포트 연결 시도
  • -sU: UDP 스캔 – UDP 포트 열려 있는지 확인
  • -sF: TCP FIN 스캔 – FIN 패킷을 이용한 포트 스캔
  • -sX: TCP Xmas 스캔 – 여러 TCP 플래그 조합하여 스캔
  • -sN: TCP NULL 스캔 – 플래그 없는 NULL 패킷을 이용한 스캔
  • -sA: TCP ACK 스캔 – 방화벽 정책 확인용
  • -sP: Ping 스캔 – 호스트 활성화 여부 확인
  • -D: 디코이 스캔 – 다양한 IP 주소를 이용한 스캔
  • -b: FTP Bounce 스캔 – FTP 프록시를 이용한 스캔

옵션

포트 옵션 (Port Option)

  • -p 22: 22번 포트 스캔
  • -p <서비스명>: 특정 서비스 이름으로 포트 스캔
  • -p 20,25,80: 여러 포트 스캔 (20, 25, 80번 포트)
  • -p 1-1023: 1번부터 1023번까지 포트 스캔 (범위 지정)
  • -pT:21,23,U:53: TCP 21, 23번과 UDP 53번 포트 분리해서 스캔

출력 옵션 (Output Option)

  • -v: 상세 내역 출력
  • -d: 디버깅 모드
  • -oN <파일>: 일반 텍스트 형식으로 결과 저장
  • -oX <파일>: XML 형식으로 결과 저장
  • -oG <파일>: Grep 형식으로 결과 저장
  • -oA <디렉토리>: 여러 형식의 결과를 함께 저장

기타 옵션 (Other Options)

  • -O: 운영체제(OS) 정보 탐지
  • -F: 빠른 스캔 (주요 포트 위주)
  • -T0 ~ T5: 스캔 속도 조절 (T0: 느림, T5: 빠름)

타겟 지정 (Target)

  • 호스트명 또는 IP 주소 지정 가능
    • 예시) www.test.com, 192.168.159.151
  • 범위 지정도 가능
    • 예시) 192.168.159.0/24 (대역 스캔), 192.168.159.100-150 (특정 범위 스캔)

예시 문법

  1. 기본 스캔: 대상 IP 주소의 열려 있는 포트를 기본 스캔

    nmap 192.168.1.1
  2. 특정 포트 스캔: 80번과 443번 포트만 스캔

    nmap -p 80,443 192.168.1.1
  3. 서비스 버전 탐지와 운영체제 정보 탐지: 대상 시스템의 서비스 버전과 운영체제 정보 확인

    nmap -sV -O 192.168.1.1




스캐닝 종류


TCP Connect (Open) 스캔

일반 사용자 권한으로 TCP 포트 오픈 여부를 확인하기 위해 connect 시스템을 호출하는 방식의 스캔

  • target 호스트의 포트에 직접 연결됨
  • 정상적인 TCP 연결을 수행
    • 시스템 로그에 스캔을 시도는 IP등의 흔적이 남음
  • 관리자 권한이 없을 경우 일반 사용자 권한으로 사용할 수 있는 스캔

동작 방식

  1. Target 호스트의 대상 포트로 SYN 패킷을 전송

    • 포트 오픈 여부에 따라 응답 패킷을 수신함
      • 열린 상태 : SYN + ACK 응답 수신
      • 닫힌 상태 : RST + ACK 응답 수신
  2. 대상 포트가 열린 상태라면 연결설정이 완료되고 포트 오픈 여부를 확인했기 때문에 연결을 즉시 중단하기 위해 RST + ACK패킷을 전송



TCP SYN (Half-Open) 스캔

관리자 권한으로 TCP 패킷 자체(raw packet)를 직접 조작하여 TCP 포트 오픈 여부를 판단하는 스캔방식

  • TCP 패킷 헤더의 제어비트를 조작
  • TCP 연결과정을 완전히 수행하지 않음
    • Half-Open 스캔
  • 스텔스 스캔
    : TCP 세션이 완전히 성립되지 않은 상태에서 대상 시스템의 포트 활성화 여부를 스캔하는 방식
    • 대상 시스템에 로그가 남지 않음
    • 종류
      : TCP SYN Scan, TCP FIN Scan, TCP NULL Scan, TCP Xmas Scan 등

동작 방식

  1. Target 호스트의 대상 포트로 SYN 패킷을 전송

    • 포트 오픈 여부에 따라 응답 패킷을 수신함
      • 열린 상태 : SYN + ACK 응답 수신
      • 닫힌 상태 : RST + ACK 응답 수신
  2. SYN + ACK 응답만으로 포트가 열린 상태임을 알수 있기 때문에 패킷 조잣을 통해 RST 패킷을 전송하여 연결을 완료하지 않고 즉시 중단함



TCP FIN/NULL/Xmas 스캔

관리자 권한으로 TCP 패킷 자체를 직접 조작하여 TCP 포트 오픈 여부를 판단하는 스캔 방식

TCP 표준 특성을 이용하여 포트 오픈 여부를 확인함

  • 스텔스 스캔 방식
  • TCP 패킷 헤더의 제어비트를 비정상적으로 설정
  • TCP 표준 동작 방식을 준수하는 시스템이라면 SYN, ACK 또는 RST이외의 패킷을 수신한 경우 닫힌 포트에서는 RST패킷으로 응답하고 열린 포트에서는 응답하지 않음

각 스캔의 특징

  • FIN 스캔
    : FIN 제어 비트만을 설정하여 스캔하는 방식 (표준 : FIN+ACK 제어비트 사용)

  • NULL 스캔
    : 제어 비트를 설정하지 않고 스캔하는 방식 (TCP 표준에서 사용하지 않음)

  • Xmas 스캔
    : URG, RSH, FIN 제어비트를 설정하여 스캔하는 방식 (TCP 표준에서 사용하지 않음)


동작 방식

  1. Target 호스트의 대상 포트로
    [FIN 제어비트만 설정한/아무것도 설정하지 않은/URG,PSH,FIN 제어비트를 설정한] 패킷을 전송함
    • 포트 오픈 여부에 따라 응답 패킷을 수신함
      • 열린 상태 : 응답 없음
      • 닫힌 상태 : RST + ACK 응답 수신



TCP ACK 스캔

포트 오픈 여부를 판단하는 것이 아닌 방화벽 룰셋(필터링 정책)을 알아내기 위한 스캔 방식

  • ACK 제어 비트만 설정한 패킷을 전송
  • 방화벽에서 허용된 경우 Target 호스트의 오픈 여부와 상관없이 RST을 수신하기 때문에 포트 오픈 여부를 판단할 수 없음

동작 방식

  1. Target 호스트의 대상 포트로 ACK 제어비트만 설정한 패킷을 전송
    • 방화벽 정책 차단/허용 여부에 따라 응답 패킷을 수신함
      - 차단 상태 : 응답이 없거나 ICMP 에러메시지 수신
                       (Destination Unreachable)
      - 허용 상태 : RST 수신



UDP 스캔

UDP 포트 오픈 여부를 판단하는 스캔 방식으로 닫힌 UDP 포트로 패킷 수신 시 ICMP 에러 메시지로 응답하는 특성을 이용함


동작 방식

  1. Target 호스트의 대상 포트로 UDP 패킷을 전송
    • 포트 오픈 여부에 따라 응답 패킷을 수신함
      • 열린 상태 : UDP응답 또는 응답없음
      • 닫힌 상태 : ICMP 에러 메시지 수신(Destination Unreachable)



Decoy 스캔

다양한 포트 스캔을 수행할 때 스캔을 당하는 Target 호스트에서 스캐너 주소를 식별하기 어렵게 실제 스캐너 주소 외에 다양한 위조된 주소로 스캔하는 방식

  • 다양한 IP로 스캐너 주소를 위조하여 누가 스캔했는지 알아채기 어려움


  • 예시 : nmap -T4 -sF -p 23,80 192.168.56.100 -D RND
    • -D 옵션을 통해서 공격자 IP 외에 임의로 부여한(RND) 위조된 IP로 TCP FIN 스캔(-sF)을 수행




Filtered 상태

Target 호스트의 포트(서비스)가 방화벽에 의해 필터링(차단)되고 있는 상태

TCP Connect 스캔 , TCP SYN 스캔, TCP FIN/NULL/Xmas 스캔, UDP 스캔이 이에 해당함

  • 방화벽의 정책에 따라 응답이 다름

    • DROP 정책
      : DROP 차단 정책을 사용하면 해당 패킷을 폐기한 후 아무런 응답을 하지 않음

    • REJECT 정책
      : REJECT 차단 정책을 사용하면 해당 패킷을 페기한 후 ICMP 에러 메시지(Destination Unreachable)를 응답함

profile
나만의 공부 일지... [임시 休]

0개의 댓글