상대 서버에 열린 포트가 있는지 탐색하는 과정
- 다른 포트 스캔보다 가장 정확한 포트스캔이다.
- TCP 3way handshake를 수행하며 포트가 열려있는지 확인한다.
- 신뢰성이 높다.
- 신뢰성이 높은만큼 상대 서버에서 포트 스캔을 하는 로그를 남긴다.
- 속도가 느리다.
- 로그가 남는 TCP Connect 스캔의 단점을 보안한 스캔 방식이다.
- 정상적인 TCP 3way handshake 과정을 하지 않는다.
- SYN 패킷을 보내면 상대 서버에서 SYN/ACK 패킷이 오고
우리 컴퓨터에서는 ACK패킷을 보내면서 통신이 시작하지만 그 대신에 바로 RST패킷을 보내 연결을 끊는다.
- 로그가 남는 TCP Connect 스캔의 단점을 보안한 스캔 방식이다.
- 플래그에 설정에 따라 FIN/XMAS/NULL 스캔으로 구분된다.
- FIN 스캔은 FIN 플래그만 설정된 패킷으로 보낸다.
- XMASS 스캔은 모든 플래그를 설정하거나 FIN/PSH/URG플래그를 설정하여 패킷을 보낸다.
- 포트가 열려있다면 응답이 없고 포트가 닫혀 있다면 RST 패킷이 돌아온다.
- 하지만 방화벽이 설정되어있어도 응답이 없다.
- 다른 스캔랑 다르게 방화벽이 설정되어 있는지를 판단하기 위한 스캔이다.
- ACK 패킷을 보내 확인한다.
- 방화벽이 설정 되어 있다면 응답이 없거나 ICMP Unreachable 응답을 받는다.
- 방화벽이 설정 되어 있지 않다면 RST 패킷을 받는다.
- UDP 포트가 열려 있는지 확인하는 스캔이다.
- UDP 패킷을 전송해서 응답이 안오면 열려있는 것이다.
- ICMP Unreachable 응답이 오면 닫혀있는 것이다.
실습 환경
가상 머신에서 맥으로 포트스캔할 것이다.
- 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 패킷을 받았다.
- 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번포트 캡쳐
- 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를 많이 사용한다고 한다.