포트스캐닝(Port Scanning)이란?
해커가 악의적인 공격을 수행하기 위해 취약점을 찾는 과정 중 수행하는 사전 작업이라고 할 수 있습니다.
피해자 시스템 혹은 네트워크를 선정한 뒤
해당 시스템이나 네트워크가 어떤 포트를 열고 서비스를 하고있는지 알아내기 위함 입니다.
가령, 해당 시스템이 23포트를 열고 Telnet서비스를 하고있는 것을 알아내었다면
해커는 Telnet서비스에 대한 취약점을 이용하여 적극적인 공격을 수행할 수 있겠습니다.
1.TCP Connect 스캔 (TCP Open 스캔)

구 분 | 설 명 |
스캔 방법 | TCP/IP소켓 프로그래밍의 connect()함수를 사용하여 포트별로 직접 접속하여 스캔하는 방식 |
Open Port | 정상적으로 연결 설정(3way handshaking)이 완료되며 연결 완료 후 RST+ACK를 전송하여 연결을 종료 |
Close Port | 포트가 닫힌 상태이면 상대 시스템으로부터 RST+ACK를 수신 |
특 징 | 상대 시스템의 포트Open/Close 여부를 알아내는 가장 확실한 방법이며, 직접 연결을 맺기 때문에 시스템 로그가 남음 |
2.TCP SYN 스캔 (Half-Open 스캔)

구 분 | 설 명 |
스캔 방법 | raw소켓에 접근해서 TCP 프로토콜 헤더의 제어비트(Control Bit)를 설정하여 스캔 |
Open Port | Target으로부터 SYN+ACK 응답이 올 경우 ACK가 아닌 RST를 보내어 연결을 강제 종료 |
Close Port | 닫힌 경우 Target으로부터 RST+ACK를 수신 |
특 징 | 완전한 연결 설정(3way handshaking) 과정을 수행하지 않기 때문에 시스템 로그가 남지 않음 |
3. Stealth 스캔 (FIN / NULL / XMAS 스캔)



구 분 | 설 명 |
스캔 방법 | TCP 제어비트(Control Bit)를 비정상적으로 설정해서 스캔 |
Open Port | Target시스템이 아무런 응답이 없음 |
Close Port | Target시스템으로부터 RST+ACK를 받게됨 |
특 징 | 시스템 로그를 남기지 않음 |
4.TCP ACK 스캔


구 분 | 설 명 |
스캔 방법 | TCP 제어비트(Control)비트 중 ACK를 설정하여 스캔 포트의 오픈여부를 확인하는 용도가 아니라 방화벽의 필터링 정책을 테스트하기 위한 스캔 |
Filtered | Target으로부터 ICMP응답이 돌아오거나 아무런 응답이 없음 |
Not Filtered | 필터링 되지 않을 경우 RST를 수신 |
특 징 | 방화벽이 상태기반(stateful) 방화벽인지 단순히 들어오는 SYN을 차단하는 정책을 가지고있는지 확인하는 용도 단순히 SYN만을 차단하는 정책일 경우 방화벽을 통과할 수 있음 |
5.UDP 스캔

구 분 | 설 명 |
스캔 방법 | 스캐닝하고자하는 포트번호를 목적지포트로 설정하여 UDP 전송 |
Open Port | 아무런 응답이 없음 |
Close Port | ICMP Destination Port Unreachable 수신 |
특 징 | - |
6.Decoy 스캔
구 분 | 설 명 |
스캔 방법 | 실제 스캐너 주소 이외에 다양한 위조된 주소로 스캔하는 방식 |
Open Port | - |
Close Port | - |
특 징 | 다양한 IP로 스캔하기 때문에 피해자는 누가 스캔을하는지 알아채기 어려움 |