나는 sudo를 사용하여 루트 권한으로 nmap을 실행하므로 원시 소켓 생성에 대한 전체 액세스 권한이 있다고 가정합니다. Wireshark는 명령을 사용할 때 단일 포트를 테스트하는 데 사용된 두 개의 패킷을 보여줍니다.
sudo nmap 192.168.110.153 -p21
그게 정상적인 행동인가요? 왜?
sudo nmap 192.168.110.153 -p21 --packet-trace
Starting Nmap 6.40 ( http://nmap.org ) at 2015-05-19 19:18 BST
SENT (0.0447s) ARP who-has 192.168.110.153 tell 192.168.110.155
RCVD (0.0450s) ARP reply 192.168.110.153 is-at 00:0C:29:F4:05:E0
NSOCK INFO [0.2450s] nsi_new2(): nsi_new (IOD #1)
NSOCK INFO [0.2450s] nsock_connect_udp(): UDP connection requested to 127.0.1.1:53 (IOD #1) EID 8
NSOCK INFO [0.2460s] nsock_read(): Read request from IOD #1 [127.0.1.1:53] (timeout: -1ms) EID 18
NSOCK INFO [0.2460s] nsock_trace_handler_callback(): Callback: CONNECT SUCCESS for EID 8 [127.0.1.1:53]
NSOCK INFO [0.2460s] nsock_trace_handler_callback(): Callback: WRITE SUCCESS for EID 27 [127.0.1.1:53]
NSOCK INFO [0.2740s] nsock_trace_handler_callback(): Callback: READ SUCCESS for EID 18 [127.0.1.1:53] (46 bytes): *%...........153.110.168.192.in-addr.arpa.....
NSOCK INFO [0.2740s] nsock_read(): Read request from IOD #1 [127.0.1.1:53] (timeout: -1ms) EID 34
NSOCK INFO [0.2740s] nsi_delete(): nsi_delete (IOD #1)
NSOCK INFO [0.2740s] msevent_cancel(): msevent_cancel on event #34 (type READ)
SENT (0.2751s) TCP 192.168.110.155:45170 > 192.168.110.153:21 S ttl=39 id=28633 iplen=44 seq=3053138125 win=1024 <mss 1460>
SENT (0.3754s) TCP 192.168.110.155:45171 > 192.168.110.153:21 S ttl=46 id=8796 iplen=44 seq=3053072588 win=1024 <mss 1460>
RCVD (0.2759s) TCP 192.168.110.153:21 > 192.168.110.155:45170 RA ttl=64 id=14442 iplen=40 seq=0 win=0
RCVD (0.3756s) TCP 192.168.110.153:21 > 192.168.110.155:45171 RA ttl=64 id=14443 iplen=40 seq=0 win=0
Nmap scan report for 192.168.110.153
Host is up (0.00047s latency).
PORT STATE SERVICE
21/tcp closed ftp
MAC Address: 00:0C:29:F4:05:E0 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.50 seconds
답변1
libpcap
패킷을 Nmap에 전달하기 전에 대기열에 넣는 데 문제가 있는 것 같습니다 . Wireshark와 Nmap 간의 패킷 순서 차이를 확인하세요. 타임스탬프가 동일하더라도 인쇄된 줄의 순서는 패킷이 Nmap으로 전달되었음을 나타냅니다.~ 후에두 번째 SYN 패킷이 전송되었습니다. 우리는 최근에libpcap 1.5.3의 문제패킷이 도착할 때 패킷을 전달하지 않는 패킷 링/TPACKET 인터페이스와 관련된 최신 Linux 커널에서 (그리고 아마도 1.6 브랜치는 테스트되지 않았습니다). 의 출력은 무엇입니까 nmap --version
?
근본적인 문제는 Linux의 버그입니다.이미 수정되었지만 백포트되지 않았습니다.. 우리는 몇 가지 해결 방법이 있는 libpcap을 버전 1.7.3으로 업그레이드하여 개발 중에 이 문제를 해결했습니다.
답변2
스크린샷을 보면, [R.]
스캔 중인 시스템에 도달하기 전에 패킷이 필터링되고 첫 번째 [S]
패킷이 아무런 응답도 받지 못했기 때문에 nmap이 재전송 기능을 사용한 것으로 보입니다.
를 사용하여 이를 비활성화할 수 있습니다 --max-retries 0
.
답변3
단일 포트를 테스트하기 위해 nmap이 두 개의 패킷을 보내는 이유는 무엇입니까?
일반적으로: 3방향 핸드셰이크가 필요하기 때문에TCP 연결 설정... SYN 보내기 -> SYN-ACK 받기 -> ACK 보내기
이 경우 192.168.110.153의 응답이 RST, ACK
즉, 포트 21에 대한 연결이 거부되었기 때문입니다. 아마도 nmap은 약간 지속적이고 두 번 시도한 후 대답을 거부할 것입니다.