포트스캐닝이란?

포트 스캐닝은 컴퓨터 네트워크 보안에서 사용되는 기술로, 네트워크 상에 있는 컴퓨터나 네트워크 장비에 대한 보안 취약점을 찾는 데 도움을 준다. 이는 보안 테스트나 침투 테스트 과정에서 주로 사용된다.

  • 제공 서비스 종류
  • 시스템 운영체제의 커널 버전의 종류
  • 시스템 플랫폼 형태
  • 우회 가능 네트워크 구조
  • 공격 대상 보안 장비 사용 현황

포트란?

인터넷 프로토콜 스위트에서 포트(port)는 운영 체제 통신의 종단점이다. 컴퓨터와 컴퓨터 또는 컴퓨터와 다른 장치들(프린터, 마우스 등)을 연결하는 하드웨어 인터페이스를 의미하기도 한다. 이 용어는 하드웨어 장치에도 사용되지만, 소프트웨어에서는 네트워크 서비스나 특정 프로세스를 식별하는 논리 단위이다. 주로 포트를 사용하는 프로토콜은 전송 계층 프로토콜이라 하며, 예를 들어 전송 제어 프로토콜(TCP)와 사용자 데이터그램 프로토콜(UDP)가 있다. 각 포트는 번호로 구별되며 이 번호를 포트 번호라고 한다. 포트 번호는 IP 주소와 함께 쓰여 해당하는 프로토콜에 의해 사용된다. -wiki

포트 스캐닝 과정

가장 일반적인 방법 중 하나는 TCP 포트 스캔이다. 이 방법은 TCP 연결을 시도하여 응답이 있는지를 확인한다. 다른 방법으로는 UDP 포트 스캔이 있다. UDP는 TCP와 달리 연결을 설정하지 않고 데이터를 보내므로 스캔이 좀 더 어렵다.

nmap (network mapper)

  • 스캔 도구
  • 운영체제 종류 및 사용 서비스에 대한 정보 스캔 도구
  • Open Scan
    • TCP Scan
    • UDP Scan
  • Stealth Scan
    • FIN Scan
    • XMAX Scan
    • NULL Scan

스캔 방법에 따른 nmap 옵션 설명

  • -sT connect() 함수를 이용한 Open Scan ⇒ TCP Open Scan
  • -sS 세션을 성립시키지 않고 TCP SYN 스캔 ⇒ TCP Half-Open Scan
  • -sF FIN 패킷을 이용한 스캔 ⇒ FIN Scan
  • -sN Null 패킷을 이용한 스캔 ⇒ NULL Scan
  • -sX XMAS 패킷을 이용한 스캔 ⇒ XMAX Scan
  • -sU UDP 포트 스캔 ⇒ UDP Scan
  • -sA ACK 패킷에 대한 TTL 값을 분석

TCP Full Open Scan

Target 서버에 해당 포트가 열려 있는 경우

Attacker                          Target            $ nmap -sT TARGET_IP [ -p 포트번호 ]
                    SYN
------------------------------------>            포트가 열려 있는 경우 SYN/ACK 패킷을 수신
                 SYN/ACK                          SYN/ACK에 ACK 패킷을 전송함으로써                                                        연결을 완료

<------------------------------------           스캔하고자 하는 포트에 접속을 시도해                                                        완전한 TCP 연결을 맺어 신뢰성 있는                                                        결과를 얻음

                    ACK
------------------------------------>           속도가 느리고 로그를 남기므로 탐지가                                                        가능하다는 단점이 있음



Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                          Target

                     SYN
------------------------------------>
                  RST/SYN



Target 서버에 차단정책으로 차단되어 있는 경우

Attacker                          Target

                     SYN
------------------------------------>




$ nmap -sT bee.box
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 02:57 EDT
Nmap scan report for bee.box (192.168.40.130)
Host is up (0.0025s latency).
Not shown: 983 closed tcp ports (conn-refused)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
666/tcp open doom
3306/tcp open mysql
5901/tcp open vnc-1
6001/tcp open X11:1
8080/tcp open http-proxy
8443/tcp open https-alt
9080/tcp open glrpc
Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds

beebox 가상머신에 8080 포트로 연결(SYN) 요청이 들어오면 해당 패킷을 DROP하도록 iptables에 추가 (차단하기)

bee@bee-box:~$ sudo iptables -A INPUT -p tcp --tcp-flags SYN SYN --dport 8080 -j DROP

bee@bee-box:~$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP tcp -- anywhere anywhere tcp dpt:webcache flags:SYN/SYN
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination

kali 가상머신에서 beebox 가상머신으로 포트 스캔

