포트 스캔 관한 정보들

IMKYU·2024년 11월 28일

포트스캔이란

상대 서버에 열린 포트가 있는지 탐색하는 과정

동작을 수행하는 프로그램

  • nmap
  • masscan

포트스캔 종류

TCP Connect(TCP Full Open) 스캔

  • 다른 포트 스캔보다 가장 정확한 포트스캔이다.
  • TCP 3way handshake를 수행하며 포트가 열려있는지 확인한다.
  • 신뢰성이 높다.
  • 신뢰성이 높은만큼 상대 서버에서 포트 스캔을 하는 로그를 남긴다.
  • 속도가 느리다.

TCP SYN(TCP Half Open) 스캔

  • 로그가 남는 TCP Connect 스캔의 단점을 보안한 스캔 방식이다.
  • 정상적인 TCP 3way handshake 과정을 하지 않는다.
  • SYN 패킷을 보내면 상대 서버에서 SYN/ACK 패킷이 오고
    우리 컴퓨터에서는 ACK패킷을 보내면서 통신이 시작하지만 그 대신에 바로 RST패킷을 보내 연결을 끊는다.

TCP Stealth(TCP FIN/XMAS/NULL) 스캔

  • 로그가 남는 TCP Connect 스캔의 단점을 보안한 스캔 방식이다.
  • 플래그에 설정에 따라 FIN/XMAS/NULL 스캔으로 구분된다.
  • FIN 스캔은 FIN 플래그만 설정된 패킷으로 보낸다.
  • XMASS 스캔은 모든 플래그를 설정하거나 FIN/PSH/URG플래그를 설정하여 패킷을 보낸다.
  • 포트가 열려있다면 응답이 없고 포트가 닫혀 있다면 RST 패킷이 돌아온다.
  • 하지만 방화벽이 설정되어있어도 응답이 없다.

TCP ACK 스캔

  • 다른 스캔랑 다르게 방화벽이 설정되어 있는지를 판단하기 위한 스캔이다.
  • ACK 패킷을 보내 확인한다.
  • 방화벽이 설정 되어 있다면 응답이 없거나 ICMP Unreachable 응답을 받는다.
  • 방화벽이 설정 되어 있지 않다면 RST 패킷을 받는다.

UDP 스캔

  • UDP 포트가 열려 있는지 확인하는 스캔이다.
  • UDP 패킷을 전송해서 응답이 안오면 열려있는 것이다.
  • ICMP Unreachable 응답이 오면 닫혀있는 것이다.

실습

실습 환경

  • 호스트 맥(192.168.79.12) 5000번, 7000번 포트 열림
  • 가상 머신 우분투 (192.168.79.11)
  • nmap
  • wireshark

가상 머신에서 맥으로 포트스캔할 것이다.

TCP Connect(TCP Full Open) 스캔

  • nmap -sT 192.168.79.11
  • -sT는 TCP Connect 스캔을 한다는 의미다.
  • 기본적으로 포트 지정 (-p) 옵션을 안주면 nmap이 잘 알려진 포트 1000개를 스캔한다.

  • 192.168.79.11에 포트 3개가 열려있다.

  • 와이어샤크 192.168.79.11 5000번포트 캡쳐
  • TCP 3way handshake를 하는 과정이다.

  • 와이어샤크 192.168.79.11 5001번포트 캡쳐
  • 닫혀 있는 포트라서 RST/ACK 패킷을 받았다.

TCP SYN(TCP Half Open) 스캔

  • sudo nmap -sS 192.168.79.11
  • -sS는 TCP SYN 스캔을 한다는 의미다.
  • sudo 사용한 이유는 로우 소켓을 사용하기 때문이다.
  • TCP Connect와 UDP 스캔를 제외한 스캔방식은 로우 소켓을 사용한다.
    (추후에 올릴 예정)

  • 192.168.79.11에 포트 3개가 열려있다.
  • TCP Connect랑 결과가 같다.

  • 와이어샤크 192.168.79.11 5000번포트 캡쳐

  • 와이어샤크 192.168.79.11 5001번포트 캡쳐

TCP Stealth(FIN/XMAS/NULL) 스캔

  • 3개의 플래그의 차이만 다르지 스캔 방식은 같기 때문에 NULL만 해보겠다.
  • -sF은 FIN -sX은 XMAS -sN은 NULL 스캔을 뜻한다.

  • 3개의 포트가 열려있거나 방화벽에 의해 필터링되었다고 결과가 출력되었다.

  • None은 플래그가 설정되어있지 않다. 즉 NULL 패킷이다.
  • 저 패킷외의 패킷이 오고 받은건 없다.

  • RST/ACK 패킷을 받았다.

결론

  • 로그가 안남는다던데 다 남는다.
  • TCP Connect 스캔에 비해 눈의 안띈다는 말인듯.
  • 자기 서버가 포트가 몇번 열려있는지 테스트 할 때는 TCP Connect 스캔하면 좋을 것이다.(신뢰할만 결과)
  • 만약 모의 해킹용도로 사용한다면 TCP Connect를 제외한 스캔종류를 하면 좋을 것이다.
    (신뢰하긴 힘들지만 TCP Connect보다 탐지될 확률이 적다.)
  • 추가
    실무에서는 TCP Connect와 TCP SYN를 많이 사용한다고 한다.
profile
아무것도 안 한 거랑 다를께 없잖아??

0개의 댓글