SH1R0_HACKER

포트 스캔 (Port Scan) 본문

Forensic (STUDY)/네트워크

포트 스캔 (Port Scan)

SH1R0_HACKER 2021. 2. 24. 12:24

포트 스캔 (Port Scan)

운영 중인 서버에서 열려 있는 TCP/UDP 포트를 검색하는 것을 의미합니다.

포트 스캔을 통해 특정 시스템이나 네트워크가 어떤 포트를 열어두고 서비스를 하는지 알아낼 수 있습니다.

 

잘 알려진 포트에는

20(FTP - 데이터 포트), 21(FTP - 제어 포트), 22(SSH), 53(DNS), 80(HTTP), 443(HTTPS) 등이 있습니다.

 

포트 스캐닝을 할 수 있는 방법은 다음과 같습니다.


1. TCP Connect Scan (TCP Open Scan)

TCP/IP 소켓 프로그래밍의 connect() 함수를 사용하여 모든 포트에 대해 스캔하는 방식입니다.

해당 포트가 listen 상태라면 3 way hand shake를 합니다.

접 연결을 하기 때문에 시스템 로그가 남습니다.

 

열린 포트일 경우

공격자 -> 서버 (SYN)

서버 -> 공격자 (SYN+ACK)

공격자 -> 서버 (ACK)

공격자 -> 서버 (RST+ACK)

 

닫힌 포트일 경우

공격자 -> 서버 (SYN)

서버 -> 공격자 (RST+ACK)

 


2. TCP SYN Scan (Half-Open Scan)

FULL TCP 접속을 하지 않는 방법입니다.

raw 소켓에 접속하여 TCP 헤더의 제어비트(Control Bit)를 설정하여 스캔합니다.

SYN 패킷을 서버에 보내서 SYN+ACK 응답이 오면 RST 패킷을 보내서 연결을 끊어버립니다.

이렇게 하면 로그를 남기지 않는 경우가 대부분 입니다.

 

열린 포트일 경우

공격자 -> 서버 (SYN)

서버 -> 공격자 (SYN+ACK)

공격자 -> 서버 (RST)

 

닫힌 포트일 경우

공격자 -> 서버 (SYN)

서버 -> 공격자 (RST+ACK)


3. Stealth Scan (FIN / NULL / XMAS Scan)

TCP 제어비트(Control Bit)를 비정상적으로 설정해서 스캔하는 방법입니다.

공격자는 FIN 패킷이나 NULL 패킷, FIN, PSH, URG 패킷을 서버로 보내서 RST+ACK 패킷을 받으면

해당 포트는 닫혀있는걸로 생각하고, 아무런 응답이 없으면 열린포트로 생각합니다.

시스템 로그를 남기지 않습니다.

 

열린 포트일 경우

1. 공격자 -> 서버 (FIN)

2. 공격자 -> 서버 (NULL)

3. 공격자 -> 서버 (FIN, PSH, URG)

 

닫힌 포트일 경우

1. 공격자 -> 서버 (FIN)

서버 -> 공격자 (RST+ACK)

 

2. 공격자 -> 서버 (NULL)

서버-> 공격자 (RST+ACK)

 

3. 공격자 -> 서버 (FIN, PSH, URG)

서버 -> 공격자 (RST+ACK)


4. TCP ACK Scan

TCP 제어비트 (Contol Bit)중 ACK 를 설정하여 스캔하는 방법입니다.

포트의 오픈여부를 확인하는 용도가 아니라 방화벽의 필터링 정책을 테스트하기 위한 방법입니다.

필터링이 되어있다면 ICMP Unreachable 응답을 받을 수 있고, 필터링이 되어있지 않다면 RST를 받습니다.

단순히 SYN 만을 차단하는 정책일 경우 방화벽을 통과할 수 있습니다.


5. UDP Scan

공격자가 스캐닝하고자하는 포트번호를 목적지 포트로 설정하여 UDP를 전송합니다.

포트가 열려있다면 아무런 응답이 없고,

포트가 닫혀있다면 ICMP Destination Port Unreachable를 수신합니다.

'Forensic (STUDY) > 네트워크' 카테고리의 다른 글

TCP 연결 설정 및 해제 (3-way handshake, 4-way handshake)  (0) 2021.02.19
TCP Header (TCP 헤더)  (0) 2021.01.05
Wireshark 사용법  (0) 2020.10.22