포트 스캐닝
- 서비스 활성화 여부 확인
- 시스템 작동 유무 확인
● TCP Full Open 스캔(TCP Connect 스캔)
명령어 : nmap -sT
- 포트가 열려있는 경우 대상 시스템으로부터 SYN + ACK 패킷을 수신하면 그에 대한 ACK 패킷을 전송함으로써 연결을 완료한다.
- 포트가 닫혀있는 경우 대상 시스템이 연결 요청을 받아들이지 못하므로 RST + ACK 패킷을 전송한다.
● TCP Half Open 스캔(TCP SYN 스캔)
명령어 : nmap -sS
- 포트가 열려있는 경우 대상 시스템으로부터 SYN + ACK 패킷을 수신하면 공격자는 즉시 RST 패킷을 보내 연결을 끊음으로써 연결 시도 세션에 대한 로그를 남기지 않는다.(단, 공격자의 SYN 세그먼트 전송기록은 남기때문에 스캐닝 공격사실을 완전히 숨길 수는 없다.)
- 포트가 닫혀있는 경우 대상 시스템이 연결 요청을 받아들이지 못하므로 RST + ACK 패킷을 전송한다.
● UDP 스캔
명령어 : nmap -sU
- 포트가 열려있는 경우 UDP 연결을 시도할 때 대상 시스템으로부터 아무런 응답이 없다.
- 포트가 닫혀있는 경우 UDP 연결을 시도할 때 ICMP Unreachable 에러 메시지가 수신된다.
- UDP를 이용한 포트 스캔은 신뢰하기 어렵다. UDP 패킷이 네트워크를 통해 전달되는 동안 라우터나 방화벽에 의해 손실될 수 있기 때문이다.
● 스텔스 스캔(FIN, NULL, XMAS 스캔)
명령어 : nmap -sF / nmap -sN / nmap -sX
- FIN 스캔은 TCP 헤더 내에 FIN 플래그를 설정하여 공격 대상시스템으로 메시지를 전송하면 포트가 열려있는 경우 응답이 없고, 포트가 닫혀있는 경우 RST 패킷이 수신된다.
- NULL 스캔은 TCP 헤더 내에 플래그 값을 설정하지 않고 전송하는 패킷을 말하며, XMAS 패킷은 TCP 헤더 내에 URG, ACK, PSH, RST, SYN, FIN 플래그를 모두 설정하여 전송하는 패킷이다.
- 스텔스 스캔은 세션을 완전히 성립하지 않고 공격 대상 시스템의 포트 활성화 여부를 알아내기 때문에 공격 대상 시스템에 로그가 남지 않는다.
● TCP ACK 스캔
명령어 : nmap -sA
- 대상 시스템의 포트 오픈 여부를 확인하는 것이 아니라 방화벽의 룰셋을 테스트하기 위한 스캔 방법이다.
- ACK 플래그를 설정하여 공격 대상 시스템으로 전송했을 때 방화벽에서 필터링이 된다면 응답이 없거나 ICMP 메시지를 받고, 필터링되지 않으면 RST 패킷을 수신한다.
● Decoy 스캔
명령어 : nmap -sD
- Decoy는 유인한다는 의미로 스캔을 당하는 대상 시스템에서 공격자의 주소를 식별하기 어렵도록 실제 주소 외에 다양한 위조된 주소로 스캔하는 방식이다.
● 포트 스캔 공격에 대한 대응책
- 불필요한 패킷을 차단하도록 방화벽 설정
- 사용하지 않는 포트는 열어놓지 않음(불필요한 서비스 종료)
- 침입탐지시스템(IDS)을 사용해 포트 스캔 탐지
- 시스템 로그 감사