Nmap이 포트 스캔 전에 온라인 상태인 시스템을 검색하기 위해 수행하는 단계
프로토콜을 활용하여 라이브 호스트를 검색한다.
- Link 계층의 ARP: 네트워크 세그먼트의 브로드캐스트 주소로 프레임을 보내고 특정 IP주소를 가진 컴퓨터에 MAC(하드웨어)주소를 제공하여 응답하도록 요청
- Network 계층의 ICMP: 8(요청)/0(응답) (동일한 서브넷에 있는 시스템을 ping하려면 ARP쿼리가 ICMP echo보다 먼저 이루어져야함
- Transport 계층의 TCP
- Transport 계층의 UDP
- 네트워크 스캐닝을 위해 스캐너는 대상이 응답 여부를 확인하는 일반적인 TCP UDP 포트에 특수하게 조작된 패킷을 보낼 수 있다. 이 방법은 ICMP echo가 차단된 경우 효율적이다.
1. ARP를 사용한 Nmap 호스트 검색
오프라인 호스트나 사용하지 않는 ip 주소를 포트 스캔하는 데 시간을 낭비하지 않는 것이 중요하다. 온라인 호스트를 찾는 방법은 다양하다. 호스트 검색 옵션이 제공되지 않으면 Nmap은 다음 접근방식을 따라 라이브 호스트를 검색한다.
1. 권한이 있는 사용자가 로컬 네트워크(이더넷)에서 대상을 검색하려고 할 때 Nmap은 ARP요청을 사용한다. 권한 있는 사용자가 로컬 네트워크(이더넷)에서 대상을 검색하려고 할 때 Nmap은 ARP 요청을 사용한다. 권한 있는 사용자는 루트 또는 sudoers에 속하고 sudo를 실행할 수 있는 사용자이다.
2. 권한 있는 사용자가 로컬 네트워크 외부의 대상을 검색하려고 할 때 Nmap은 ICMP 에코 요청, TCP ACK(승인)는 포트 80, TCP SYN(동기화)은 포트 443 및 ICMP 타임스탬프 요청을 사용한다.
3. 권한 없는 사용자가 로컬 네트워크 외부의 대상을 검색하려고 하면 Nmap은 포트 80 및 443에 SYN 패킷을 전송하여 TCP 3방향 핸드셰이크로 다시 이동한다.
기본적으로 Nmap은 핑 검색을 사용하여 라이브 호스트를 찾은 다음 라이브 호스트만 검색한다. 포트를 검색하지 않고 Nmap을 사용하여 라이브 시스템을 검색하려는 경우 nmap -sn TARGETS를 사용할 수 있다.
ARP 검색은 대상 시스템과 동일한 서브넷에 있는 경우에만 가능하다. 이더넷(802.3) 및 WiFi(802.11)에서는 시스템의 MAC 주소를 알아야 통신할 수 있다. MAC 주소는 링크 계층 헤더에 필요하다. 헤더는 소스 MAC 주소와 대상 MAC 주소를 포함한다. MAC 주소를 가져오기 위해 OS는 ARP 쿼리를 보낸다. ARP 쿼리에 응답하는 호스트가 작동한다. ARP 쿼리는 대상이 자신과 동일한 서브넷(즉, 동일한 이더넷/WiFi)에 있는 경우에만 작동한다. 로컬 네트워크의 Nmap 검색 중에 생성된 ARP 쿼리가 많을 것으로 예상된다. Nmap이 포트 검색 없이 ARP 검색만 수행하도록 하려면 nmap -PR -sn TARGETs를 사용한다. 여기서 -PR은 ARP 검색만 원함을 나타낸다. 다음 예에서는 포트 검색 없이 호스트 탐색에 ARP를 사용하는 Nmap을 보여준다. nmap -PR -sn MACHINE_IP/24를 실행하여 대상 머신과 동일한 서브넷에 있는 모든 라이브 시스템을 검색한다.
┌──(root💀kali)-[~]
└─# nmap -PR -sn 10.10.210.6/24 1 ⨯
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-29 03:07 EST
Nmap scan report for 10.10.210.9
Host is up (0.30s latency).
Nmap scan report for 10.10.210.84
Host is up (0.28s latency).
Nmap scan report for 10.10.210.118
Host is up (0.29s latency).
Nmap scan report for 10.10.210.217
Host is up (0.28s latency).
Nmap scan report for 10.10.210.222
Host is up (0.29s latency).
Nmap done: 256 IP addresses (5 hosts up) scanned in 17.85 seconds
이 경우 AttackBox의 IP 주소는 10.10.210.6이었고 ARP 요청을 사용 하여 동일한 서브넷의 라이브 호스트를 검색했다. ARP 스캔은 아래 그림과 같이 작동한다. Nmap은 모든 대상 컴퓨터에 ARP 요청을 보내고 온라인에 있는 컴퓨터는 ARP 응답을 다시 보내야 한다.
Wireshark는 각 ARP 요청과 관련된 소스 MAC 주소, 대상 MAC 주소, 프로토콜 및 쿼리를 표시한다. 소스 주소는 VMWare의 MAC 주소이고 대상은 대상의 MAC 주소를 모르기 때문에 대상은 브로드캐스트 주소이다. 그러나 정보 열에 나타나는 대상의 IP 주소를 볼 수 있습니다. 192.168.254.2 로 시작하는 서브넷의 모든 IP 주소의 MAC 주소를 요청하고 있음을 알 수 있다. 우리가 요청하는 IP 주소를 가진 호스트는 MAC 주소와 함께 ARP 응답을 보내며 이것이 온라인 상태임을 알 수 있는 방법이다.
ARP scan과 관련하여, ARP 쿼리를 중심으로 구축된 스캐너인 arp-scan에 대해 언급해야 한다. arp-scan은 검색을 사용자 지정할 수 있는 많은 옵션을 제공한다. 자세한 내용은 arp-scan wiki를 참조하라. arp-scan --localnet 또는 단순 arp-scan -l을 선택할 수 있다. 이 명령은 로컬 네트워크의 모든 유효한 IP 주소로 ARP 쿼리를 보낸다. 또한 시스템에 둘 이상의 인터페이스가 있고 해당 인터페이스 중 하나에서 라이브 호스트를 검색하려는 경우 -I를 사용하여 인터페이스를 지정할 수 있다. 예를 들어 sudo arp-scan -I eth0 -l은 eth0 인터페이스의 모든 유효한 IP 주소에 대한 ARP 질의를 전송한다.
┌──(root💀kali)-[~]
└─# arp-scan 10.10.210.6/24 130 ⨯
Interface: eth0, type: EN10MB, MAC: 00:0c:29:33:f6:da, IPv4: 192.168.254.128
WARNING: host part of 10.10.210.6/24 is non-zero
Starting arp-scan 1.9.7 with 256 hosts (https://github.com/royhills/arp-scan)
0 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.7: 256 hosts scanned in 2.068 seconds (123.79 hosts/sec). 0 responded
2. ICMP를 사용한 Nmap 호스트 스캔
대상 네트워크의 모든 IP 주소를 ping할 수 있으며 ping(ICMP 유형 8/Echo) 요청에 응답할 사람을 ping 응답(ICMP 유형 0)으로 확인할 수 있다. 이것이 가장 간단한 접근법일 수 있지만 항상 신뢰할 수 있는 것은 아니다. 많은 방화벽이 ICMP 에코를 차단한다. 새로운 버전의 MS Windows는 기본적으로 ICMP 에코 요청을 차단하는 호스트 방화벽으로 구성된다. 대상이 동일한 서브넷에 있는 경우 ARP 쿼리가 ICMP 요청보다 우선한다.
ICMP echo 요청을 사용하여 라이브 호스트를 검색하려면 -PE 옵션을 추가한다. (포트 검색을 따르지 않으려면 -sn을 추가한다.) 다음 그림과 같이 ICMP 에코 스캔은 ICMP 에코 요청을 전송하여 작동하며 대상이 온라인 상태일 경우 ICMP 에코 응답으로 응답할 것으로 예상한다.
아래 예에서는 nmap -PE -sn MACHINE_IP/24를 사용하여 대상의 서브넷을 스캔했다. 이 검색에서는 ICMP 에코 패킷을 서브넷의 모든 IP 주소로 보낸다. 라이브 호스트가 응답할 것으로 예상하지만, 많은 방화벽이 ICMP를 차단한다는 점을 기억해야 한다. 아래 출력은 VMWare에서 sudo nmap -PE -sn MACHINE_IP/24를 사용하여 가상 시스템의 클래스 C 서브넷을 검색한 결과를 보여 준다.
┌──(root💀kali)-[~]
└─# nmap -PE -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-29 05:07 EST
Nmap scan report for 10.10.68.29
Host is up (0.28s latency).
Nmap scan report for 10.10.68.53
Host is up (0.28s latency).
Nmap scan report for 10.10.68.72
Host is up (0.28s latency).
Nmap scan report for 10.10.68.82
Host is up (0.28s latency).
Nmap scan report for 10.10.68.196
Host is up (0.28s latency).
Nmap scan report for 10.10.68.222
Host is up (0.28s latency).
Nmap done: 256 IP addresses (6 hosts up) scanned in 8.54 seconds
스캔 출력은 6개의 호스트가 작동 중임을 보여준다. 또한 MAC 주소를 보여준다. 일반적으로 말해서, 우리는 그들이 우리 시스템과 같은 서브넷에 있지 않는 한 대상의 MAC 주소를 배울 것으로 기대하지 않는다. 위의 출력은 Nmap이 수신한 ARP 응답을 기반으로 이러한 호스트가 작동 중임을 확인했기 때문에 ICMP 패킷을 보낼 필요가 없음을 나타낸다.
위의 스캔을 반복한다. 그러나 이번에는 다른 서브넷에 속한 시스템에서 스캔한다. 결과는 비슷하지만 MAC 주소가 없다.
ICMP 에코 요청은 차단되는 경향이 있으므로 ICMP 타임스탬프 또는 ICMP 주소 마스크 요청을 고려하여 시스템이 온라인인지 여부를 알 수 있다. Nmap은 타임스탬프 요청(ICMP 유형 13)을 사용하고 타임스탬프 응답(ICMP 유형 14)을 받을지 여부를 확인한다. -PP옵션을 추가하면 Nmap이 ICMP 타임스탬프 요청을 사용하도록 지시한다. 아래 그림과 같이 라이브 호스트가 응답할 것으로 예상한다.
┌──(root💀kali)-[~]
└─# nmap -PP -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-29 05:16 EST
Nmap scan report for 10.10.68.29
Host is up (0.28s latency).
Nmap scan report for 10.10.68.72
Host is up (0.28s latency).
Nmap scan report for 10.10.68.82
Host is up (0.28s latency).
Nmap scan report for 10.10.68.123
Host is up (0.28s latency).
Nmap scan report for 10.10.68.196
Host is up (0.28s latency).
Nmap scan report for 10.10.68.222
Host is up (0.28s latency).
Nmap done: 256 IP addresses (6 hosts up) scanned in 13.73 seconds
마찬가지로 Nmap은 주소 마스크 쿼리(ICMP 유형 17)를 사용하고 주소 마스크 응답(ICMP 유형 18)을 받는지 확인한다. 이 스캔은 -PM옵션으로 활성화할 수 있다. 아래 그림과 같이 라이브 호스트는 ICMP 주소 마스크 요청에 응답해야 한다.
┌──(root💀kali)-[~]
└─# nmap -PM -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-29 05:21 EST
Nmap done: 256 IP addresses (0 hosts up) scanned in 52.66 seconds
응답을 받지 못했고 어떤 호스트가 온라인인지 파악할 수 없었지만 이 스캔은 모든 유효한 IP 주소에 ICMP 주소 마스크 요청을 보내고 응답을 기다렸다는 점에 유의해야 한다.
3. TCP UDP를 사용한 Nmap 호스트 스캔
- TCP SYN ping
SYN(동기화) 플래그 가 기본적으로 TCP 포트 80으로 설정된 패킷을 보내고 응답을 기다릴 수 있다. 열린 포트는 SYN/ACK(승인)으로 응답해야 한다. 포트가 닫히면 RST(재설정)가 발생한다. 이 경우 호스트가 작동 중인지 여부를 추론하기 위해 응답을 받을지 여부만 확인한다. 여기서 포트의 특정 상태는 중요하지 않다. 아래 그림은 TCP 3-way 핸드셰이크가 일반적으로 작동하는 방식을 보여준다.
Nmap이 TCP SYN ping 을 사용 하도록 하려면 옵션-PS 뒤에 포트 번호, 범위, 목록 또는 이들의 조합을 사용하여 수행할 수 있다. 예를 들어 -PS21은 포트 21 -PS21-25을 대상으로 하고 포트 21, 22, 23, 24 및 25 -PS80,443,8080를 대상으로 g한다 . 마지막으로 3개의 포트 80, 443 및 8080을 대상으로 한다.
권한이 있는 사용자(root 및 sudoer)는 TCP SYN 패킷을 보낼 수 있으며 아래 그림과 같이 포트가 열려 있어도 TCP 3-way 핸드셰이크를 완료할 필요가 없다. 권한이 없는 사용자는 포트가 열려 있으면 3-way 핸드셰이크를 완료할 수 밖에 없다.
└─# nmap -PS -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-29 05:28 EST
Nmap scan report for 10.10.68.53
Host is up (0.28s latency).
Nmap scan report for 10.10.68.72
Host is up (0.32s latency).
Nmap scan report for 10.10.68.82
Host is up (0.28s latency).
Nmap scan report for 10.10.68.123
Host is up (0.31s latency).
Nmap scan report for 10.10.68.196
Host is up (0.28s latency).
Nmap scan report for 10.10.68.222
Host is up (0.28s latency).
Nmap scan report for 10.10.68.248
Host is up (0.28s latency).
Nmap done: 256 IP addresses (7 hosts up) scanned in 15.53 seconds
- TCP ACK ping
ACK 플래그가 설정된 패킷을 보낸다. 이를 수행하려면 권한 있는 사용자로 Nmap을 실행해야 한다. 권한이 없는 사용자로 시도하면 Nmap은 3-way 핸드셰이크를 시도한다.
기본적으로 포트 80이 사용됩니다. 구문은 TCP SYN ping 과 유사하다 . -PA뒤에 포트 번호, 범위, 목록 또는 이들의 조합이 와야 한다. 예를 들어, 고려 -PA21, -PA21-25하고 -PA80,443,8080. 포트를 지정하지 않으면 포트 80이 사용된다.
다음 그림은 ACK 플래그가 있는 모든 TCP 패킷이 RST 플래그가 설정된 TCP 패킷을 다시 가져와야 함을 보여준다 . ACK 플래그가 있는 TCP 패킷은 진행 중인 연결의 일부가 아니기 때문에 대상은 RST 플래그 세트로 응답한다. 예상 응답은 대상 호스트가 작동 중인지 감지하는 데 사용된다.
└─# nmap -PA -sn 10.10.68.220/24
Starting Nmap 7.92 ( https://nmap.org ) at 2021-12-29 05:35 EST
Nmap scan report for 10.10.68.72
Host is up (1.3s latency).
Nmap scan report for 10.10.68.90
Host is up (1.2s latency).
Nmap scan report for 10.10.68.123
Host is up (0.92s latency).
Nmap scan report for 10.10.68.196
Host is up (0.28s latency).
Nmap scan report for 10.10.68.222
Host is up (0.28s latency).
Nmap scan report for 10.10.68.248
Host is up (0.30s latency).
Nmap done: 256 IP addresses (6 hosts up) scanned in 36.02 seconds
Ref
'네트워크 보안 > 보안' 카테고리의 다른 글
인증우회 (0) | 2021.12.31 |
---|---|
취약점 (0) | 2021.12.30 |
Wireshark 🦈 (0) | 2021.12.28 |
[Pentesting] Metasploit (01) (0) | 2021.12.28 |
[Pentesting] MetaSploit (00) (0) | 2021.12.27 |