$ nmap -sT bee.box
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-03-26 03:14 EDT
Nmap scan report for bee.box (192.168.40.130)
Host is up (0.00053s latency).
Not shown: 983 closed tcp ports (conn-refused)
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
80/tcp open http
139/tcp open netbios-ssn
443/tcp open https
445/tcp open microsoft-ds
512/tcp open exec
513/tcp open login
514/tcp open shell
666/tcp open doom
3306/tcp open mysql
5901/tcp open vnc-1
6001/tcp open X11:1
8080/tcp filtered http-proxy
8443/tcp open https-alt
9080/tcp open glrpc
Nmap done: 1 IP address (1 host up) scanned in 1.31 seconds


TCP Half Open Scan

Target 서버에 해당 포트가 열려 있는 경우

Attacker                          Target            $ nmap -sS TARGET_IP [ -p 포트번호 ]
                    SYN
------------------------------------>            세션에 대한 로그가 남는 TCP Full                                                         Open Scan을 보완하기 위한 기법
                 SYN/ACK                           연결을 끊음

<------------------------------------

                    RST                             세션을 완전히 연결하지 않음
------------------------------------>          로그가 남지 않아 추적이 불가능하도록                                                       하는 기법



Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                          Target

                     SYN
------------------------------------>
                  RST/SYN

<------------------------------------



Target 서버에 차단정책으로 차단(필터링)되어 있는 경우

Attacker                          Target

                     SYN
------------------------------------>


Steath Scan

  • 3 Way Handshaking 연결 기법을 이용하지 않는 것
  • TCP 헤더를 조작해서 특수한 형태의 패킷을 만들어 스캔 대상의 시스템에 보내, 그 응답으로 포트 활성화 여부를 알아내는 기법
  • 세션을 성립하지 않고 공격 대상 시스템 포트 활성화 여부를 알아내기 때문에 공격 대상 시스템에 로그를 남기지 않음
  • 공격 대상의 시스템 관리는 어떤 IP를 가진 공격자가 시스템을 스캔했는지 확인할 수 없음

FIN Scan

Target 서버에 해당 포트가 열려 있는 경우

Attacker                          Target            $ nmap -sF TARGET_IP [ -p 포트번호 ]
                    FIN
------------------------------------>           TCP 헤더에 FIN 플래그를 설정해서 공격                                                         대상에게 메시지를 전송

Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                          Target

                     FIN
------------------------------------>
                  RST/ACK
<------------------------------------




Target 서버에 차단정책으로 차단(필터링)되어 있는 경우

Attacker                          Target

                     FIN
------------------------------------>

XMAS Scan

Target 서버에 해당 포트가 열려 있는 경우

Attacker                          Target            $ nmap -sX TARGET_IP [ -p 포트번호 ]
               UGR,PSH,FIN
------------------------------------>           TCP 헤더에 UGR, PSH, FIN 플래그를                                                       설정해서 전송
                                                      포트가 열려 있는 경우, 응답이 없음




Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                          Target

               UGR,PSH,FIN
------------------------------------>
                  RST/ACK
<------------------------------------




Target 서버에 차단정책으로 차단(필터링)되어 있는 경우

Attacker                          Target

                UGR,PSH,FIN
------------------------------------>

NULL Scan

Target 서버에 해당 포트가 열려 있는 경우

Attacker                          Target            $ nmap -sN TARGET_IP [ -p 포트번호 ]
                      null
------------------------------------>            TCP 헤더에 플래그를 설정하지 않고                                                        전송




Target 서버에 해당 포트가 닫혀 있는 경우

Attacker                          Target

                     null
------------------------------------>
                  RST/ACK
<------------------------------------




Target 서버에 차단정책으로 차단(필터링)되어 있는 경우

Attacker                          Target

                      null
------------------------------------>

UDP Scan

  • UDP는 3-Way Handshaking과 같은 절차가 없음

  • UDP 패킷을 전송 시 열려 있는 포트로부터 특정 UDP 응답값으로 수신

  • 수신측의 포트가 닫혀 있는 경우 ICMP Port Unreachable 에러 메시지를 통해 포트 활성 유무를 확인

  • namp -sU [대상서버IP]

열린 포트인 경우

Attacker                          Target           
                    UDP
------------------------------------>
                    UDP
<------------------------------------

닫힌 포트인 경우

Attacker                          Target           
                    UDP
------------------------------------>
             ICMP Unreachable
<------------------------------------

차단된 포트인 경우

Attacker                          Target           
                    UDP
------------------------------------>

profile
https://github.com/John-Jung

0개의 댓글

관련 채용 정보