본문 바로가기

Information Security/Hacking

포트 스캐닝 (Port Scanning)

반응형

NMAP Port Scanner

* 포트 스캐닝 : 공격자가 침입 전, 대상 호스트에 어떤 포트(서비스)가 활성화 되어 있는지 확인하는 기법

- 취약점 분석을 위한 사전 작업

TCP 표준 (RFC 793)
- 닫힌 포트로 RST 이외의 패킷 수신할 시, RST 패킷으로 응답(RST+ACK)
- 열린 포트로 SYN, ACK, RST 외의 패킷을 수신한 경우, 이를 폐기하고 응답하지 않음
(열린 포트에서 ACK만 수신 시에도 RST로 응답)

 

 

 

* TCP Connect(Open) 스캔 : 일반 사용자 권한으로 connect 시스템 호출(system call)을 이용해, 정상적 TCP 연결 과정을 수행하여 스캔하는 방식

system call : 운영체제(커널)가 제공하는 서비스를, 일반 응용 프로그램이 이용할 수 있도록 제공하는 인터페이스
- 응용 프로그램에 함수 형태로 제공되어, 시스템 함수 라고도 함.

- Target 호스트에 직접 연결되어 시스템 로그에 스캔한 흔적이 남음

- 패킷의 Raw data를 조작하는 것은 관리자 권한이 필요하여, 일반 사용자는 TCP Connect(Open) 스캔 이용

TCP Connect(Open) Scan 포트 응답
방화벽 정책에 따른 Filtered 상태 (DROP / Reject 정책)

 

 

 

* TCP SYN(Half-Open) 스캔 : 관리자 권한으로 TCP 패킷 자체(raw packet)에서 헤더부분의 제어비트(Control Bit)를 직접 조작 후, 3-Way HandShaking을 완전히 수행하지 않는 TCP 포트 스캔 

- 스텔스 (Stealth) 스캔에 해당

스텔스 스캔 : TCP 세션이 완전히 성립되지 않은(TCP 연결 설정 미완료 상태)에서, 타겟 포트의 활성화(오픈) 여부를 알아내는 스캔 방식으로, 대상 시스템에 로그가 남지 않음
- TCP SYN, FIN, NULL, Xmas Scan 등이 해당

- 닫힌 포트에 대해서는 모두 RST + ACK 응답 회신

- 열린 포트에 대해서는 TCP SYN만 SYN+ACK 회신 / TCP FIN, NULL, Xmas Scan의 경우 응답이 오지 않음

TCP SYN(Half-Open) Scan 포트 응답
방화벽 정책에 따른 Filtered 상태 (DROP / Reject 정책)

 

 

 

* TCP FIN Scan : 스텔스 스캔 방식 중 하나로, FIN 제어비트만 설정하여 스캔 수행

TCP 표준에 따라 Open Port FIN 응답 없음 / Closed Port FIN 응답 RST+ACK

 

 

 

* TCP NULL Scan : 스텔스 스캔 방식 중 하나로, 제어비트 설정하지 않고(No Flags Set) 스캔 수행

TCP 표준에 따라 Open Port No Flags Set 응답 없음 / Closed Port No Flags Set 응답 RST+ACK

 

 

 

* TCP Xmas 스캔 : 스텔스 스캔 방식 중 하나로, 제어비트 URG, PSH, FIN 제어비트를 설정하여 스캔 수행

- 급하게(URG), 밀어서(PSH), 끝냄(FIN) = Xmas

TCP 표준에 따라 Open Port URG, PSH, FIN 응답 없음 / Closed Port URG, PSH, FIN 응답 RST+ACK

 

 

 

* TCP FIN, NULL, Xmas 스캔 방화벽 FILTERD 상태

 

 

 

* TCP ACK 스캔 : Target 대상이 포트 오픈 여부에 대한 판단이 아닌, 방화벽 룰셋(Filtering 정책)을 알아내기 위한 스캔 방식

- 대상 포트로 ACK 제어비트만 설정하여 패킷을 전송
- F/W Filtered : 응답없음 or Destination Unreachable 수신
- F/W Unfiltered : 포트 오픈 여부에 상관없이 RST 응답 수신

 

 

 

* UDP 스캔 : Target의 UDP 포트 오픈 여부를 판단하는 스캔

- Port Open 상태 : 응답이 없거나, 정상 UDP 응답 발생

- Port Close 상태 : ICMP Unreachable (Type:3 - Destination Unreacable, Code:3 - Port Unreachable)

 

 

 

* Decoy 스캔 : 포트 스캔 수행 시, 실제 스캐너 주소 외에 다양한 위조 IP로 스캔하는 방식

- nmap Scanner-D RND 옵션을 통해 위조된 IP로 설정한 스캐닝 가능

 

 

 

* nmap port Scanner 옵션

문법 nmap [scan type] [options] <target>
Scan
Type
-sS : TCP SYN(Half-Open) Scan : TCP 포트 오픈 여부를 확인하는 스캔
-sT : TCP Connect(Open) Scan : TCP 포트 오픈 여부를 확인하는 스캔
-sU : UDP Scan : UDP 포트 오픈 여부를 확인하는 스캔
-sF : TCP FIN Scan : TCP FIN 제어비트 패킷을 이용한 스캔
-sX : TCP Xmas Scan : TCP URG/PSH/FIN 제어비트 3개를 조합한 패킷을 이용한 스캔
-sN : TCP NULL Scan : TCP 제어비트 설정 없는 NULL 패킷을 이용한 스캔
-sA : TCP ACK Scan : 방화벽 룰셋(필터링 정책)을 확인하기 위한 스캔
-sP : Ping(icmp/icmp echo) Scan : Ping을 이용해 호스트 활성화 여부를 스캔
-D : Decoy 스캔 : 실제 스캐너 주소 외에도 다양한 주소로 위조하여 스캔
-b : TCP FTP Bounce Scan, -b <FTP bounce proxy>
port
option
-p 22 : 22번 포트 스캔
-p <service> : 특정 서비스명(ex.ssh)으로 포트 스캔
-p 20,25,80 : 20,25,80 포트 / 여러 포트 스캔
-p 1-1023 : 1-1023 포트 스캔 / 일정 범위로 포트 스캔
-pT:21,23,110,U:53 : TCP 21,23,110번 포트와 UDP 53번 포트를 분리하여 포트 스캔
output
option
-v : 상세 내역 출력
-d : Debugging
-oN <file> : 결과를 일반 파일 형식으로 출력
-ox <file> : 결과를 XML 파일 형식으로 출력
-oG <file> : 결과를 Grepable(grep, awk등으로 분석하기 편한) 파일 형식으로 출력
-oA <Directory> : 일반(.nmap), XNL(.xml), Grepable(.gnmap), 파일로 출력
기타
Option
-O : 대상 호스트의 운영 체제 정보 출력
-F : 빠른 네트워크 스캐닝
-T0 ~ T5 : T0 아주 느리게 ~ T5 아주 빠르게
-iL ./파일명.txt : 호스트 목록이 기재된 외부 파일 읽어 스캔 (다수 IP 확인에 효과적)
Target -hostname 지정 : (ex. www.test.com)
-IP address, Network 등 가능
ex) 192.168.10.1
ex) 192.168.10.0/24
ex) 192.168.10.1-150
반응형