포트 스캐닝 (Port Scanning)
어떤 포트가 열려있는지 확인하는 것으로 침입전 취약점을 분석하기 위한 사전 작업 중 하나
대상 서버의 동작 여부, 제공하는 서비스 등을 확인할 수 있으며, nmap 툴을 많이 사용
nmap
nmap [scan type] [options] <target>
- Scan Type
-sS : TCP SYN(Half-Open) Scan
-sT : TCP Connect(Open) Scan
-sU : UDP Scan
-sF : TCP FIN Scan (FIN 플래그 패킷을 이용한 스캔)
-sX : TCP Xmas Scan (FIN, PSH, URG 플래그 조합 패킷을 이용한 스캔)
-sN : TCP NULL Scan (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), XML(.xml), Grepable(.gnmap) 파일로 출력 - 기타 Option
-O : 대상 호스트의 운영체제 정보 출력
-F : 빠른 네트워크 스캐닝
-T0 ~ T5 : T0 아주 느리게 ~ T5 아주 빠르게 - Target
- hostname 지정 (ex. www.algisa.com)
- IP address, Network 등 가능 (ex. 192.168.159.151, 192.168.159.0/24, 192.168.159.100-150)
TCP Connect(Open) 스캔
connect() 함수를 사용해 각 포트별로 정상적인 TCP 연결 설정(3-way handshake)을 수행해 스캔
스캔과정에서 TCP 연결 설정 과정을 완전하게 수행해 연결 포트를 오픈하기 때문에 Open 스캔이라 함
nmap -sT 스캔 타입
- 동작 방식
- OPEN/CLOSED 상태
결과는 가장 정확하지만, 시스템 로그가 남게 된다 - Filtered 상태
해당 포트가 방화벽에 의해 필터링이 되고 있다면 상대방으로부터 아무런 응답 메시지를 받지 못하거나, ICMP 메시지(Destination Unreachable)를 받을 수 있다. 일반적으로 보안상의 이유로 방화벽은 ICMP 메시지 응답을 주지 않도록 설정
- OPEN/CLOSED 상태
TCP SYN(Half-Open) 스캔
기본적으로 관리자 권한을 가지고 있어야 SYN 스캔 가능 (raw 소켓에 접근해 TCP 헤더의 Control bit 설정해야하기 때문)
스캔 과정에서 TCP 연결설정 과정을 완전하게 수행하지 않기 때문에 Half-Open 스캔이라 함
연결이 설정되지 않기 때문에 시스템 로그가 남지 않아 스텔스 스캔이라 함 (타겟 호스트에 흔적(로그) 남기지 않고 스캔한다)
nmap -sS 스캔 타입
- 동작 방식
- OPEN/CLOSED 상태
포트가 열린 상태면 타겟으로부터 SYN+ACK 응답이 오고 ACK가 아닌 RST플래그를 설정한 TCP 패킷을 전송해 연결 강제 종료 포트가 닫힌 상태면 타겟으로부터 RST+ACK 응답이 온다 - Filtered 상태
해당 포트가 방화벽에의해 필터링 되고 있다면 아무런 메시지 받지 못하거나 ICMP Destination Unreachable 메시지를 받는다 일반적으로 보안상의 이유로 방화벽은 ICMP 메시지 응답 주지 않도록 설정
- OPEN/CLOSED 상태
TCP FIN/NULL/Xmas 스캔
스텔스 스캔으로 TCP Header의 Control bit를 빕정상적으로 설정해서 스캔하는 방식
TCP 표준의 미묘한 허점을 이용 ('포트 상태가 CLOSED 라면 요청 세그먼트에 대한 응답으로 RST를 보내게 한다')
- TCP FIN 스캔
FIN 제어비트를 설정한 탐지패킷 전송
nmap -sF 스캔 타입
열린 포트라면 응답이 없고, 닫힌 포트라면 RST+ACK 응답
(응답이 없다면 방화벽 필터링일 수도 있다) - TCP NULL 스캔
제어비트를 아무것도 설정하지 않은 탐지패킷 전송
nmap -sN 스캔 타입
열린 포트라면 응답이 없고, 닫힌 포트라면 RST+ACK 응답
(응답이 없다면 방화벽 필터링일 수도 있다) - TCP Xmas 스캔
일부 제어비트(FIN, PSH, URG) 또는 전체 제어비트를 설정한 탐지패킷 전송
nmap -sN 스캔 타입
열린 포트라면 응답이 없고, 닫힌 포트라면 RST+ACK 응답
(응답이 없다면 방화벽 필터링일 수도 있다)
TCP ACK 스캔
포트의 오픈 여부를 판단하는 것이 아니라 방화벽의 룰셋(필터링 정책)을 테스트하기 위한 스캔
- 대상 방화벽이 상태기반(stateful)인지 여부 (아니면 단순히 주소(IP/Port) 기반으로 차단)
- 대상 포트가 방화벽에 의해 필터링 되고 있는지 여부
ACK 플래그만 설정해서 전송
필터링된다면 응답이 없거나 ICMP 에러 메세지(Unreachable Destination), 필터링 되지 않으면 RST 응답을 받는다
상태기반 필터라면 방화벽에서 차단 가능함
단순히 주소 기반으로 차단하는 필터라면 방화벽에서 차단 불가 (RST+ACK 응답)
UDP 스캔
열린 포트라면 UDP 응답이 오거나 응답이 없고, 닫힌 포트라면 ICMP 메시지(Destination Unreachable, Port Unreachable) 응답
Decoy 스캔
스캔을 당하는 대상 호스트에서 스캐너 주소를 식별하기 어렵도록 실제 스캐너 주소 외에 다양한 위조된 주소로 스캔하는 방식
다양한 IP로 스캐너 주소를 위조하여 관리자가 누가 스캔을 하는지 알아채기 어렵게 하는 것
'보안' 카테고리의 다른 글
보안기사 - DDoS, DRDoS (0) | 2020.04.25 |
---|---|
보안기사 - 서비스 거부 공격(DoS, DDoS) (0) | 2020.04.23 |
보안기사 - 네트워크 관리 명령어 (0) | 2020.04.22 |
보안기사 - TCP, UDP (0) | 2020.04.22 |
보안기사 - IPv4, IPv6, ICMP (0) | 2020.04.20 |