nmap
이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 명령 nmap입니다.
프로그램:
이름
nmap - 네트워크 탐색 도구 및 보안/포트 스캐너
개요
nmap [주사 타입...] [옵션 ] {목표 명세서}
기술
Nmap("Network Mapper")은 네트워크 탐색 및 보안을 위한 오픈 소스 도구입니다.
감사. 대규모 네트워크를 빠르게 스캔하도록 설계되었지만
단일 호스트. Nmap은 사용 가능한 호스트를 결정하기 위해 새로운 방식으로 원시 IP 패킷을 사용합니다.
네트워크에서 해당 호스트가 제공하는 서비스(응용 프로그램 이름 및 버전),
실행 중인 운영 체제(및 OS 버전), 패킷 유형
필터/방화벽이 사용 중이며 수십 가지의 다른 특성이 있습니다. Nmap은 일반적으로
보안 감사에 사용되며 많은 시스템 및 네트워크 관리자가 유용하다고 생각합니다.
네트워크 인벤토리, 서비스 업그레이드 일정 관리,
호스트 또는 서비스 가동 시간을 모니터링합니다.
Nmap의 출력은 각 대상에 대한 추가 정보와 함께 스캔된 대상 목록입니다.
사용된 옵션에 따라. 그 정보 중 핵심은 "흥미로운 포트
table”.. 해당 테이블은 포트 번호와 프로토콜, 서비스 이름 및 상태를 나열합니다. NS
상태는 열림, 필터링됨, 닫힘 또는 필터링되지 않음입니다. 열려있는. 응용 프로그램을 의미
대상 시스템에서 해당 포트의 연결/패킷을 수신 대기 중입니다. 거르는. 수단
방화벽, 필터 또는 기타 네트워크 장애물이 포트를 차단하여 Nmap이
열려 있는지 닫혀 있는지 알 수 없습니다. 닫은. 포트에 수신 대기 중인 애플리케이션이 없습니다.
언제든지 열 수 있지만. 포트는 필터링되지 않은 것으로 분류됩니다. 언제
그들은 Nmap의 프로브에 반응하지만 Nmap은 그들이 열려 있는지 여부를 결정할 수 없습니다.
닫은. Nmap은 open|filtered 상태 조합을 보고합니다. 폐쇄|필터링. 언제
포트를 설명하는 두 상태를 결정할 수 없습니다. 포트 테이블에는 다음이 포함될 수도 있습니다.
버전 감지가 요청되었을 때 소프트웨어 버전 세부 정보. IP 프로토콜일 때
스캔이 요청되었습니다(-그래서), Nmap은 지원되는 IP 프로토콜에 대한 정보를 제공합니다.
수신 포트.
흥미로운 포트 테이블 외에도 Nmap은 다음에 대한 추가 정보를 제공할 수 있습니다.
역방향 DNS 이름, 운영 체제 추측, 장치 유형 및 MAC을 포함한 대상
구애.
일반적인 Nmap 스캔은 예 1에 나와 있습니다. 이 예에서 사용된 유일한 Nmap 인수
are -A, OS 및 버전 감지, 스크립트 스캔 및 traceroute를 활성화합니다. -T4 을 통한
더 빠른 실행; 그런 다음 호스트 이름.
예시 1. A 대리인 Nmap은 주사
# nmap -A -T4 scanme.nmap.org
scanme.nmap.org에 대한 Nmap 스캔 보고서(74.207.244.221)
호스트가 가동되었습니다 (0.029 초 대기 시간).
74.207.244.221에 대한 rDNS 레코드: li86-221.members.linode.com
표시되지 않음 : 995 개의 닫힌 포트
포트 스테이트 서비스 버전
22/tcp open ssh OpenSSH 5.3p1 데비안 3ubuntu7(프로토콜 2.0)
| ssh-hostkey: 1024 8d:60:f1:7c:ca:b7:3d:0a:d6:67:54:9d:69:d9:b9:dd (DSA)
|_2048 79:f8:09:ac:d4:e2:32:42:10:49:d3:bd:20:82:85:ec (RSA)
80/tcp open http Apache httpd 2.2.14((Ubuntu))
|_http-title: ScanMe!
646/tcp 필터링된 ldp
1720/tcp 필터링된 H.323/Q.931
9929/tcp open nping-echo Nping 에코
장치 유형: 범용
실행: 리눅스 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6.39
OS 세부 정보: Linux 2.6.39
네트워크 거리: 11홉
서비스 정보: OS: Linux; CPE: cpe:/o:linux:커널
TRACEROUTE(포트 53/tcp 사용)
홉 RTT 주소
[간단함을 위해 처음 10개 홉 자르기]
11 17.65ms li86-221.members.linode.com (74.207.244.221)
Nmap 완료 : 1 초 내에 IP 주소 1 개 (호스트 14.40 개) 스캔
Nmap의 최신 버전은 다음에서 얻을 수 있습니다. https://nmap.org. 의 최신 버전
이 매뉴얼 페이지는 https://nmap.org/book/man.html. 로 포함되기도 합니다.
Nmap 네트워크 스캐닝 장: 네트워크 검색에 대한 공식 Nmap 프로젝트 가이드 및
보안 검색(참조 https://nmap.org/book/).
옵션 개요
이 옵션 요약은 Nmap이 인수 없이 실행되고 최신 버전이 실행될 때 인쇄됩니다.
에서 항상 사용할 수 있습니다. https://svn.nmap.org/nmap/docs/nmap.usage.txt. 그것은 사람들을 돕습니다
가장 일반적인 옵션을 기억하지만 의 심층 문서를 대신할 수는 없습니다.
이 설명서의 나머지 부분. 일부 모호한 옵션은 여기에 포함되지 않습니다.
엔맵 7.01 ( https://nmap.org )
사용법: nmap [스캔 유형] [옵션] {대상 사양}
대상 사양:
호스트 이름, IP 주소, 네트워크 등을 전달할 수 있습니다.
예: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL : 호스트/네트워크 목록에서 입력
-iR : 무작위 대상 선택
--들어오지 못하게 하다 : 호스트/네트워크 제외
--제외 파일 : 파일에서 목록 제외
호스트 발견:
-sL: 목록 스캔 - 단순히 스캔할 대상을 나열합니다.
-sn: Ping 스캔 - 포트 스캔 비활성화
-Pn: 모든 호스트를 온라인으로 취급 -- 호스트 검색 건너뛰기
-PS/PA/PU/PY[포트 목록]: 주어진 포트에 대한 TCP SYN/ACK, UDP 또는 SCTP 검색
-PE/PP/PM: ICMP 에코, 타임스탬프 및 넷마스크 요청 검색 프로브
-PO[프로토콜 목록]: IP 프로토콜 핑
-n/-R: DNS 확인을 수행하지 않음/항상 확인 [기본값: 가끔]
--dns-서버 : 사용자 지정 DNS 서버 지정
--system-dns: OS의 DNS 확인자 사용
--traceroute: 각 호스트에 대한 추적 홉 경로
스캔 기술:
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon 스캔
-sU: UDP 스캔
-sN/sF/sX: TCP Null, FIN 및 Xmas 스캔
--스캔플래그 : TCP 스캔 플래그 사용자 정의
-시 : 유휴 스캔
-sY/sZ: SCTP INIT/COOKIE-ECHO 스캔
-sO: IP 프로토콜 스캔
-NS : FTP 바운스 스캔
포트 사양 및 스캔 순서:
-NS : 지정된 포트만 스캔
예: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports : 지정된 포트를 검사에서 제외
-F: 고속 모드 - 기본 스캔보다 적은 수의 포트를 스캔합니다.
-r: 포트를 연속적으로 스캔 - 임의화하지 않음
--상단 포트 : 스캔 가장 일반적인 포트
--포트 비율 : 보다 일반적인 스캔 포트
서비스/버전 감지:
-sV: 서비스/버전 정보를 확인하기 위해 열린 포트를 조사합니다.
--버전 강도 : 0(밝음)에서 9까지 설정(모든 프로브 시도)
--version-light: 가장 가능성이 높은 프로브로 제한(강도 2)
--version-all: 모든 단일 프로브 시도(강도 9)
--version-trace: 자세한 버전 검사 활동 표시(디버깅용)
스크립트 스캔:
-sC: --script=default와 동일
--스크립트= : 는 쉼표로 구분된 목록입니다.
디렉토리, 스크립트 파일 또는 스크립트 범주
--스크립트-인수= : 스크립트에 인수 제공
--script-args-file=filename: 파일에 NSE 스크립트 인수 제공
--script-trace: 주고받은 모든 데이터 표시
--script-updatedb: 스크립트 데이터베이스를 업데이트합니다.
--스크립트 도움말= : 스크립트에 대한 도움말을 표시합니다.
쉼표로 구분된 스크립트 파일 목록이거나
스크립트 범주.
OS 감지:
-O: OS 감지 활성화
--osscan-limit: OS 감지를 유망한 대상으로 제한
--osscan-guess: OS를 보다 적극적으로 추측
타이밍 및 성능:
소요되는 옵션 초 단위이거나 'ms'(밀리초)를 추가합니다.
''(초), 'm'(분) 또는 'h'(시간)를 값(예: 30m)으로 변환합니다.
-T<0-5>: 타이밍 템플릿 설정(높을수록 빠름)
--최소 호스트 그룹/최대 호스트 그룹 : 병렬 호스트 스캔 그룹 크기
--최소 병렬도/최대 병렬도 : 프로브 병렬화
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout : 지정
프로브 왕복 시간.
--최대 재시도 : 포트 스캔 프로브 재전송 횟수를 제한합니다.
--호스트 타임아웃 : 이 오랜 시간이 지나면 대상을 포기합니다.
--scan-delay/--max-scan-delay : 프로브 간 지연 조정
--최소 속도 : 다음보다 느리지 않은 패킷 전송 초당
--최대 속도 : 패킷을 다음보다 빠르게 전송 초당
방화벽/IDS 회피 및 스푸핑:
-NS; --mtu : 조각 패킷(선택적으로 MTU가 주어진 경우)
-NS : 미끼로 스캔 은폐
-NS : 스푸핑 소스 주소
-이자형 : 지정된 인터페이스 사용
-g/--소스 포트 : 주어진 포트 번호 사용
--프록시 : HTTP/SOCKS1 프록시를 통한 릴레이 연결
--데이터 : 보낸 패킷에 커스텀 페이로드 추가
--데이터 문자열 : 보낸 패킷에 사용자 지정 ASCII 문자열 추가
--데이터 길이 : 전송된 패킷에 임의의 데이터 추가
--ip-옵션 : 지정된 ip 옵션으로 패킷 보내기
--ttl : IP TTL(Time-to-Live) 필드 설정
--스푸핑 맥 : MAC 주소 스푸핑
--badsum: 가짜 TCP/UDP/SCTP 체크섬으로 패킷을 보냅니다.
산출:
-on/-oX/-oS/-oG : 일반, XML, s|의 출력 스캔
및 Grepable 형식을 각각 지정된 파일 이름으로 변환합니다.
-오아 : XNUMX대 형식으로 한번에 출력
-v: 자세한 정보 표시 수준을 높입니다(효과를 높이려면 -vv 이상 사용).
-d: 디버깅 수준을 높입니다(효과를 높이려면 -dd 이상 사용).
--reason: 포트가 특정 상태에 있는 이유를 표시합니다.
--open: 열려 있는(또는 열려 있는) 포트만 표시
--packet-trace: 송수신된 모든 패킷을 표시합니다.
--iflist: 호스트 인터페이스 및 경로 인쇄(디버깅용)
--append-output: clobber가 아닌 지정된 출력 파일에 추가
--재개하다 : 중단된 스캔 재개
--스타일시트 : XML 출력을 HTML로 변환하는 XSL 스타일시트
--webxml: 더 이식 가능한 XML을 위한 Nmap.Org의 참조 스타일시트
--no-stylesheet: XSL 스타일시트와 XML 출력의 연관 방지
MISC :
-6: IPv6 스캔 활성화
-A: OS 감지, 버전 감지, 스크립트 스캔 및 경로 추적 사용
--datadir : 사용자 지정 Nmap 데이터 파일 위치 지정
--send-eth/--send-ip: 원시 이더넷 프레임 또는 IP 패킷을 사용하여 전송
--privileged: 사용자에게 완전한 권한이 있다고 가정합니다.
--unprivileged: 사용자에게 원시 소켓 권한이 없다고 가정합니다.
-V: 버전 번호 인쇄
-h: 이 도움말 요약 페이지를 인쇄합니다.
예 :
nmap -v -A scanme.nmap.org
nmap -v -sn 192.168.0.0/16 10.0.0.0/8
nmap -v -iR 10000 -Pn -p 80
더 많은 옵션과 예는 매뉴얼 페이지(https://nmap.org/book/man.html)를 참조하십시오.
TARGET 사양
옵션(또는 옵션 인수)이 아닌 Nmap 명령줄의 모든 항목이 처리됩니다.
대상 호스트 사양으로. 가장 간단한 경우는 대상 IP 주소를 지정하거나
스캔을 위한 호스트 이름.
때때로 인접한 호스트의 전체 네트워크를 스캔하고 싶을 때가 있습니다. 이를 위해 Nmap은 다음을 지원합니다.
CIDR 스타일. 주소 지정. 추가할 수 있습니다 /마비 IPv4 주소 또는 호스트 이름 및 Nmap
첫 번째 대상이 되는 모든 IP 주소를 스캔합니다. 마비 참조와 동일합니다
IP 또는 호스트 이름이 지정되었습니다. 예를 들어, 192.168.10.0/24는 다음 사이의 256개 호스트를 스캔합니다.
192.168.10.0(바이너리: 11000000 10101000 00001010 00000000) 및 192.168.10.255(바이너리:
11000000 10101000 00001010 11111111) 포함. 192.168.10.40/24는 정확히 스캔합니다.
같은 목표. 호스트 scanme.nmap.org를 감안할 때. IP 주소 64.13.134.52에 있고,
사양 scanme.nmap.org/16은 65,536과 64.13.0.0 사이의 XNUMX개의 IP 주소를 스캔합니다.
64.13.255.255. 허용되는 가장 작은 값은 전체 인터넷을 대상으로 하는 /0입니다. NS
가장 큰 값은 /32이며 모든 주소가
비트가 고정됩니다.
CIDR 표기법은 짧지만 항상 충분히 유연하지는 않습니다. 예를 들어 다음을 스캔할 수 있습니다.
192.168.0.0/16이지만 서브넷으로 사용될 수 있으므로 .0 또는 .255로 끝나는 IP는 건너뜁니다.
네트워크 및 브로드캐스트 주소. Nmap은 옥텟 범위 주소 지정을 통해 이를 지원합니다. 꽤
일반 IP 주소를 지정하는 것보다 쉼표로 구분된 숫자 목록을 지정하거나
각 옥텟에 대한 범위. 예를 들어, 192.168.0-255.1-254는
.0 또는 .255로 끝나는 범위 및 192.168.3-5,7.1은 XNUMX개의 주소를 스캔합니다.
192.168.3.1, 192.168.4.1, 192.168.5.1 및 192.168.7.1. 범위의 어느 쪽이든
생략됨; 기본값은 왼쪽이 0이고 오른쪽이 255입니다. 사용 - 그 자체로
0-255와 동일하지만 첫 번째 옥텟에서 0-을 사용하는 것을 기억하십시오.
명령줄 옵션처럼 보이지 않습니다. 범위를 마지막 옥텟으로 제한할 필요는 없습니다.
0-255.0-255.13.37 지정자는 모든 IP 주소에 대해 인터넷 전체 검색을 수행합니다.
13.37에 끝납니다. 이러한 종류의 광범위한 샘플링은 인터넷 설문조사 및
연구.
IPv6 주소는 정규화된 IPv6 주소 또는 호스트 이름으로만 지정할 수 있습니다.
CIDR 및 옥텟 범위는 아직 IPv6에 대해 지원되지 않습니다.
비전역 범위의 IPv6 주소에는 영역 ID 접미사가 있어야 합니다. 유닉스 시스템에서 이것은
인터페이스 이름이 뒤에 오는 퍼센트 기호입니다. 완전한 주소는
fe80::a8bb:ccff:fedd:eeff%eth0. Windows에서는 다음 대신 인터페이스 인덱스 번호를 사용합니다.
인터페이스 이름: fe80::a8bb:ccff:fedd:eeff%1. 다음을 통해 인터페이스 인덱스 목록을 볼 수 있습니다.
명령 실행 netsh.exe 인터페이스 ipv6 표시 인터페이스.
Nmap은 명령줄에서 여러 호스트 사양을 허용하며 다음과 같을 필요는 없습니다.
같은 유형. 명령 nmap scanme.nmap.org 192.168.0.0/8 10.0.0,1,3-7.- 당신이 무엇을합니까
예상할 것이다.
대상은 일반적으로 명령줄에 지정되지만 다음 옵션도 사용할 수 있습니다.
대상 선택을 제어하는 데 사용 가능:
-iL 입력 파일 이름 (목록에서 입력) .
에서 대상 사양을 읽습니다. 입력 파일 이름. 많은 호스트 목록을 전달하는 것은 종종
명령줄에서 어색하지만 일반적인 욕망입니다. 예를 들어 DHCP 서버
스캔하려는 10,000개의 현재 임대 목록을 내보낼 수 있습니다. 아니면 어쩌면 당신이 원하는
모든 IP 주소를 스캔하려면 외 승인되지 않은 고정 IP를 사용하여 호스트를 찾는 사람들을 위해
구애. 스캔할 호스트 목록을 생성하고 해당 파일 이름을 Nmap에 다음과 같이 전달하기만 하면 됩니다.
에 대한 주장 -iL 옵션. 항목은 Nmap에서 허용하는 모든 형식일 수 있습니다.
명령줄에서(IP 주소, 호스트 이름, CIDR, IPv6 또는 옥텟 범위) 각 항목
하나 이상의 공백, 탭 또는 줄 바꿈으로 구분해야 합니다. 하이픈을 지정할 수 있습니다.
(-) Nmap이 호스트가 아닌 표준 입력에서 호스트를 읽도록 하려면
실제 파일.
입력 파일에는 #으로 시작하고 끝까지 확장되는 주석이 포함될 수 있습니다.
줄입니다.
-iR NUM 호스트 (무작위 대상 선택) .
인터넷 전체 설문조사 및 기타 연구의 경우 다음에서 대상을 선택할 수 있습니다.
무작위의. NS NUM 호스트 인수는 Nmap에 생성할 IP 수를 알려줍니다. 바람직하지 않은 IP
특정 개인, 멀티캐스트 또는 할당되지 않은 주소 범위에 있는 것과 같은
자동으로 건너뜁니다. 끝없는 스캔에 대해 인수 0을 지정할 수 있습니다. 유지하다
일부 네트워크 관리자는 승인되지 않은
네트워크에 불만을 제기할 수 있습니다. 자신의 책임하에 이 옵션을 사용하십시오! 자신을 발견하면
정말 지루한 어느 비오는 오후, 명령을 시도하십시오 nmap -Pn -봄 여름 시즌 -p 80 -iR 0 --열려있는. 에
탐색을 위해 임의의 웹 서버를 찾습니다.
--들어오지 못하게 하다 host1[,host2[,...]] (호스트/네트워크 제외) .
다음과 같은 경우에도 스캔에서 제외할 대상의 쉼표로 구분된 목록을 지정합니다.
지정한 전체 네트워크 범위의 일부입니다. 전달한 목록은 normal을 사용합니다.
호스트 이름, CIDR 넷블록, 옥텟 범위 등을 포함할 수 있는 Nmap 구문
스캔하려는 네트워크에 건드릴 수 없는 미션 크리티컬이 포함되어 있을 때 유용합니다.
서버, 포트 스캔 또는 서브넷에 부정적으로 반응하는 것으로 알려진 시스템
다른 사람들이 관리합니다.
--제외 파일 제외 파일 (파일에서 목록 제외) .
이것은 다음과 동일한 기능을 제공합니다. --들어오지 못하게 하다 제외되는 것을 제외하고 옵션
대상은 줄 바꿈, 공백 또는 탭으로 구분되어 제공됩니다. 제외 파일 보다는
명령 행에서.
제외 파일에는 #으로 시작하고 끝까지 확장되는 주석이 포함될 수 있습니다.
줄입니다.
HOST 발견
네트워크 정찰 임무의 첫 번째 단계 중 하나는
(때로는 거대한) IP 범위 세트를 활성 또는 관심 호스트 목록으로 만듭니다. 스캐닝
모든 단일 IP 주소의 모든 포트는 느리고 일반적으로 불필요합니다. 물론 무엇
호스트를 흥미롭게 만드는 것은 스캔 목적에 따라 크게 달라집니다. 네트워크 관리자는
특정 서비스를 실행하는 호스트에만 관심이 있는 반면 보안 감사자는 관심을 가질 수 있습니다.
IP 주소가 있는 모든 단일 장치에 대해 관리자는 편안하게 사용할 수 있습니다.
내부 네트워크에서 호스트를 찾기 위한 ICMP 핑, 외부 침투
테스터는 방화벽을 피하기 위해 수십 개의 다양한 프로브 세트를 사용할 수 있습니다.
제한.
호스트 검색 요구 사항이 매우 다양하기 때문에 Nmap은 다음을 위한 다양한 옵션을 제공합니다.
사용된 기술을 사용자 정의합니다. 호스트 검색은 때때로 ping 스캔이라고 하지만
유비쿼터스 핑 도구와 관련된 단순한 ICMP 에코 요청 패킷을 훨씬 능가합니다.
사용자는 목록 스캔(-SL) 또는 ping 비활성화(-Pn),
또는 다중 포트 TCP SYN/ACK, UDP, SCTP의 임의 조합으로 네트워크를 연결합니다.
INIT 및 ICMP 프로브. 이러한 조사의 목표는 다음을 입증하는 응답을 요청하는 것입니다.
IP 주소가 실제로 활성 상태인지(호스트 또는 네트워크 장치에서 사용 중인지) 많은
네트워크에서는 특정 시간에 소수의 IP 주소만 활성화됩니다. 이것은
10.0.0.0/8과 같은 개인 주소 공간에서 특히 일반적입니다. 그 네트워크는 16
백만 IP, 그러나 나는 천 대 미만의 컴퓨터를 가진 회사에서 사용하는 것을 보았습니다. 주인
발견은 희소하게 할당된 IP 주소 바다에서 해당 시스템을 찾을 수 있습니다.
호스트 검색 옵션이 제공되지 않으면 Nmap은 ICMP 에코 요청, TCP SYN 패킷을 보냅니다.
포트 443에 대한 TCP ACK 패킷, 포트 80에 대한 ICMP 타임스탬프 요청. (IPv6의 경우
ICMP 타임스탬프 요청은 ICMPv6의 일부가 아니므로 생략됩니다.) 이러한 기본값은
에 해당 -체육 -PS443 -PA80 -PP 옵션. 이에 대한 예외는 ARP(
IPv4) 및 이웃 검색. (IPv6의 경우) 로컬의 모든 대상에 사용되는 스캔
이더넷 네트워크. 권한이 없는 Unix 셸 사용자의 경우 기본 프로브는 SYN 패킷입니다.
다음을 사용하여 포트 80 및 443에 잇다 system call.. 이 호스트 검색은 종종
로컬 네트워크를 스캔할 때 충분하지만 보다 포괄적인 검색 프로브 세트
보안 감사에 권장됩니다.
The -NS* 옵션(ping 유형 선택)을 결합할 수 있습니다. 확률을 높일 수 있습니다
서로 다른 TCP 포트/플래그를 사용하여 많은 프로브 유형을 전송하여 엄격한 방화벽을 관통합니다.
및 ICMP 코드. 또한 ARP/이웃 검색(-홍보). 에 대해 기본적으로 수행됩니다.
다른 것을 지정하더라도 로컬 이더넷 네트워크의 대상 -NS* 옵션이기 때문에
거의 항상 더 빠르고 더 효과적입니다.
기본적으로 Nmap은 호스트 검색을 수행한 다음 각 호스트에 대해 포트 스캔을 수행합니다.
온라인 상태인지 확인합니다. 기본이 아닌 호스트 검색 유형을 지정하는 경우에도 마찬가지입니다.
UDP 프로브(-PU). 에 대해 읽어보십시오 -sn 호스트만 수행하는 방법을 배우는 옵션
발견 또는 사용 -Pn 호스트 검색을 건너뛰고 모든 대상 호스트를 포트 스캔합니다. 다음과 같은
옵션은 호스트 검색을 제어합니다.
-SL (목록 스캔) .
목록 스캔은 단순히 각 호스트를 나열하는 퇴화한 형태의 호스트 검색입니다.
대상 호스트에 패킷을 보내지 않고 지정된 네트워크(들). 기본적으로,
Nmap은 여전히 호스트의 이름을 알아내기 위해 역방향 DNS 확인을 수행합니다. 그것은 종종
간단한 호스트 이름이 얼마나 유용한 정보를 제공하는지 놀랍습니다. 예를 들어, fw.chi
한 회사의 시카고 방화벽 이름입니다. Nmap은 또한 총
마지막에 IP 주소. 목록 스캔은
대상에 대한 적절한 IP 주소. 호스트가 도메인 이름을 사용하지 않는 경우
잘못된 회사의 스캔을 방지하기 위해 더 조사할 가치가 있습니다.
네트워크.
아이디어는 단순히 대상 호스트 목록을 인쇄하는 것이기 때문에 더 높은 수준의 옵션은
포트 스캐닝, OS 감지 또는 핑 스캐닝과 같은 기능은 결합할 수 없습니다.
이것으로. 더 높은 성능을 유지하면서 핑 스캔을 비활성화하려면
레벨 기능, 자세히 읽어보기 -Pn (핑 건너뛰기) 옵션.
-sn (포트 스캔 없음) .
이 옵션은 Nmap이 호스트 검색 후 포트 스캔을 하지 않고 출력만 하도록 지시합니다.
호스트 검색 프로브에 응답한 사용 가능한 호스트. 이것은 종종 알려져 있습니다
"ping 스캔"으로 사용되지만 traceroute 및 NSE 호스트 스크립트가
운영. 이것은 기본적으로 목록 스캔보다 한 단계 더 방해가 되며 종종
같은 목적으로 사용됩니다. 그것은 표적 네트워크의 가벼운 정찰을 허용합니다.
많은 관심을 받고 있습니다. 얼마나 많은 호스트가 작동 중인지 아는 것이 공격자에게 더 중요합니다.
모든 단일 IP 및 호스트 이름의 목록 스캔에서 제공하는 목록보다
시스템 관리자는 종종 이 옵션도 유용하다고 생각합니다. 그것은 쉽게 사용할 수 있습니다
네트워크에서 사용 가능한 컴퓨터를 계산하거나 서버 가용성을 모니터링합니다. 이것은 종종
핑 스윕이라고 하며 브로드캐스트 주소를 핑하는 것보다 더 안정적입니다.
많은 호스트가 브로드캐스트 쿼리에 응답하지 않습니다.
다음으로 수행되는 기본 호스트 검색 -sn ICMP 에코 요청, TCP SYN으로 구성
기본적으로 포트 443, 포트 80에 대한 TCP ACK 및 ICMP 타임스탬프 요청입니다. 실행 시
권한이 없는 사용자에 의해 SYN 패킷만 전송됩니다( 잇다 호출) 포트 80으로
그리고 표적에 443. 권한이 있는 사용자가 로컬에서 대상을 스캔하려고 할 때
이더넷 네트워크에서 ARP 요청이 사용되지 않는 한 --send-ip 지정되었습니다. NS -sn option
디스커버리 프로브 유형( -NS* 옵션, 제외 -Pn)
더 큰 유연성을 위해. 이러한 프로브 유형 및 포트 번호 옵션 중 하나를 사용하는 경우
기본 프로브가 무시됩니다. 엄격한 방화벽이 설치된 경우
이러한 고급 기술을 사용하여 Nmap과 대상 네트워크를 실행하는 소스 호스트는
추천. 그렇지 않으면 방화벽이 프로브를 삭제할 때 호스트를 놓칠 수 있습니다.
답변.
Nmap의 이전 릴리스에서는 -sn 로 알려졌다 -SP..
-Pn (핑 없음) .
이 옵션은 Nmap 검색 단계를 완전히 건너뜁니다. 일반적으로 Nmap은 이 단계를 사용합니다.
더 무거운 스캔을 위해 활성 머신을 결정합니다. 기본적으로 Nmap은 다음 작업만 수행합니다.
포트 스캔, 버전 감지 또는 호스트에 대한 OS 감지와 같은 과중한 프로빙
올라간 것으로 밝혀졌습니다. 다음을 사용하여 호스트 검색 비활성화 -Pn Nmap이 시도하도록 합니다.
에 대해 요청된 스캔 기능 매주 대상 IP 주소가 지정되었습니다. 그래서 만약 수업이
B 대상 주소 공간(/16)은 명령줄에 지정되며 모든 65,536개의 IP 주소
스캔됩니다. 목록 스캔과 마찬가지로 적절한 호스트 검색을 건너뛰지만 대신
대상 목록을 중지하고 인쇄하면 Nmap은 계속해서 요청된 기능을 수행합니다.
각 대상 IP가 활성인 것처럼. 핑 스캔을 건너뛰려면 그리고 여전히 허용하면서 포트 스캔
NSE를 실행하려면 두 가지 옵션을 사용하십시오. -Pn -sn 함께.
로컬 이더넷 네트워크에 있는 시스템의 경우 ARP 스캐닝이 계속 수행됩니다(
--disable-arp-ping or --send-ip 지정됨) Nmap에는 MAC 주소가 필요하기 때문에
추가 스캔 대상 호스트. Nmap의 이전 버전에서는 -Pn 였다 - P0. 과 -PN..
-추신 포트 명부 (TCP SYN 핑) .
이 옵션은 SYN 플래그가 설정된 빈 TCP 패킷을 보냅니다. 기본 목적지
포트는 80입니다(컴파일 시 다음을 변경하여 구성 가능 DEFAULT_TCP_PROBE_PORT_SPEC. ~ 안에
nmap.h).. 대체 포트를 매개변수로 지정할 수 있습니다. 구문은 다음과 같습니다.
위한 -p T:와 같은 포트 유형 지정자는 허용되지 않는다는 점을 제외하고. 예는 다음과 같습니다.
-PS22 그리고 -PS22-25,80,113,1050,35000. 사이에 공백이 있을 수 없음을 유의하십시오. -추신 그리고
포트 목록. 여러 프로브가 지정된 경우 병렬로 전송됩니다.
SYN 플래그는 설정하려는 원격 시스템을 제안합니다.
연결. 일반적으로 대상 포트는 닫히고 RST(리셋) 패킷은
돌려 보내다. 포트가 열리면 대상은 두 번째 단계를 수행합니다.
TCP XNUMX방향 핸드셰이크. SYN/ACK TCP 패킷으로 응답합니다. 달리는 기계
그런 다음 Nmap은 RST 대신 RST로 응답하여 초기 연결을 끊습니다.
XNUMX방향 핸드셰이크를 완료하고
완전한 연결. RST 패킷은 Nmap을 실행하는 머신의 커널에 의해 전송됩니다.
Nmap 자체가 아닌 예기치 않은 SYN/ACK에 대한 응답입니다.
Nmap은 포트가 열려 있는지 닫혀 있는지 상관하지 않습니다. RST 또는 SYN/ACK
이전에 논의된 응답은 호스트가 사용 가능하고 응답할 수 있음을 Nmap에 알립니다.
Unix 상자에서는 권한이 있는 사용자 루트만 가능합니다. 일반적으로 보내고 받을 수 있습니다
원시 TCP 패킷.. 권한이 없는 사용자의 경우 해결 방법이 자동으로 사용됩니다.
이로써 잇다 시스템 호출은 각 대상 포트에 대해 시작됩니다. 이것은 가지고있다
설정을 위해 SYN 패킷을 대상 호스트로 보내는 효과
연결. 만약 잇다 빠른 성공 또는 ECONNREFUSED 실패와 함께 반환,
기본 TCP 스택은 SYN/ACK 또는 RST를 수신해야 하며 호스트는
사용 가능. 시간 초과에 도달할 때까지 연결 시도가 중단된 상태로 남아 있으면
호스트가 다운으로 표시됩니다.
-아빠 포트 명부 (TCP ACK 핑) .
TCP ACK 핑은 방금 논의한 SYN 핑과 매우 유사합니다. 차이점은 다음과 같이
SYN 플래그 대신 TCP ACK 플래그가 설정되어 있다고 추측할 수 있습니다. 그런
ACK 패킷은 설정된 TCP 연결을 통해 데이터를 확인하는 것으로 간주되며,
그러나 그러한 연결은 존재하지 않습니다. 따라서 원격 호스트는 항상 RST로 응답해야 합니다.
패킷, 프로세스에서 자신의 존재를 공개합니다.
The -아빠 옵션은 SYN 프로브(80)와 동일한 기본 포트를 사용하며
동일한 형식의 대상 포트 목록입니다. 권한이 없는 사용자가 이것을 시도하면
잇다 이전에 논의된 해결 방법이 사용됩니다. 이 해결 방법은 불완전하기 때문에
잇다 실제로 ACK가 아닌 SYN 패킷을 보내고 있습니다.
SYN 및 ACK ping 프로브를 모두 제공하는 이유는
방화벽 우회. 많은 관리자가 라우터 및 기타 단순 방화벽을 구성합니다.
다음과 같은 공공 서비스를 대상으로 하는 패킷을 제외하고 들어오는 SYN 패킷을 차단합니다.
회사 웹 사이트 또는 메일 서버. 이것은 다른 들어오는 연결을 방지합니다.
사용자가 방해받지 않고 나가는 연결을 만들 수 있도록 허용하면서
인터넷. 이 비상태 저장 방식은 방화벽/라우터에서 리소스를 거의 차지하지 않으며
하드웨어 및 소프트웨어 필터에서 널리 지원됩니다. Linux Netfilter/iptables.
방화벽 소프트웨어는 --syn 이 상태 비저장을 구현하기 위한 편의 옵션
접근하다. 이와 같은 상태 비저장 방화벽 규칙이 있는 경우 SYN ping 프로브
(-추신) 닫힌 대상 포트로 보낼 때 차단될 수 있습니다. 그러한 경우,
ACK 프로브는 이러한 규칙을 잘 통과할 때 빛을 발합니다.
또 다른 일반적인 유형의 방화벽은 예기치 않은 패킷을 삭제하는 상태 저장 규칙을 사용합니다. 이것
이 기능은 처음에는 대부분 고급 방화벽에서 발견되었지만 이제는
수년에 걸쳐 더 일반적입니다. Linux Netfilter/iptables 시스템은 다음을 통해 이를 지원합니다.
전에, --상태 연결 상태에 따라 패킷을 분류하는 옵션입니다. SYN 프로브
예기치 않은 ACK 패킷이 일반적으로 발생하기 때문에 이러한 시스템에 대해 작동할 가능성이 더 높습니다.
위조로 인식되어 삭제되었습니다. 이 문제에 대한 해결책은 SYN과
지정하여 ACK 프로브 -추신 그리고 -아빠.
-PU 포트 명부 (UDP 핑) .
또 다른 호스트 검색 옵션은 UDP 패킷을 지정된 호스트로 보내는 UDP ping입니다.
포트. 대부분의 포트에서 패킷은 비어 있지만 일부는 프로토콜별
응답을 이끌어낼 가능성이 더 큰 페이로드. 페이로드 데이터베이스가 설명되어 있습니다.
at https://nmap.org/book/nmap-payloads.html.. --데이터, --데이터 문자열및
--데이터 길이 옵션을 제공합니다.
포트 목록은 이전에 논의된 것과 동일한 형식을 취합니다. -추신 그리고 -아빠
옵션. 포트가 지정되지 않은 경우 기본값은 40125입니다. 이 기본값은 다음과 같습니다.
변경하여 컴파일 타임에 구성 DEFAULT_UDP_PROBE_PORT_SPEC. nmap.h..에서
열린 포트로 보내는 경우가 많기 때문에 매우 드문 포트가 기본적으로 사용됩니다.
이 특정 스캔 유형에는 바람직하지 않습니다.
대상 시스템에서 닫힌 포트에 도달하면 UDP 프로브는 ICMP를 이끌어내야 합니다.
포트에 연결할 수 없는 패킷을 반환합니다. 이것은 Nmap에 기계가 작동 중이고
사용 가능. 호스트/네트워크 도달 불가 또는 TTL과 같은 다른 많은 유형의 ICMP 오류
초과되면 다운되었거나 연결할 수 없는 호스트를 나타냅니다. 대응이 미흡하다는 점도
이렇게 해석합니다. 열린 포트에 도달하면 대부분의 서비스는 단순히 무시합니다.
패킷이 비어 있고 응답을 반환하지 못합니다. 이것이 기본 프로브 포트가
40125는 사용되지 않을 가능성이 매우 높습니다. 캐릭터와 같은 몇 가지 서비스
Generator(chargen) 프로토콜은 빈 UDP 패킷에 응답하여 공개합니다.
머신을 사용할 수 있음을 Nmap에 알립니다.
이 검사 유형의 주요 이점은 방화벽과 필터를 우회한다는 것입니다.
화면 TCP만. 예를 들어 Linksys BEFW11S4 무선 광대역을 소유한 적이 있습니다.
라우터. 이 장치의 외부 인터페이스는 기본적으로 모든 TCP 포트를 필터링했지만
UDP 프로브는 여전히 포트에 연결할 수 없는 메시지를 유도하여 장치를 제공합니다.
-파이 포트 명부 (SCTP 초기화 핑) .
이 옵션은 최소 INIT 청크를 포함하는 SCTP 패킷을 보냅니다. 기본값
대상 포트는 80입니다(컴파일 시간에 변경하여 구성 가능
DEFAULT_SCTP_PROBE_PORT_SPEC. nmap.h에서). 대체 포트는 다음과 같이 지정할 수 있습니다.
매개변수. 구문은 다음과 같습니다. -p 다음과 같은 포트 유형 지정자를 제외하고
S: 허용되지 않습니다. 예는 다음과 같습니다. -PY22 그리고 -PY22,80,179,5060. 있을 수 있으니 참고하세요
사이에 공백 없음 -파이 및 포트 목록. 여러 프로브가 지정되면
병렬로 보냈습니다.
INIT 청크는 설정하려는 원격 시스템을 제안합니다.
협회. 일반적으로 대상 포트는 닫히고 ABORT 청크는
돌려 보내다. 포트가 열리면 대상은 두 번째 단계를 수행합니다.
SCTP XNUMX방향 핸드셰이크. INIT-ACK 청크로 응답합니다. 기계가 작동하는 경우
Nmap은 기능적인 SCTP 스택을 가지고 있으며, 다음으로 초기 연결을 해제합니다.
COOKIE-ECHO 청크를 보내는 대신 ABORT 청크로 응답합니다.
XNUMX자 핸드셰이크의 다음 단계. ABORT 패킷은 커널이 보낸다.
Nmap 자체가 아니라 예기치 않은 INIT-ACK에 대한 응답으로 Nmap을 실행하는 시스템.
Nmap은 포트가 열려 있는지 닫혀 있는지 상관하지 않습니다. ABORT 또는 INIT-ACK
이전에 논의된 응답은 호스트가 사용 가능하고 응답할 수 있음을 Nmap에 알립니다.
Unix 상자에서는 권한이 있는 사용자 루트만 가능합니다. 일반적으로 보내고 받을 수 있습니다
원시 SCTP 패킷.. SCTP INIT Ping 사용은 현재 권한이 없는 사용자에 대해 불가능합니다.
사용자..
-체육; -PP; -오후 (ICMP 핑 유형) .
비정상적인 TCP, UDP 및 SCTP 호스트 검색 유형 외에도 논의
이전에는 Nmap이 유비쿼터스 핑 프로그램에서 보낸 표준 패킷을 보낼 수 있었습니다.
Nmap은 ICMP 유형 8(에코 요청) 패킷을 대상 IP 주소로 보냅니다.
사용 가능한 호스트로부터의 대가로 유형 0(에코 응답).. 불행히도 네트워크
탐색기, 많은 호스트 및 방화벽은 이제 다음과 같이 응답하지 않고 이러한 패킷을 차단합니다.
에 의해 요구되는 RFC 1122[2].. 이러한 이유로 ICMP 전용 스캔은 거의 신뢰할 수 없습니다.
인터넷을 통해 알 수 없는 대상에 대해. 그러나 모니터링하는 시스템 관리자의 경우
내부 네트워크, 그들은 실용적이고 효율적인 접근이 될 수 있습니다. 사용 -체육 option
이 에코 요청 동작을 활성화합니다.
에코 요청은 표준 ICMP 핑 쿼리이지만 Nmap은 여기서 멈추지 않습니다. ICMP
표준 (RFC 792[삼]. 그리고 RFC 950[4]. ) 또한 타임스탬프 요청, 정보 지정
요청 및 주소 마스크 요청 패킷은 각각 코드 13, 15 및 17입니다. 하는 동안
이러한 쿼리의 표면적 목적은 주소 마스크와 같은 정보를 학습하는 것입니다.
및 현재 시간, 호스트 검색에 쉽게 사용할 수 있습니다. 응답하는 시스템
사용 가능합니다. Nmap은 현재 정보 요청 패킷을 구현하지 않습니다.
그들은 널리 지원되지 않습니다. RFC 1122는 "호스트는
이러한 메시지”. 타임스탬프 및 주소 마스크 쿼리는 다음과 함께 보낼 수 있습니다. -PP 그리고 -오후
옵션을 각각. 타임스탬프 응답(ICMP 코드 14) 또는 주소 마스크 응답(코드
18) 호스트를 사용할 수 있음을 공개합니다. 이 두 쿼리는 다음과 같은 경우에 유용할 수 있습니다.
관리자는 특히 에코 요청 패킷을 차단하고 다른 패킷은 잊어버립니다.
같은 목적으로 ICMP 쿼리를 사용할 수 있습니다.
-PO 프로토콜 명부 (IP 프로토콜 핑) .
새로운 호스트 검색 옵션 중 하나는 IP 프로토콜 핑으로
IP 헤더에 지정된 프로토콜 번호가 설정된 패킷. 프로토콜 목록
이전에 논의된 TCP, UDP 및 SCTP의 do 포트 목록과 동일한 형식을 취합니다.
호스트 검색 옵션. 프로토콜이 지정되지 않은 경우 기본값은 여러
ICMP(프로토콜 1), IGMP(프로토콜 2) 및 IP-in-IP(프로토콜 4)용 IP 패킷. NS
기본 프로토콜은 다음을 변경하여 컴파일 타임에 구성할 수 있습니다.
DEFAULT_PROTO_PROBE_PORT_SPEC. nmap.h에서 ICMP, IGMP, TCP(프로토콜
6), UDP(프로토콜 17) 및 SCTP(프로토콜 132), 패킷은 적절한
프로토콜 헤더. 다른 프로토콜은 추가 데이터 없이 전송됩니다.
IP 헤더(다음 중 하나라도 제외 --데이터, --데이터 문자열및 --데이터 길이 옵션은
지정).
이 호스트 검색 방법은 호스트와 동일한 프로토콜을 사용하여 두 응답 중 하나를 찾습니다.
주어진 프로토콜을 나타내는 프로브 또는 ICMP 프로토콜 도달 불가 메시지
대상 호스트에서 지원되지 않습니다. 두 가지 유형의 응답은 다음을 의미합니다.
대상 호스트가 살아 있습니다.
-홍보 (ARP 핑) .
가장 일반적인 Nmap 사용 시나리오 중 하나는 이더넷 LAN을 스캔하는 것입니다. 대부분의 LAN에서
특히 다음으로 지정된 개인 주소 범위를 사용하는 경우 RFC 1918[5], 광대한
대부분의 IP 주소는 주어진 시간에 사용되지 않습니다. Nmap이 raw를 보내려고 할 때
ICMP 에코 요청과 같은 IP 패킷, 운영 체제는
대상 IP에 해당하는 대상 하드웨어(ARP) 주소
이더넷 프레임의 주소를 올바르게 지정하십시오. 이것은 종종 느리고 문제가 있습니다.
운영 체제는 다음을 수행해야 할 것으로 예상하여 작성되지 않았습니다.
짧은 시간에 사용할 수 없는 호스트에 대한 수백만 개의 ARP 요청.
ARP 스캔은 Nmap과 최적화된 알고리즘이 ARP 요청을 담당하게 합니다. 그리고 만약
응답을 받으면 Nmap은 IP 기반 핑 패킷에 대해 걱정할 필요조차 없습니다.
호스트가 작동 중임을 이미 알고 있기 때문입니다. 이것은 ARP 스캔을 훨씬 빠르고 더 많이 만듭니다.
IP 기반 스캔보다 안정적입니다. 따라서 이더넷 호스트를 스캔할 때 기본적으로 수행됩니다.
Nmap이 감지하는 것은 로컬 이더넷 네트워크에 있습니다. ping 유형이 다른 경우에도(예:
as -체육 or -추신)가 지정되면 Nmap은 다음과 같은 대상에 대해 대신 ARP를 사용합니다.
같은 LAN에. ARP 스캔을 절대 원하지 않는 경우 다음을 지정하십시오.
--disable-arp-ping.
IPv6(-6 옵션)의 경우, -홍보 ARP 대신 ICMPv6 Neighbor Discovery를 사용합니다. 이웃
RFC 4861에 정의된 검색은 ARP에 해당하는 IPv6으로 볼 수 있습니다.
--disable-arp-ping (ARP 또는 ND 핑 없음) .
Nmap은 일반적으로 로컬로 연결된 ARP 또는 IPv6 ND(Neighbor Discovery) 검색을 수행합니다.
이더넷 호스트, 다음과 같은 다른 호스트 검색 옵션이 있는 경우에도 -Pn or -체육 사용됩니다. NS
이 암시적 동작을 비활성화하려면 --disable-arp-ping 옵션을 선택합니다.
기본 동작은 일반적으로 더 빠르지만 이 옵션은 다음을 사용하는 네트워크에서 유용합니다.
라우터가 모든 ARP 요청에 추측적으로 응답하는 프록시 ARP
대상은 ARP 스캔에 따라 작동 중인 것으로 나타납니다.
--추적 경로 (호스트에 대한 추적 경로) .
Traceroutes는 스캔 결과의 정보를 사용하여 스캔 후 수행됩니다.
대상에 도달할 가능성이 가장 높은 포트와 프로토콜을 결정합니다. 그것은 모두와 함께 작동합니다
연결 스캔을 제외한 스캔 유형(-성) 및 유휴 스캔(-시). 모든 추적은 Nmap을 사용합니다.
동적 타이밍 모델과 병렬로 수행됩니다.
Traceroute는 TTL(time-to-live)이 낮은 패킷을 전송하여 작동합니다.
스캐너와 스캐너 사이의 중간 홉에서 ICMP Time Exceeded 메시지를 유도합니다.
대상 호스트. 표준 traceroute 구현은 TTL이 1이고 증분으로 시작합니다.
대상 호스트에 도달할 때까지 TTL. Nmap의 traceroute는 high로 시작합니다.
TTL을 입력한 다음 XNUMX에 도달할 때까지 TTL을 줄입니다. 거꾸로 하면 Nmap이 가능합니다.
여러 호스트에 대한 추적 속도를 높이기 위해 영리한 캐싱 알고리즘을 사용합니다. 평균적으로
Nmap은 네트워크 조건에 따라 호스트당 5-10개의 적은 패킷을 보냅니다. 싱글이라면
서브넷이 스캔 중입니다(예: 192.168.0.0/24) Nmap은 두 개의 패킷만 보내면 됩니다.
대부분의 호스트에게.
-n (DNS 확인 없음) .
Nmap에게 다음과 같이 알려줍니다. 못 찾은 활성 IP 주소에서 역 DNS 확인을 수행합니다.
Nmap의 내장 병렬 스텁 리졸버를 사용해도 DNS가 느릴 수 있으므로 이 옵션은
스캔 시간을 줄일 수 있습니다.
-R (모든 대상에 대한 DNS 확인) .
Nmap에게 다음과 같이 알려줍니다. 항상 대상 IP 주소에서 역 DNS 확인을 수행합니다. 보통
역방향 DNS는 응답(온라인) 호스트에 대해서만 수행됩니다.
--시스템 DNS (시스템 DNS 확인자 사용) .
기본적으로 Nmap은 이름 서버에 직접 쿼리를 보내 IP 주소를 확인합니다.
호스트에서 구성한 다음 응답을 수신합니다. 많은 요청(종종 수십)
성능 향상을 위해 병렬로 수행됩니다. 사용하려면 이 옵션을 지정하십시오.
대신 시스템 해석기( 이름 정보 얻기 전화). 이것은 더 느립니다.
Nmap 병렬 리졸버에서 버그를 발견하지 않는 한 거의 유용하지 않습니다.
하면 알아). 시스템 해석기는 IPv6 스캔에 항상 사용됩니다.
--dns-서버 server1[,server2[,...]] (역 DNS 쿼리에 사용할 서버) .
기본적으로 Nmap은 사용자의 DNS 서버(rDNS 확인용)를 결정합니다.
resolv.conf 파일(Unix) 또는 레지스트리(Win32). 또는 다음을 사용할 수 있습니다.
대체 서버를 지정하는 옵션입니다. 이 옵션은 다음을 사용하는 경우 적용되지 않습니다.
--시스템 DNS 또는 IPv6 스캔. 여러 DNS 서버를 사용하는 것이 종종 더 빠릅니다. 특히
대상 IP 공간에 대해 신뢰할 수 있는 서버를 선택하는 경우. 이 옵션은 또한
귀하의 요청이 거의 모든 재귀 DNS에 대해 반송될 수 있으므로 스텔스 개선
인터넷의 서버.
이 옵션은 사설 네트워크를 스캔할 때도 유용합니다. 가끔 몇 개만
이름 서버는 적절한 rDNS 정보를 제공하며, 그 정보가 어디에 있는지조차 모를 수 있습니다.
이다. 네트워크에서 포트 53(버전 감지 포함)을 검색한 다음 시도할 수 있습니다.
Nmap 목록 스캔(-SL) 각 이름 서버를 한 번에 하나씩 지정 --dns-서버
작동하는 것을 찾을 때까지.
PORT 스캐닝 기초
Nmap은 수년에 걸쳐 기능면에서 성장했지만 효율적인 포트로 시작했습니다.
스캐너의 핵심 기능으로 남아 있습니다. 간단한 명령 nmap 목표 1,000번 스캔
호스트의 TCP 포트 목표. 많은 포트 스캐너가 전통적으로 모든 포트를 일괄 처리했지만
열린 상태나 닫힌 상태로 전환할 때 Nmap은 훨씬 더 세분화됩니다. 포트를 XNUMX개로 나눕니다.
상태: 열림, 닫힘, 필터링됨, 필터링되지 않음, 열림|필터링됨 또는 닫힘|필터링됨
이러한 상태는 포트 자체의 고유한 속성이 아니지만 Nmap이 보는 방식을 설명합니다.
그들을. 예를 들어, 대상과 동일한 네트워크의 Nmap 스캔은 포트 135/tcp를 표시할 수 있습니다.
열린 상태로 인터넷에서 동일한 옵션으로 동시에 스캔
해당 포트가 필터링된 것으로 표시될 수 있습니다.
The 여섯 포트 상태 인정 by Nmap은
응용 프로그램이 TCP 연결, UDP 데이터그램 또는 SCTP를 적극적으로 수락하고 있습니다.
이 포트에 대한 연결. 이를 찾는 것이 종종 포트 스캐닝의 주요 목표입니다.
보안을 중시하는 사람들은 열려 있는 각 포트가 공격의 통로라는 것을 알고 있습니다. 공격자와
침투 테스터는 열린 포트를 악용하려는 반면 관리자는 닫거나
합법적인 사용자를 방해하지 않고 방화벽으로 보호하십시오. 열린 포트도
에서 사용할 수 있는 서비스를 보여주기 때문에 비보안 스캔에 흥미롭습니다.
네트워크.
닫힌 포트에 액세스할 수 있지만(Nmap 프로브 패킷을 수신하고 응답)
수신 대기 중인 애플리케이션이 없습니다. 호스트가
IP 주소(호스트 검색 또는 핑 검색)에 대해, 그리고 OS 검색의 일부로.
닫힌 포트에 연결할 수 있기 때문에 일부 열린 포트가 있는 경우 나중에 스캔할 가치가 있습니다.
위로. 관리자는 방화벽으로 이러한 포트를 차단하는 것을 고려할 수 있습니다. 그리고 그들은
다음에 설명하는 필터링된 상태로 나타납니다.
Nmap은 패킷 필터링이 포트가 열려 있는지 여부를 확인할 수 없습니다.
프로브가 포트에 도달하는 것을 방지합니다. 필터링은 전용 방화벽에서 수행될 수 있습니다.
장치, 라우터 규칙 또는 호스트 기반 방화벽 소프트웨어. 이러한 포트는 공격자를 좌절시킵니다.
정보를 거의 제공하지 않기 때문입니다. 때때로 그들은 ICMP 오류로 응답합니다.
유형 3 코드 13과 같은 메시지(도달할 수 없는 대상: 통신
행정적으로 금지됨), 그러나 응답하지 않고 단순히 프로브를 삭제하는 필터
훨씬 더 일반적입니다. 이것은 Nmap이 만약 프로브가
필터링이 아닌 네트워크 혼잡으로 인해 삭제되었습니다. 스캔 속도가 느려집니다.
극적으로.
필터링되지 않은 상태는 포트에 액세스할 수 있지만 Nmap이 결정할 수 없음을 의미합니다.
열려 있든 닫혀 있든. 방화벽 매핑에 사용되는 ACK 스캔만
규칙 집합은 포트를 이 상태로 분류합니다. 다른 스캔으로 필터링되지 않은 포트 스캔
윈도우 스캔, SYN 스캔 또는 FIN 스캔과 같은 유형은 포트가
오픈.
Nmap은 포트가 열려 있는지 여부를 결정할 수 없을 때 포트를 이 상태로 만듭니다.
또는 필터링. 이것은 열린 포트가 응답하지 않는 스캔 유형에서 발생합니다. 부족
응답의 의미는 패킷 필터가 프로브 또는 응답을 삭제했음을 의미할 수도 있습니다.
이끌어낸. 따라서 Nmap은 포트가 열려 있는지 또는 필터링되고 있는지 확실히 알지 못합니다.
UDP, IP 프로토콜, FIN, NULL 및 Xmas 스캔은 이러한 방식으로 포트를 분류합니다.
이 상태는 Nmap이 포트가 닫혀 있는지 여부를 결정할 수 없을 때 사용됩니다.
거르는. IP ID 유휴 검색에만 사용됩니다.
PORT 스캐닝 기법
자동차 수리를 수행하는 초보자로서, 나는 내 차에 맞추려고 몇 시간 동안 고군분투할 수 있습니다.
당면한 작업에 대한 기본적인 도구(망치, 덕트 테이프, 렌치 등). 내가 실패할 때
비참하게 그리고 진짜 정비공에게 나의 jalopy를 견인, 그는 변함없이 거대한 도구에서 주위를 낚는다
작업이 수월해 보이는 완벽한 장치를 꺼낼 때까지 가슴을 조입니다. 의 예술
포트 스캐닝도 비슷합니다. 전문가들은 수십 가지 스캔 기술을 이해하고
주어진 작업에 적절한 것(또는 조합). 미숙한 사용자 및 스크립트
꼬마들,. 반면에 기본 SYN 스캔으로 모든 문제를 해결하십시오. 부터
Nmap은 무료이며 포트 스캐닝 숙달의 유일한 장벽은 지식입니다. 그것은 확실히 이길
스트럿이 필요한지 결정하는 데 큰 기술이 필요할 수 있는 자동차 세계
스프링 압축기를 구입한 후에도 여전히 수천 달러를 지불해야 합니다.
대부분의 스캔 유형은 권한이 있는 사용자만 사용할 수 있습니다.
원시 패킷을 수신합니다. Unix 시스템에서 루트 액세스가 필요합니다. 사용
Nmap이 때때로 작동하지만 Windows의 관리자 계정이 권장됩니다.
WinPcap이 이미 OS에 로드된 경우 해당 플랫폼의 권한이 없는 사용자.
루트 권한을 요구하는 것은 Nmap이 1997년에 출시되었을 때 심각한 제한이었습니다.
사용자는 공유 셸 계정에만 액세스할 수 있었습니다. 지금은 세상이 다릅니다. 컴퓨터는
더 저렴하고 훨씬 더 많은 사람들이 항상 직접 인터넷에 액세스할 수 있으며 데스크톱 Unix 시스템이 있습니다.
(Linux 및 Mac OS X 포함)이 널리 사용됩니다. 이제 Nmap의 Windows 버전을 사용할 수 있습니다.
더 많은 데스크탑에서 실행할 수 있습니다. 이러한 모든 이유로 사용자는
제한된 공유 쉘 계정에서 Nmap을 실행하십시오. 이것은 특권 옵션으로 운이 좋습니다.
Nmap을 훨씬 더 강력하고 유연하게 만듭니다.
Nmap이 정확한 결과를 산출하려고 시도하는 동안, Nmap의 모든 통찰력은
대상 시스템(또는 그 앞에 있는 방화벽)에서 반환된 패킷을 기반으로 합니다. 그런
호스트는 신뢰할 수 없으며 Nmap을 혼동하거나 오도할 의도로 응답을 보낼 수 있습니다. 많이
Nmap 프로브에 응답하지 않는 비RFC 호환 호스트가 더 일반적입니다.
FIN, NULL 및 Xmas 스캔은 특히 이 문제에 취약합니다. 이러한 문제는
특정 스캔 유형에 따라 다르므로 개별 스캔 유형 항목에서 설명합니다.
이 섹션은 Nmap에서 지원하는 XNUMX개 정도의 포트 스캔 기술을 문서화합니다. 단 하나
UDP 스캔(-수) 및 SCTP 스캔 중 하나
유형(-sY, -sZ)는 TCP 스캔 유형 중 하나와 결합될 수 있습니다. 기억 보조 장치로 포트
스캔 유형 옵션은 다음과 같은 형식입니다. -sC어디로 C 스캔 이름의 두드러진 문자이며,
일반적으로 첫 번째. 이에 대한 한 가지 예외는 더 이상 사용되지 않는 FTP 바운스 스캔(-b). 에 의해
기본적으로 Nmap은 SYN 스캔을 수행하지만 사용자가 수행하는 경우 연결 스캔을 대체합니다.
원시 패킷을 보낼 수 있는 적절한 권한이 없습니다(Unix에서 루트 액세스 필요). 의
이 섹션에 나열된 스캔에서 권한이 없는 사용자는 연결 및 FTP 반송만 실행할 수 있습니다.
스캔.
-봄 여름 시즌 (TCP SYN 스캔) .
SYN 스캔은 타당한 이유로 가장 널리 사용되는 기본 스캔 옵션입니다. 그것은 될 수 있습니다
빠른 네트워크에서 초당 수천 개의 포트를 스캔하지 않고 빠르게 수행
제한적인 방화벽에 의해 방해를 받습니다. 또한 상대적으로 눈에 띄지 않고 은밀합니다.
TCP 연결을 완료하지 않기 때문입니다. SYN 스캔은 호환되는 모든 TCP에 대해 작동합니다.
Nmap과 같이 특정 플랫폼의 특성에 의존하기 보다는 스택
FIN/NULL/Xmas, Maimon 및 유휴 스캔이 가능합니다. 또한 명확하고 신뢰할 수 있는
열린 상태, 닫힘 상태 및 필터링된 상태를 구별합니다.
이 기술은 열리지 않기 때문에 종종 반개방 스캔이라고 합니다.
전체 TCP 연결. 실제 파일을 여는 것처럼 SYN 패킷을 보냅니다.
연결하고 응답을 기다립니다. SYN/ACK는 포트가 수신 대기 중임을 나타냅니다.
(열림), RST(재설정)는 청취자가 아님을 나타냅니다. 응답이 없으면
여러 번의 재전송 후에 수신된 포트는 필터링된 것으로 표시됩니다. 항구는
ICMP 도달 불가 오류(유형 3, 코드 0, 1, 2, 3, 9, 10 또는
13)을 받았다. SYN 패킷(ACK 없이
flag)가 응답으로 수신됩니다. 이것은 알려진 매우 드문 TCP 기능 때문일 수 있습니다.
동시 개방 또는 분할 핸드셰이크 연결로(참조
https://nmap.org/misc/split-handshake.pdf).
-성 (TCP 연결 스캔) .
TCP 연결 스캔은 SYN 스캔이 옵션이 아닌 경우 기본 TCP 스캔 유형입니다. 이것은
사용자에게 원시 패킷 권한이 없는 경우. 생으로 쓰는 것보다
대부분의 다른 스캔 유형이 수행하는 패킷과 마찬가지로 Nmap은 기본 운영 체제에 다음을 요청합니다.
다음을 발행하여 대상 머신 및 포트와의 연결을 설정합니다. 잇다 체계
전화. 이것은 웹 브라우저, P2P 클라이언트 및 대부분의
다른 네트워크 지원 응용 프로그램은 연결을 설정하는 데 사용합니다. 의 일부입니다
버클리 소켓 API로 알려진 프로그래밍 인터페이스. 원시 패킷을 읽는 것보다
응답이 없을 때 Nmap은 이 API를 사용하여 각각의 상태 정보를 얻습니다.
연결 시도.
SYN 스캔을 사용할 수 있는 경우 일반적으로 더 나은 선택입니다. Nmap은 제어력이 떨어집니다.
높은 수준 잇다 원시 패킷보다 호출하므로 효율성이 떨어집니다. NS
시스템 호출은 다음을 수행하는 대신 열려 있는 대상 포트에 대한 연결을 완료합니다.
SYN 스캔이 수행하는 반개방 재설정. 시간이 오래 걸리고 더 많은 비용이 필요할 뿐만 아니라
패킷은 동일한 정보를 얻을 수 있지만 대상 시스템은
연결. 괜찮은 IDS는 둘 중 하나를 잡을 수 있지만 대부분의 기계에는 그러한 경보가 없습니다.
체계. 일반적인 Unix 시스템의 많은 서비스는 syslog에 메모를 추가하고,
Nmap이 연결한 다음 연결을 닫을 때 때때로 수수께끼 같은 오류 메시지가 나타납니다.
데이터를 보내지 않고. 이런 일이 발생하면 정말 한심한 서비스가 중단되지만,
드문. 그녀의 로그에서 많은 연결 시도를 본 관리자는
단일 시스템은 그녀가 연결 스캔되었음을 알아야 합니다.
-수 (UDP 스캔) .
인터넷에서 가장 많이 사용되는 서비스는 TCP 프로토콜을 통해 실행되지만 UDP[6] 서비스
널리 보급되어 있습니다. DNS, SNMP 및 DHCP(등록된 포트 53, 161/162 및 67/68)는
가장 흔한 세 가지. UDP 스캐닝은 일반적으로 느리고 더 어렵기 때문에
일부 보안 감사자는 TCP보다 이러한 포트를 무시합니다. 악용될 수 있으므로 이것은 실수입니다.
UDP 서비스는 매우 일반적이며 공격자는 확실히 전체 프로토콜을 무시하지 않습니다.
다행히 Nmap은 UDP 포트의 인벤토리를 작성하는 데 도움이 될 수 있습니다.
UDP 스캔은 다음으로 활성화됩니다. -수 옵션. TCP 스캔 유형과 결합 가능
예를 들어 SYN 스캔(-봄 여름 시즌) 동일한 실행 중에 두 프로토콜을 모두 확인합니다.
UDP 스캔은 모든 대상 포트에 UDP 패킷을 전송하여 작동합니다. 일부 공통 포트의 경우
53 및 161과 같이 응답률을 높이기 위해 프로토콜별 페이로드가 전송되지만
대부분의 포트에서 패킷은 비어 있습니다. --데이터, --데이터 문자열및 --데이터 길이
옵션이 지정됩니다. ICMP 포트 도달 불가 오류(유형 3, 코드 3)가 반환되면,
포트가 닫힙니다. 기타 ICMP 접근 불가 오류(유형 3, 코드 0, 1, 2, 9, 10 또는
13) 포트를 필터링된 것으로 표시합니다. 때때로 서비스는 UDP 패킷으로 응답합니다.
열려 있음을 증명합니다. 재전송 후에도 응답이 없으면 포트는
개방|필터링으로 분류됩니다. 이것은 포트가 열려 있거나 아마도 패킷이 될 수 있음을 의미합니다.
필터가 통신을 차단하고 있습니다. 버전 감지(-sV) 도움이 될 수 있습니다
필터링된 포트와 진정으로 열린 포트를 구별합니다.
UDP 스캐닝의 가장 큰 과제는 빠르게 수행하는 것입니다. 개방 및 필터링된 포트는 거의 없음
응답을 보내면 Nmap이 시간 초과된 다음 바로 재전송을 수행합니다.
프로브 또는 응답이 손실된 경우. 닫힌 포트는 종종 더 큰 문제입니다.
그들은 일반적으로 ICMP 포트에 연결할 수 없음 오류를 다시 보냅니다. 그러나 보낸 RST 패킷과 달리
SYN 또는 연결 스캔에 대한 응답으로 닫힌 TCP 포트에 의해 많은 호스트 속도 제한. ICMP
기본적으로 포트에 연결할 수 없는 메시지. Linux와 Solaris는 특히 엄격합니다.
이것. 예를 들어 Linux 2.4.20 커널은 대상에 도달할 수 없는 메시지를 다음으로 제한합니다.
초당 하나(net/ipv4/icmp.c에서).
Nmap은 속도 제한을 감지하고 네트워크 플러딩을 피하기 위해 그에 따라 속도를 줄입니다.
대상 시스템이 삭제할 쓸모없는 패킷으로. 불행히도 Linux 스타일
초당 하나의 패킷 제한으로 인해 65,536포트 스캔은 18시간 이상 걸립니다. 아이디어
UDP 스캔 속도를 높이려면 더 많은 호스트를 병렬로 스캔하고 빠른
먼저 인기 있는 포트만 스캔하고 방화벽 뒤에서 스캔한 다음
--호스트 타임아웃 느린 호스트를 건너뛸 수 있습니다.
-sY (SCTP INIT 스캔) .
SCTP[7]은 TCP 및 UDP 프로토콜에 대한 비교적 새로운 대안으로, 대부분의
TCP와 UDP의 특징과 멀티호밍,
멀티 스트리밍. 주로 SS7/SIGTRAN 관련 서비스에 사용되고 있지만,
다른 응용 프로그램에도 사용할 수 있습니다. SCTP INIT 스캔은 SCTP입니다.
TCP SYN 스캔과 동일합니다. 수천 개의 포트를 스캔하여 신속하게 수행할 수 있습니다.
제한적인 방화벽에 의해 방해받지 않는 빠른 네트워크에서 초당 SYN 스캔과 마찬가지로
INIT 스캔은 SCTP를 완료하지 않기 때문에 상대적으로 눈에 거슬리지 않고 은밀합니다.
협회. 또한 개방형, 폐쇄형,
및 필터링된 상태.
이 기술은 열리지 않기 때문에 종종 반개방 스캔이라고 합니다.
전체 SCTP 연결. 실제 파일을 여는 것처럼 INIT 청크를 보냅니다.
연결하고 응답을 기다립니다. INIT-ACK 청크는 포트가
ABORT 청크는 청취자가 아님을 나타냅니다. 응답이 없는 경우
여러 번의 재전송 후에 수신된 포트는 필터링된 것으로 표시됩니다. 항구는
ICMP 도달 불가 오류(유형 3, 코드 0, 1, 2, 3, 9, 10 또는
13)을 받았다.
-sN; -sF; -sX (TCP NULL, FIN 및 Xmas 스캔) .
이 세 가지 스캔 유형(더 많은 스캔 유형이 --스캔플래그 설명된 옵션
다음 섹션에서) TCP RFC[8] 구별하다
열린 포트와 닫힌 포트 사이. RFC 65의 793페이지에 "[대상] 포트가
state is CLOSED .... RST를 포함하지 않는 들어오는 세그먼트로 인해 RST가 전송됩니다.
답으로." 그런 다음 다음 페이지에서는 다음 없이 열린 포트로 전송되는 패킷에 대해 설명합니다.
SYN, RST 또는 ACK 비트가 설정되어 다음과 같이 표시됩니다.
세그먼트를 삭제하고 반환합니다."
이 RFC 텍스트와 호환되는 시스템을 스캔할 때 SYN을 포함하지 않는 모든 패킷,
RST 또는 ACK 비트는 포트가 닫혀 있고 응답이 없는 경우 RST를 반환합니다.
포트가 열려 있으면 전혀. 이 세 가지 비트 중 어느 것도 포함되지 않는 한,
다른 세 가지(FIN, PSH 및 URG)의 조합은 괜찮습니다. Nmap은 이것을 다음과 같이 이용합니다.
세 가지 스캔 유형:
널 스캔(-sN)
비트를 설정하지 않음(TCP 플래그 헤더는 0)
FIN 스캔(-sF)
TCP FIN 비트만 설정합니다.
크리스마스 스캔(-sX)
FIN, PSH 및 URG 플래그를 설정하여 패킷을 크리스마스 트리처럼 밝게 합니다.
이 세 가지 스캔 유형은 TCP 플래그 세트를 제외하고 동작이 정확히 동일합니다.
프로브 패킷에서. RST 패킷이 수신되면 포트가 닫힌 것으로 간주되지만
응답은 열려 있음을 의미합니다. ICMP에 연결할 수 없는 경우 포트가 필터링된 것으로 표시됩니다.
오류(유형 3, 코드 0, 1, 2, 3, 9, 10 또는 13)가 수신되었습니다.
이러한 스캔 유형의 주요 이점은 특정
비 상태 저장 방화벽 및 패킷 필터링 라우터. 또 다른 장점은 이러한
스캔 유형은 SYN 스캔보다 조금 더 은밀합니다. 이것에 의존하지 마십시오
하지만 대부분의 최신 IDS 제품은 이를 감지하도록 구성할 수 있습니다. 가장 큰 단점은
모든 시스템이 RFC 793을 따르는 것은 아닙니다. 많은 시스템이 RST를 보냅니다.
포트가 열려 있는지 여부에 관계없이 프로브에 응답합니다. 이로 인해 모든
닫힌 레이블이 지정된 포트 중. 이를 수행하는 주요 운영 체제는 Microsoft
Windows, 많은 Cisco 장치, BSDI 및 IBM OS/400. 이 스캔은 대부분의 경우에 작동합니다.
하지만 유닉스 기반 시스템. 이러한 스캔의 또 다른 단점은
열려 있는 포트를 필터링된 특정 포트와 구별하여 응답을 남깁니다.
열림|필터링됨.
-SA (TCP ACK 스캔) .
이 스캔은 결정하지 않는다는 점에서 지금까지 논의된 다른 스캔과 다릅니다.
열린(또는 열린|필터링된) 포트. 방화벽 규칙 집합을 매핑하는 데 사용됩니다.
상태 저장 여부와 어떤 포트가 필터링되는지 확인합니다.
ACK 스캔 프로브 패킷에는 ACK 플래그만 설정되어 있습니다(사용하지 않는 한 --스캔플래그). 언제
필터링되지 않은 시스템을 스캔하면 열린 포트와 닫힌 포트가 모두 RST 패킷을 반환합니다. 엔맵
그런 다음 필터링되지 않은 것으로 레이블을 지정합니다. 즉, ACK 패킷으로 연결할 수 있지만
열려 있는지 닫혀 있는지 여부는 미정입니다. 응답하지 않거나 전송하지 않는 포트
특정 ICMP 오류 메시지(유형 3, 코드 0, 1, 2, 3, 9, 10 또는 13)는 레이블이 지정됩니다.
거르는.
- SW (TCP 윈도우 스캔) .
윈도우 스캔은 구현을 이용하는 것을 제외하고는 ACK 스캔과 정확히 동일합니다.
개방형 포트와 폐쇄형 포트를 구별하기 위한 특정 시스템의 세부 사항
RST가 반환되면 항상 필터링되지 않은 상태로 인쇄합니다. TCP를 검사하여 이를 수행합니다.
반환된 RST 패킷의 창 필드입니다. 일부 시스템에서는 열린 포트가 양수를 사용합니다.
(RST 패킷의 경우에도) 창 크기는 닫혀 있지만 창은 XNUMX입니다. 그래서 대신
RST를 수신할 때 항상 포트를 필터링되지 않은 것으로 나열하고 윈도우 스캔은 다음을 나열합니다.
해당 재설정의 TCP 창 값이 양수 또는 XNUMX인 경우 포트가 열리거나 닫힙니다.
각각.
이 스캔은 시스템에 있는 소수의 시스템에 대한 구현 세부 정보에 의존합니다.
인터넷, 그래서 당신은 항상 그것을 신뢰할 수 없습니다. 지원하지 않는 시스템은 일반적으로
닫힌 모든 포트를 반환합니다. 물론 기계가 실제로 열려 있지 않을 수도 있습니다.
포트. 대부분의 검색된 포트는 닫혀 있지만 몇 개의 공통 포트 번호(예: 22, 25,
53) 필터링되면 시스템이 가장 취약할 수 있습니다. 때때로 시스템은
정반대의 행동을 보이기도 합니다. 스캔 결과 1,000개의 열린 포트와 XNUMX개의
폐쇄되거나 필터링된 포트라면 이 세 개는 진정으로 열린 포트일 수 있습니다.
-SM (TCP 마이몬 스캔) .
Maimon 스캔의 이름은 발견자인 Uriel Maimon의 이름을 따서 명명되었습니다.
Phrack Magazine Issue #49(1996년 XNUMX월)의 기술 .. 이것을 포함하는 Nmap
기술은 나중에 두 가지 문제로 출시되었습니다. 이 기술은 NULL과 정확히 동일합니다.
프로브가 FIN/ACK인 것을 제외하고 FIN 및 Xmas 스캔. 에 따르면 RFC 793[8] (TCP),
포트가 열려 있는지 여부와 같은 프로브에 대한 응답으로 RST 패킷이 생성되어야 합니다.
또는 폐쇄. 그러나 Uriel은 많은 BSD 파생 시스템이 단순히 패킷을 삭제한다는 것을 알아차렸습니다.
포트가 열려 있는 경우.
--스캔플래그 (사용자 지정 TCP 스캔) .
진정한 고급 Nmap 사용자는 제공되는 미리 준비된 스캔 유형에 자신을 제한할 필요가 없습니다.
The --스캔플래그 옵션을 사용하면 임의의 TCP를 지정하여 고유한 스캔을 설계할 수 있습니다.
flags.. 침입 탐지 시스템을 피하면서 창의력을 발휘할 수 있습니다.
특정 규칙을 추가하는 Nmap 매뉴얼 페이지를 통해 공급업체가 페이지를 넘겼습니다!
The --스캔플래그 인수는 9(PSH 및 FIN)와 같은 숫자 플래그 값일 수 있지만
기호 이름을 사용하는 것이 더 쉽습니다. URG, ACK, PSH,
RST, SYN 및 FIN. 예를 들어, --스캔플래그 우르가크PSHRSTSYNFIN 모든 것을 설정하지만
스캔에는 그다지 유용하지 않습니다. 지정된 순서는 관련이 없습니다.
원하는 플래그를 지정하는 것 외에도 TCP 스캔 유형(예:
-SA or -sF). 그 기본 유형은 Nmap에 응답을 해석하는 방법을 알려줍니다. 예를 들어, SYN
스캔은 필터링된 포트를 나타내기 위해 응답이 없는 것으로 간주하는 반면 FIN 스캔은
열림|여과됨과 동일합니다. Nmap은 기본 스캔 유형과 동일한 방식으로 작동합니다.
단, 대신 지정한 TCP 플래그를 사용합니다. 베이스를 지정하지 않으면
유형, SYN 스캔이 사용됩니다.
-sZ (SCTP 쿠키 에코 스캔) .
SCTP COOKIE ECHO 스캔은 고급 SCTP 스캔입니다. 사실을 이용한다.
SCTP 구현은 COOKIE ECHO 청크를 포함하는 패킷을 자동으로 삭제해야 합니다.
열려 있는 포트에서는 ABORT를 보내지만 포트가 닫혀 있으면 ABORT를 보냅니다. 이 스캔의 장점
유형은 INIT 스캔보다 포트 스캔이 명확하지 않다는 것입니다. 또한 다음이 있을 수 있습니다.
비 상태 저장 방화벽 규칙 집합은 INIT 청크를 차단하지만 COOKIE ECHO 청크는 차단하지 않습니다. 하지마
이것이 포트 스캔을 보이지 않게 만들 것이라고 생각하도록 속이십시오. 좋은 IDS는
SCTP COOKIE ECHO 스캔도 감지할 수 있습니다. 단점은 SCTP COOKIE ECHO가 스캔한다는 것입니다.
열린 포트와 필터링된 포트를 구분할 수 없으므로 상태가 그대로 유지됩니다.
열린|두 경우 모두에서 필터링되었습니다.
-시 좀비 주인[:프로브포트] (유휴 스캔) .
이 고급 스캔 방법은 대상의 진정한 블라인드 TCP 포트 스캔을 허용합니다.
(즉, 실제 IP 주소에서 대상으로 패킷이 전송되지 않음). 대신
고유한 부채널 공격은 예측 가능한 IP 단편화 ID 시퀀스를 악용합니다.
대상의 열린 포트에 대한 정보를 수집하기 위해 좀비 호스트에서 생성합니다.
IDS 시스템은 스캔을 지정한 좀비 머신에서 가져온 것으로 표시합니다(
특정 기준을 충족해야 합니다.) 이 매혹적인 스캔 유형은 너무 복잡하여
이 참조 가이드에 자세히 설명되어 있으므로 비공식 문서를 작성하여 게시했습니다.
전체 세부 정보 https://nmap.org/book/idlescan.html.
이 스캔 유형은 (맹목적인 특성으로 인해) 매우 은밀하게
머신 간의 IP 기반 신뢰 관계 매핑을 허용합니다. 항구 목록
열린 포트를 보여줍니다 에 전에, 관점 of 전에, 좀비 숙주. 그래서 당신은 스캔을 시도 할 수 있습니다
신뢰할 수 있다고 생각되는 다양한 좀비를 사용하여 대상을 지정하십시오. (라우터/패킷을 통해
필터 규칙).
조사하려는 경우 좀비 호스트에 콜론 다음에 포트 번호를 추가할 수 있습니다.
IP ID 변경을 위한 좀비의 특정 포트. 그렇지 않으면 Nmap은 포트를 사용합니다.
기본적으로 TCP 핑(80)에 사용합니다.
-그래서 (IP 프로토콜 스캔) .
IP 프로토콜 스캔을 통해 어떤 IP 프로토콜(TCP, ICMP, IGMP 등)을 확인할 수 있습니다.
대상 머신에서 지원됩니다. 이것은 기술적으로 포트 스캔이 아닙니다.
TCP 또는 UDP 포트 번호가 아닌 IP 프로토콜 번호를 통해 그래도 여전히 사용
-p 스캔한 프로토콜 번호를 선택하는 옵션, 정상 범위 내에서 결과 보고
포트 테이블 형식이며 실제 포트와 동일한 기본 스캔 엔진을 사용합니다.
스캔 방법. 따라서 여기에 속하는 포트 스캔에 충분히 가깝습니다.
프로토콜 스캔은 그 자체로 유용할 뿐만 아니라
오픈 소스 소프트웨어. 기본적인 아이디어는 꽤 간단하지만,
추가하거나 그러한 기능에 대한 요청을 받지 않았습니다. 그러다 여름에
2000, 게르하르트 라이거. 아이디어를 구상하고 이를 구현하는 훌륭한 패치를 작성했습니다.
공지 메일링 리스트로 보냈습니다. (당시 nmap-hackers라고 함).. I
Nmap 트리에 해당 패치를 통합하고 다음 날 새 버전을 출시했습니다.
사용자가 디자인 및
자신의 개선에 기여하십시오!
프로토콜 스캔은 UDP 스캔과 유사한 방식으로 작동합니다. 반복하는 대신
UDP 패킷의 포트 번호 필드, IP 패킷 헤더를 보내고 반복
XNUMX비트 IP 프로토콜 필드. 헤더는 일반적으로 비어 있으며 데이터가 포함되어 있지 않습니다.
청구된 프로토콜에 대한 적절한 헤더도 포함됩니다. 예외는 TCP, UDP, ICMP,
SCTP 및 IGMP. 일부 시스템부터 적절한 프로토콜 헤더가 포함되어 있습니다.
Nmap은 이미 그것들을 생성하는 기능을 가지고 있기 때문에 그렇지 않으면 그것들을 보내지 않을 것입니다.
ICMP 포트에 연결할 수 없는 메시지를 감시하는 대신 프로토콜 스캔이 켜져 있습니다.
ICMP에 대한 경계 프로토콜 도달할 수 없는 메시지. Nmap이 어떤 응답을 받으면
대상 호스트의 프로토콜, Nmap은 해당 프로토콜을 열린 것으로 표시합니다. ICMP 프로토콜
도달할 수 없는 오류(유형 3, 코드 2)로 인해 프로토콜이 닫힌 것으로 표시됩니다.
포트에 연결할 수 없음(유형 3, 코드 3)은 프로토콜을 열린 상태로 표시합니다. 기타 ICMP에 연결할 수 없음
오류(유형 3, 코드 0, 1, 9, 10 또는 13)로 인해 프로토콜이 필터링된 것으로 표시됩니다.
(ICMP가 동시에 열려 있음을 증명하지만). 응답이 수신되지 않는 경우
재전송 후 프로토콜은 open|filtered로 표시됩니다.
-b FTP 계전기 주인 (FTP 바운스 스캔) .
FTP 프로토콜의 흥미로운 기능(RFC 959[9]) 소위 프록시에 대한 지원입니다.
FTP 연결. 이를 통해 사용자는 하나의 FTP 서버에 연결한 다음 해당 파일에
타사 서버로 전송됩니다. 이러한 기능은 여러 수준에서 남용될 가능성이 높으므로
대부분의 서버에서 지원을 중단했습니다. 이 기능이 허용하는 남용 중 하나는
FTP 서버가 다른 호스트를 포트 스캔하도록 합니다. FTP 서버에 전송하도록 요청하기만 하면
대상 호스트의 각 관심 포트에 차례로 파일을 전송합니다. 오류 메시지는
포트가 열려 있는지 여부를 설명합니다. 이것은 방화벽을 우회하는 좋은 방법입니다
조직 FTP 서버는 종종 더 많은 액세스 권한이 있는 곳에 배치되기 때문에
이전 인터넷 호스트가 아닌 다른 내부 호스트. Nmap은 FTP 바운스 스캔을 지원합니다.
와 더불어 -b 옵션. 형식의 인수를 취합니다. 사용자 이름:암호@섬기는 사람:포트.
서버 취약한 FTP 서버의 이름 또는 IP 주소입니다. 일반 URL과 마찬가지로
생략 가능 사용자 이름:암호, 이 경우 익명 로그인 자격 증명(사용자: 익명
비밀번호:-wwwuser@)를 사용합니다. 포트 번호(및 선행 콜론)는 다음과 같이 생략될 수 있습니다.
음, 이 경우 기본 FTP 포트(21)는 섬기는 사람 사용.
이 취약점은 Nmap이 출시된 1997년에 널리 퍼졌지만 대부분
결정된. 취약한 서버는 여전히 주변에 있으므로 다른 모든 것이 실패할 때 시도해 볼 가치가 있습니다.
방화벽을 우회하는 것이 목표인 경우 대상 네트워크에서 포트 21(또는
버전 감지로 모든 포트를 스캔하는 경우 모든 FTP 서비스) 및 ftp-bounce를 사용합니다.
NSE 스크립트. Nmap은 호스트가 취약한지 여부를 알려줍니다. 당신이 그냥
당신의 흔적을 덮으려 할 때, 당신은 제한할 필요가 없습니다.
자신을 대상 네트워크의 호스트에 연결합니다. 임의의 인터넷을 스캔하기 전에
취약한 FTP 서버의 주소는 시스템 관리자가 감사하지 않을 수 있습니다.
이러한 방식으로 서버를 악용합니다.
PORT 사양 및 주사 주문
이전에 논의된 모든 스캔 방법 외에도 Nmap은 다음을 위한 옵션을 제공합니다.
스캔할 포트와 스캔 순서가 무작위인지 순차인지 지정합니다.
기본적으로 Nmap은 각 프로토콜에 대해 가장 일반적인 1,000개 포트를 스캔합니다.
-p 포트 범위 (지정된 포트만 스캔) .
이 옵션은 스캔할 포트를 지정하고 기본값을 무시합니다.
하이픈으로 구분된 범위(예: 1-1023)와 마찬가지로 개별 포트 번호도 괜찮습니다.
범위의 시작 및/또는 끝 값을 생략할 수 있으므로 Nmap이 1을 사용하고
각각 65535. 그래서 당신은 지정할 수 있습니다 -피- 1부터 65535까지의 포트를 스캔합니다.
스캐닝 포트 XNUMX. 명시적으로 지정하면 허용됩니다. IP 프로토콜 스캔용
(-그래서), 이 옵션은 스캔하려는 프로토콜 번호(0–255)를 지정합니다.
프로토콜 조합(예: TCP 및 UDP)을 스캔할 때 다음을 지정할 수 있습니다.
특정 프로토콜은 포트 번호 앞에 T: TCP, U: UDP, S:
SCTP 또는 P: IP 프로토콜의 경우. 한정자는 다른 한정자를 지정할 때까지 지속됩니다.
예를 들어, 인수 -p U:53,111,137,T:21-25,80,139,8080 UDP 포트 53을 스캔하고,
111, 137 및 나열된 TCP 포트. UDP와 TCP를 모두 스캔하려면
지정해야 -수 및 하나 이상의 TCP 스캔 유형(예: -봄 여름 시즌, -sF및 -성). 그렇지 않은 경우
프로토콜 한정자가 주어지면 포트 번호가 모든 프로토콜 목록에 추가됩니다. 항구
포트가 참조하는 항목에 따라 이름으로 지정할 수도 있습니다.
nmap-services. 와일드카드 * 및 ?를 사용할 수도 있습니다. 이름과 함께. 예를 들어,
FTP 및 이름이 "http"로 시작하는 모든 포트를 스캔하려면 다음을 사용하십시오. -p FTP, http*. 조심하세요
쉘 확장에 대해 설명하고 인수를 인용하십시오. -p 확실하지 않은 경우.
포트 범위는 대괄호로 둘러싸여 해당 내부의 포트를 나타낼 수 있습니다.
nmap-services에 나타나는 범위. 예를 들어 다음은 모든 포트를 검색합니다.
1024 이하의 nmap-services: -p [-1024]. 쉘 확장에 주의하십시오.
주장을 인용하다 -p 확실하지 않은 경우.
--제외 포트 포트 범위 (지정된 포트를 검사에서 제외) .
이 옵션은 Nmap이 스캔에서 제외할 포트를 지정합니다. NS 포트
범위 와 유사하게 지정됩니다. -p. IP 프로토콜 스캐닝의 경우(-그래서), 이 옵션
제외할 프로토콜 번호를 지정합니다(0–255).
포트를 제외하도록 요청하면 모든 유형의 스캔에서 제외됩니다(예:
어떤 상황에서도 스캔되지 않습니다.) 여기에는 발견도 포함됩니다.
단계.
-F (빠른(제한된 포트) 스캔) .
기본값보다 적은 수의 포트를 스캔하도록 지정합니다. 일반적으로 Nmap은
스캔된 각 프로토콜에 대해 가장 일반적인 1,000개 포트. 와 함께 -F, 이것은 100으로 줄어듭니다.
Nmap은 주파수 정보가 포함된 nmap-services 파일이 필요합니다.
포트가 가장 일반적입니다. 포트 주파수 정보를 사용할 수 없는 경우
사용자 지정 nmap-services 파일을 사용하기 때문에 Nmap은 모든 명명된 포트와
포트 1-1024. 그 경우, -F 서비스에 이름이 지정된 포트만 검색하는 것을 의미합니다.
파일.
-r (포트를 무작위로 지정하지 마십시오) .
기본적으로 Nmap은 스캔된 포트 순서를 무작위로 지정합니다(특정 일반적으로
액세스 가능한 포트는 효율성을 위해 시작 부분 근처로 이동됩니다). 이것
무작위화는 일반적으로 바람직하지만 다음을 지정할 수 있습니다. -r 순차(정렬
가장 낮은 것에서 가장 높은 것으로) 대신 포트 스캐닝.
--포트 비율 비율<십진수 번호 사이에 0 그리고 1>
주어진 것보다 더 큰 비율로 nmap-services 파일의 모든 포트를 스캔합니다. 비율
0.0에서 1.1 사이여야 합니다.
--상단 포트 n
스캔 n 모든 포트를 제외한 후 nmap-services 파일에서 발견된 가장 높은 비율의 포트
에 의해 지정된 --제외 포트. n 1 이상이어야 합니다.
서비스 및 버전 감지
원격 시스템에서 Nmap을 가리키면 포트 25/tcp, 80/tcp 및 53/udp가
열려있습니다. nmap-services 사용. 약 2,200개의 잘 알려진 서비스 데이터베이스, 엔맵
해당 포트는 아마도 메일 서버(SMTP), 웹 서버에 해당한다고 보고할 것입니다.
(HTTP) 및 이름 서버 (DNS) 각각. 이 조회는 일반적으로 정확합니다.
TCP 포트 25에서 수신 대기하는 대부분의 데몬은 실제로 메일 서버입니다. 그러나 당신은
이것에 보안을 걸면 안됩니다! 사람들은 이상한 포트에서 서비스를 실행할 수 있고 실행합니다.
Nmap이 맞고 위의 가상 서버가 SMTP, HTTP 및 DNS를 실행하더라도
서버, 그것은 많은 정보가 아닙니다. 취약점 평가를 수행할 때(또는 심지어
단순 네트워크 인벤토리) 회사 또는 클라이언트의
메일 및 DNS 서버와 버전이 실행 중입니다. 정확한 버전 번호가 있으면 도움이 됩니다.
서버가 취약한 익스플로잇을 결정하는 데 극적으로 도움이 됩니다. 버전 감지
이 정보를 얻는 데 도움이 됩니다.
다른 스캔 방법 중 하나를 사용하여 TCP 및/또는 UDP 포트를 검색한 후 버전
감지는 해당 포트에 질문하여 실제로 실행 중인 항목에 대해 더 많이 확인합니다. 그만큼
nmap-service-probe. 데이터베이스에는 다양한 서비스 및 일치를 쿼리하기 위한 프로브가 포함되어 있습니다.
응답을 인식하고 구문 분석하는 표현식. Nmap은 서비스 프로토콜을 결정하려고 합니다.
(예: FTP, SSH, Telnet, HTTP), 응용 프로그램 이름(예: ISC BIND, Apache httpd, Solaris
telnetd), 버전 번호, 호스트 이름, 장치 유형(예: 프린터, 라우터), OS 제품군
(예: 윈도우, 리눅스). 가능한 경우 Nmap은 공통 플랫폼 열거도 가져옵니다.
(CPE). 이 정보의 표현. 때로는 다음과 같은 기타 세부 사항
X 서버가 연결에 열려 있고 SSH 프로토콜 버전 또는 KaZaA 사용자 이름이
사용 가능. 물론 대부분의 서비스에서 이 모든 정보를 제공하지는 않습니다. 엔맵이 있었다면
OpenSSL 지원으로 컴파일되면 SSL 서버에 연결하여 서비스를 추론합니다.
해당 암호화 계층 뒤에서 수신 대기 중입니다. 일부 UDP 포트는 개방|필터링된 상태로 남아 있습니다.
UDP 포트 스캔 후 상태는 포트가 열려 있는지 또는 필터링되었는지 여부를 결정할 수 없습니다.
버전 감지는 이러한 포트에서 응답을 이끌어내려고 시도합니다.
열린 포트), 성공하면 상태를 열린 상태로 변경합니다. 개방|필터링된 TCP 포트는
같은 방식으로 처리됩니다. Nmap -A 옵션은 다른 것들 사이에서 버전 감지를 활성화합니다
것들. 버전 감지의 작동, 사용법 및 사용자 정의를 문서화한 문서
에서 확인할 수있다 https://nmap.org/book/vscan.html.
RPC 서비스가 발견되면 Nmap RPC 그라인더. 자동으로 사용됩니다
RPC 프로그램 및 버전 번호를 확인합니다. 다음과 같이 감지된 모든 TCP/UDP 포트를 사용합니다.
RPC 및 SunRPC 프로그램 NULL 명령으로 플러딩 여부를 결정하기 위해
그것들은 RPC 포트이며, 그렇다면 어떤 프로그램과 버전 번호를 제공합니다. 따라서 당신은 할 수 있습니다
와 동일한 정보를 효과적으로 얻을 수 있습니다. rpcinfo -p 대상의 portmapper가 뒤에 있더라도
방화벽(또는 TCP 래퍼로 보호됨). 미끼는 현재 RPC 스캔에서 작동하지 않습니다.
Nmap이 서비스로부터 응답을 받았지만 데이터베이스와 일치시킬 수 없을 때
확실히 알고 있는 경우 제출할 특수 지문과 URL을 인쇄합니다.
포트에서 실행 중인 것. 몇 분 정도 시간을 내어 제출하십시오.
당신의 발견은 모두에게 도움이 될 수 있습니다. 이러한 제출 덕분에 Nmap에는 약 6,500개의 패턴이 있습니다.
SMTP, FTP, HTTP 등과 같은 650개 이상의 프로토콜과 일치합니다.
버전 감지는 다음 옵션으로 활성화 및 제어됩니다.
-sV (버전 감지) .
위에서 설명한 대로 버전 감지를 활성화합니다. 또는 다음을 사용할 수 있습니다. -A, 그
무엇보다도 버전 감지를 활성화합니다.
-sR. 의 별칭입니다. -sV. 2011년 XNUMX월 이전에는 RPC 그라인더를 활성화하는 데 사용되었습니다.
버전 감지와 별개로 제공되지만 이제는 이러한 옵션이 항상 결합됩니다.
--모든 포트 (버전 감지에서 포트를 제외하지 마십시오) .
기본적으로 Nmap 버전 감지는 일부 프린터가 단순히 TCP 포트 9100을 건너뛰기 때문에
수십 페이지의 HTTP GET 요청으로 이어지는 해당 포트로 전송된 모든 것을 인쇄합니다.
바이너리 SSL 세션 요청 등. 이 동작은 수정하거나
nmap-service-probes에서 Exclude 지시문을 제거하거나 다음을 지정할 수 있습니다. --모든 포트
Exclude 지시문에 관계없이 모든 포트를 스캔합니다.
--버전 강도 강렬 (버전 스캔 강도 설정) .
버전 스캔을 수행할 때(-sV), Nmap은 각각 다음과 같은 일련의 프로브를 보냅니다.
XNUMX에서 XNUMX 사이의 희귀도 값을 할당합니다. 낮은 번호의 프로브가 효과적입니다.
다양한 공통 서비스에 대해 높은 번호의 서비스는 거의 없습니다.
유용한. 강도 수준은 적용해야 하는 프로브를 지정합니다. 높을수록
번호가 많을수록 서비스가 올바르게 식별될 가능성이 높아집니다. 그러나 높은
강도 스캔은 더 오래 걸립니다. 강도는 0에서 9 사이여야 합니다. 기본값은
7.. nmap-service-probesports를 통해 대상 포트에 프로브를 등록한 경우
지시에 따라 해당 프로브는 강도 수준에 관계없이 시도됩니다. 이렇게 하면
DNS 프로브는 항상 열려 있는 포트 53에 대해 시도되며 SSL 프로브는
443 등에 대해 수행되었습니다.
--버전-빛 (조명 모드 활성화) .
이것은 에 대한 편의 별칭입니다. --버전 강도 2. 이 조명 모드는 버전을 만듭니다.
스캔 속도는 훨씬 빠르지만 서비스를 식별할 가능성은 약간 낮습니다.
--버전-모두 (모든 단일 프로브를 시도하십시오) .
에 대한 별칭 --버전 강도 9, 모든 단일 프로브가 시도되는지 확인
각 포트에 대해.
--버전 추적 (추적 버전 스캔 활동) .
이것은 Nmap이 버전 스캐닝이 무엇인지에 대한 광범위한 디버깅 정보를 출력하도록 합니다.
행위. 그것은 당신이 얻는 것의 하위 집합입니다 --패킷 추적.
OS 감지
Nmap의 가장 잘 알려진 기능 중 하나는 TCP/IP 스택을 사용한 원격 OS 감지입니다.
지문. Nmap은 일련의 TCP 및 UDP 패킷을 원격 호스트에 보내고 검사합니다.
응답의 거의 모든 비트. TCP ISN 등 수십번의 테스트를 거쳐
샘플링, TCP 옵션 지원 및 순서 지정, IP ID 샘플링 및 초기 창 크기
확인, Nmap은 결과를 nmap-os-db와 비교합니다. 2,600개 이상의 알려진 OS 데이터베이스
지문을 검색하고 일치하는 경우 OS 세부 정보를 인쇄합니다. 각 지문에는 다음이 포함됩니다.
OS에 대한 자유 형식의 텍스트 설명 및 공급업체를 제공하는 분류
이름(예: Sun), 기본 OS(예: Solaris), OS 생성(예: 10) 및 장치 유형
(범용, 라우터, 스위치, 게임 콘솔 등). 대부분의 지문에는 공통
플랫폼 열거(CPE). cpe:/o:linux:linux_kernel:2.6과 같은 표현입니다.
Nmap이 머신의 OS를 추측할 수 없고 조건이 좋은 경우(예:
열린 포트와 하나의 닫힌 포트가 발견됨), Nmap은 제출에 사용할 수 있는 URL을 제공합니다.
컴퓨터에서 실행 중인 OS를 (확실히) 알고 있는 경우 지문. 이렇게 함으로써 당신은
Nmap에 알려진 운영 체제 풀에 기여하므로 더 많은
모두에게 정확합니다.
OS 감지는 수집된 정보를 사용하는 몇 가지 다른 테스트를 가능하게 합니다.
어쨌든 그 과정에서. 그 중 하나가 TCP 시퀀스 예측 가능성 분류입니다.
이것은 위조된 TCP 연결을 설정하는 것이 얼마나 어려운지를 대략적으로 측정합니다.
원격 호스트. 소스-IP 기반 신뢰 관계(rlogin,
방화벽 필터 등) 또는 공격 소스를 숨기기 위한 것입니다. 이러한 종류의 스푸핑은
더 이상 수행되는 경우는 거의 없지만 많은 기계가 여전히 이에 취약합니다. 실제
난이도 번호는 통계적 샘플링을 기반으로 하며 변동될 수 있습니다. 그것은 일반적으로
"가치 있는 도전" 또는 "하찮은 농담"과 같은 영어 분류를 사용하는 것이 좋습니다.
이것은 verbose(-v) 모드. 상세 모드가 활성화된 경우
와 함께 -O, IP ID 시퀀스 생성도 보고됩니다. 대부분의 기계는
"증분" 클래스, 이는 IP 헤더의 ID 필드를 증가시키는 것을 의미합니다.
그들이 보내는 각 패킷. 이로 인해 여러 고급 정보에 취약합니다.
수집 및 스푸핑 공격.
OS 감지에 의해 활성화된 또 다른 추가 정보는 대상의 가동 시간에 대한 추측입니다.
이것은 TCP 타임스탬프 옵션을 사용합니다(RFC 1323[10]) 기계가 언제 마지막인지 추측
재부팅되었습니다. 타임스탬프 카운터가 초기화되지 않아 추측이 정확하지 않을 수 있습니다.
XNUMX으로 설정하거나 카운터가 넘치고 둘러싸기 때문에 장황하게만 인쇄됩니다.
방법.
OS 감지의 작동, 사용법 및 사용자 정의를 문서화한 문서는 다음에서 사용할 수 있습니다.
https://nmap.org/book/osdetect.html.
OS 감지는 다음 옵션으로 활성화 및 제어됩니다.
-O (OS 감지 활성화) .
위에서 설명한 대로 OS 감지를 활성화합니다. 또는 다음을 사용할 수 있습니다. -A OS를 활성화하기 위해
다른 것들과 함께 탐지.
--osscan 제한 (OS 감지를 유망한 대상으로 제한) .
OS 감지는 최소한 하나의 열린 TCP 포트와 하나의 닫힌 TCP 포트가 있는 경우 훨씬 더 효과적입니다.
설립하다. 이 옵션을 설정하면 Nmap은 다음을 수행하는 호스트에 대해 OS 감지도 시도하지 않습니다.
이 기준을 충족하지 않습니다. 이것은 특히 다음에서 상당한 시간을 절약할 수 있습니다. -Pn 검색
많은 호스트에 대해. OS 감지가 다음으로 요청될 때만 중요합니다. -O or -A.
--osscan 추측; --흐린 (OS 감지 결과 추측) .
Nmap이 완벽한 OS 일치를 감지할 수 없을 때 때때로 거의 일치하는 항목을 제공합니다.
가능성으로. Nmap이 기본적으로 이를 수행하려면 일치가 매우 가까워야 합니다.
이러한 (동등한) 옵션 중 하나는 Nmap이 보다 적극적으로 추측하도록 합니다. 엔맵은
불완전한 일치가 인쇄되면 여전히 알려주고 신뢰 수준을 표시합니다.
(백분율) 각 추측.
--max-os-try (대상에 대한 최대 OS 감지 시도 횟수를 설정합니다.) .
Nmap이 대상에 대해 OS 감지를 수행하고 완벽한 일치를 찾지 못하면
일반적으로 시도를 반복합니다. 기본적으로 Nmap은 조건이 다음과 같은 경우 XNUMX번 시도합니다.
OS 지문 제출에 유리하고 조건이 좋지 않을 때 두 번.
더 낮은 지정 --max-os-try 값(예: 1)은 Nmap 속도를 높입니다.
잠재적으로 OS를 식별할 수 있는 재시도에서 아웃. 또는 높은 값
조건이 좋을 때 더 많은 재시도를 허용하도록 설정할 수 있습니다. 이것은 드물게
제출 및 통합을 위한 더 나은 지문 생성을 제외하고 완료
엔맵 OS 데이터베이스.
nmap 스크립팅 엔진 (NSE)
NSE(Nmap Scripting Engine)는 Nmap의 가장 강력하고 유연한 기능 중 하나입니다. 그것
사용자가 간단한 스크립트를 작성(및 공유)할 수 있습니다( 루아 프로그래밍 언어[11].
) 다양한 네트워킹 작업을 자동화합니다. 이러한 스크립트는 병렬로 실행됩니다.
Nmap에서 기대하는 속도와 효율성을 제공합니다. 사용자는 성장에 의존할 수 있으며
Nmap과 함께 배포되는 다양한 스크립트 세트를 사용하거나 사용자 정의 요구 사항을 충족하기 위해 자체적으로 작성합니다.
시스템을 만들 때 염두에 두었던 작업에는 네트워크 검색 등이 포함됩니다.
정교한 버전 감지, 취약점 감지. NSE는 다음 용도로도 사용할 수 있습니다.
취약점 악용.
이러한 다양한 용도를 반영하고 실행할 스크립트 선택을 단순화하기 위해 각
스크립트에는 하나 이상의 범주와 연결하는 필드가 있습니다. 현재 정의
카테고리는 인증, 브로드캐스트, 기본값입니다. 발견, 도스, 악용, 외부, fuzzer,
침입, 맬웨어, 안전, 버전 및 취약. 이것들은 모두 에 설명되어 있습니다.
https://nmap.org/book/nse-usage.html#nse-categories.
스크립트는 샌드박스에서 실행되지 않으므로 실수로 또는 악의적으로 컴퓨터를 손상시킬 수 있습니다.
시스템 또는 개인 정보를 침해합니다. 신뢰하지 않는 한 제XNUMX자로부터 스크립트를 실행하지 마십시오.
저자 또는 신중하게 스크립트를 직접 감사했습니다.
Nmap 스크립팅 엔진은 다음에서 자세히 설명합니다. https://nmap.org/book/nse.html 이고
다음 옵션으로 제어:
-sC .
기본 스크립트 세트를 사용하여 스크립트 스캔을 수행합니다. 그것은 동등하다
--스크립트=기본값. 이 범주의 일부 스크립트는 방해가 되는 것으로 간주되며
허가 없이 대상 네트워크에 대해 실행해서는 안 됩니다.
--스크립트 파일 이름|범주|예배 규칙서|표현[,...] .
쉼표로 구분된 파일 이름, 스크립트 범주 및
디렉토리. 목록의 각 요소는 다음을 설명하는 부울 표현식일 수도 있습니다.
더 복잡한 스크립트 세트. 각 요소는 먼저 표현식으로 해석된 다음
범주로, 마지막으로 파일 또는 디렉토리 이름으로.
고급 사용자만을 위한 두 가지 특별한 기능이 있습니다. 하나는 스크립트 이름에 접두사를 붙이는 것입니다.
일반적으로 실행되지 않는 경우에도 실행되도록 하는 +가 있는 표현식(예:
대상 포트에서 관련 서비스가 감지되지 않음). 다른 하나는 그 주장이
all은 Nmap의 데이터베이스에 있는 모든 스크립트를 지정하는 데 사용할 수 있습니다. 이에 주의
NSE에는 익스플로잇, 무차별 대입 인증과 같은 위험한 스크립트가 포함되어 있기 때문에
크래커 및 서비스 거부 공격.
파일 및 디렉토리 이름은 상대적이거나 절대적일 수 있습니다. 절대 이름이 사용됩니다.
곧장. 다음 각 위치의 스크립트에서 상대 경로를 찾습니다.
찾을 때까지: --datadir
$NMAPDIR.
~/.nmap (Windows에서는 검색되지 않음).
홈\AppData\Roaming\nmap(Windows에만 해당).
nmap 실행 파일이 포함된 디렉토리
nmap 실행 파일이 포함된 디렉토리, 뒤에 ../share/nmap
NMAPDATADIR.
현재 디렉토리.
디렉토리 이름이 주어지면 Nmap은 디렉토리에서 이름이 끝나는 모든 파일을 로드합니다.
.nse와 함께. 다른 모든 파일은 무시되고 디렉토리는 재귀적으로 검색되지 않습니다. 언제
파일 이름이 주어지면 .nse 확장자를 가질 필요가 없습니다. 추가됩니다
필요한 경우 자동으로. Nmap 스크립트는 Nmap의 scripts 하위 디렉토리에 저장됩니다.
기본적으로 데이터 디렉토리( https://nmap.org/book/data-files.html). 효율성을 위해,
스크립트는 scripts/script.db에 저장된 데이터베이스에서 인덱싱됩니다. 카테고리를 나열하는
또는 각 스크립트가 속한 범주. 다음으로 script.db에서 스크립트를 참조할 때
이름에 셸 스타일 '*' 와일드카드를 사용할 수 있습니다.
nmap --스크립트 "http-*"
http-auth 및 http-open-proxy와 같이 이름이 http-로 시작하는 모든 스크립트를 로드합니다.
인수 --스크립트 쉘에서 와일드카드를 보호하기 위해 따옴표로 묶어야 했습니다.
더 복잡한 스크립트 선택은 and, or, not 연산자를 사용하여 수행할 수 있습니다.
부울 표현식을 작성하십시오. 운영자는 동일 상위[12] Lua에서와 같이: not is
가장 높고 그 다음이 and, 그 다음 or입니다. 괄호를 사용하여 우선 순위를 변경할 수 있습니다.
표현식에는 공백 문자가 포함되어 있으므로 인용해야 합니다.
nmap --스크립트 "아니다 방해"
침입 범주에 있는 스크립트를 제외한 모든 스크립트를 로드합니다.
nmap --스크립트 "기본 or 안전한"
이것은 기능적으로 다음과 같습니다. nmap --스크립트 "기본, 안전". 모든 스크립트를 로드합니다.
기본 범주나 안전 범주 또는 둘 다에 속합니다.
nmap --스크립트 "기본 그리고 안전한"
에 있는 스크립트를 로드합니다. 두 기본 및 안전 범주.
nmap --스크립트 "(기본 or 가장 안전한 따뜻함 or 방해) 그리고 지원 http-*"
다음을 제외하고 기본, 안전 또는 침입 범주의 스크립트를 로드합니다.
이름은 http-로 시작합니다.
--스크립트-인수 n1=v1,n2={n3=v3},n4={v4,v5} .
NSE 스크립트에 인수를 제공할 수 있습니다. 인수는 쉼표로 구분된 목록입니다.
이름=값 쌍. 이름과 값은 공백을 포함하지 않는 문자열이거나
문자 '{', '}', '=' 또는 ','. 이러한 문자 중 하나를 문자열에 포함하려면
문자열을 작은따옴표나 큰따옴표로 묶습니다. 따옴표로 묶인 문자열 내에서 '\'는
인용문. 백슬래시는 이 특별한 경우에만 인용 부호를 이스케이프하는 데 사용됩니다. 모두에서
다른 경우에는 백슬래시가 문자 그대로 해석됩니다. 값은 테이블로 묶일 수도 있습니다.
Lua에서와 마찬가지로 {}에서. 테이블에는 단순한 문자열 값 또는 더 많은 이름-값이 포함될 수 있습니다.
중첩 테이블을 포함한 쌍. 많은 스크립트가 스크립트로 인수를 한정합니다.
xmpp-info.server_name에서와 같이 이름. 영향을 미치기 위해 정식 버전을 사용할 수 있습니다.
지정된 스크립트만 사용하거나 정규화되지 않은 버전(server_name
이 경우) 해당 인수 이름을 사용하는 모든 스크립트에 영향을 줍니다. 스크립트가 먼저 확인합니다
완전한 인수 이름(해당 문서에 지정된 이름)에 대해
규정되지 않은 인수 이름을 허용합니다. 스크립트 인수의 복잡한 예는 다음과 같습니다.
--스크립트-인수
'user=foo,pass=",{}=bar",whois={whodb=nofollow+ripe},xmpp-info.server_name=localhost'.
온라인 NSE 문서 포털 https://nmap.org/nsedoc/ 인수를 나열합니다
각 스크립트가 허용합니다.
--스크립트-인수-파일 파일 이름 .
파일에서 NSE 스크립트로 인수를 로드할 수 있습니다. 명령줄의 모든 인수
파일의 항목을 대체합니다. 파일은 절대 경로일 수도 있고 상대 경로일 수도 있습니다.
Nmap의 일반적인 검색 경로(NMAPDIR 등) 인수는 쉼표로 구분하거나
줄 바꿈으로 구분되지만 그렇지 않으면 다음과 동일한 규칙을 따릅니다. --스크립트-인수~없이
셸에서 구문 분석되지 않기 때문에 특별한 인용 및 이스케이프가 필요합니다.
--스크립트 도움말 파일 이름|범주|예배 규칙서|표현|모두[,...] .
스크립트에 대한 도움말을 표시합니다. 주어진 사양과 일치하는 각 스크립트에 대해 Nmap
스크립트 이름, 범주 및 설명을 인쇄합니다. 사양은
에 의해 수락된 것과 동일 --스크립트; 예를 들어
ftp-anon 스크립트를 실행하면 nmap --스크립트 도움말 FTP-anon. 얻는 것 외에도
개별 스크립트에 대한 도움말, 실행할 스크립트의 미리보기로 사용할 수 있습니다.
사양, 예를 들어 nmap --스크립트 도움말 디폴트 값.
--스크립트 추적 .
이 옵션은 다음을 수행합니다. --패킷 추적 하나의 ISO 레이어만 높으면 됩니다. 이 옵션의 경우
스크립트에 의해 수행되는 모든 수신 및 발신 통신이 인쇄되도록 지정됩니다.
표시되는 정보에는 통신 프로토콜, 소스, 대상이 포함됩니다.
그리고 전송된 데이터. 전송된 전체 데이터의 5% 이상을 인쇄할 수 없는 경우,
추적 출력은 XNUMX진 덤프 형식입니다. 지정 --패킷 추적 수
스크립트 추적도 가능합니다.
--스크립트-업데이트db .
이 옵션은 다음에서 사용하는 scripts/script.db에 있는 스크립트 데이터베이스를 업데이트합니다.
Nmap을 사용하여 사용 가능한 기본 스크립트 및 범주를 결정합니다. 단지 필요하다
기본값에서 NSE 스크립트를 추가하거나 제거한 경우 데이터베이스를 업데이트하려면
scripts 디렉토리 또는 스크립트의 범주를 변경한 경우. 이 옵션은
일반적으로 자체적으로 사용: nmap --스크립트-업데이트db.
타이밍 및 성능
제 Nmap 개발 우선 순위 중 가장 높은 것은 항상 성능이었습니다. 기본 스캔
(nmap 호스트 이름) 내 로컬 네트워크에 있는 호스트의 XNUMX/XNUMX초가 걸립니다. 그것은 간신히
깜박이기에 충분한 시간이지만 수백 또는 수천 개의 호스트를 스캔할 때 추가됩니다.
또한 UDP 스캔 및 버전 감지와 같은 특정 스캔 옵션이 증가할 수 있습니다.
스캔 시간이 상당히 깁니다. 따라서 특정 방화벽 구성, 특히 응답
속도 제한. Nmap은 병렬 처리와 많은 고급 알고리즘을 활용하여
이러한 스캔을 통해 사용자는 Nmap이 실행되는 방식을 궁극적으로 제어할 수 있습니다. 전문가 사용자는 신중하게
Nmap 명령을 작성하여 자신을 만나는 동안 관심 있는 정보만 얻습니다.
시간 제약.
스캔 시간을 개선하는 기술에는 중요하지 않은 테스트를 생략하고 다음으로 업그레이드하는 것이 포함됩니다.
최신 버전의 Nmap(성능 향상이 자주 이루어짐). 최적화
타이밍 매개변수도 상당한 차이를 만들 수 있습니다. 이러한 옵션은 아래에 나열되어 있습니다.
일부 옵션은 시간 매개변수를 허용합니다. 이것은 기본적으로 초 단위로 지정되지만
'ms', ''', 'm' 또는 'h'를 값에 추가하여 밀리초, 초, 분,
또는 시간. 그래서 --호스트 타임아웃 인수 900000ms, 900, 900s 및 15m은 모두 동일하게 수행됩니다.
맡은 일.
--최소 호스트 그룹 숫자호스트; --최대 호스트 그룹 숫자호스트 (병렬 스캔 그룹 크기 조정) .
Nmap에는 여러 호스트를 병렬로 포트 스캔 또는 버전 스캔하는 기능이 있습니다. 엔맵
대상 IP 공간을 그룹으로 나눈 다음 한 그룹을 스캔하여 이를 수행합니다.
시각. 일반적으로 그룹이 클수록 더 효율적입니다. 단점은 호스트 결과
전체 그룹이 완료될 때까지 제공할 수 없습니다. 따라서 Nmap이 다음으로 시작했다면
그룹 크기가 50이면 사용자는 보고서를 수신하지 않습니다(업데이트 제외
처음 50개 호스트가 완료될 때까지 자세한 정보 표시 모드로 제공됩니다.
기본적으로 Nmap은 이 충돌에 대해 타협 접근 방식을 취합니다. 로 시작합니다.
그룹 크기가 XNUMX로 작아 첫 번째 결과가 빨리 나온 다음 증가합니다.
그룹 크기는 최대 1024입니다. 정확한 기본 숫자는 주어진 옵션에 따라 다릅니다.
효율성을 위해 Nmap은 UDP 또는 포트 수가 적은 TCP 스캔에 더 큰 그룹 크기를 사용합니다.
최대 그룹 크기가 지정된 경우 --최대 호스트 그룹, Nmap은 다음을 초과하지 않습니다.
그 크기. 최소 크기 지정 --최소 호스트 그룹 Nmap은 그룹을 유지하려고 시도합니다.
그 수준 이상의 크기. Nmap은 다음과 같은 경우 지정한 것보다 더 작은 그룹을 사용해야 할 수 있습니다.
지정된 인터페이스에 지정된 대상 호스트가 충분하지 않아 지정된 작업을 수행할 수 없습니다.
최저한의. 둘 다 특정 범위 내에서 그룹 크기를 유지하도록 설정할 수 있습니다.
거의 원하지 않습니다.
이러한 옵션은 스캔의 호스트 검색 단계에서는 영향을 미치지 않습니다. 이것
일반 핑 스캔(-sn). 호스트 검색은 항상 대규모 호스트 그룹에서 작동합니다.
속도와 정확성을 향상시킵니다.
이러한 옵션의 주요 용도는 큰 최소 그룹 크기를 지정하여
전체 스캔이 더 빠르게 실행됩니다. 일반적인 선택은 256으로 클래스 C 크기의 네트워크를 스캔하는 것입니다.
덩어리. 포트가 많은 스캔의 경우 이 수를 초과하는 것은 별로 도움이 되지 않을 것입니다.
몇 개의 포트 번호만 스캔하는 경우 2048 이상의 호스트 그룹 크기가 도움이 될 수 있습니다.
--최소 병렬도 숫자 프로브; --최대 병렬도 숫자 프로브 (프로브 병렬화 조정) .
이 옵션은 호스트에 대해 미해결 상태일 수 있는 총 프로브 수를 제어합니다.
그룹. 포트 스캐닝 및 호스트 검색에 사용됩니다. 기본적으로 Nmap은 다음을 계산합니다.
네트워크 성능을 기반으로 끊임없이 변화하는 이상적인 병렬 처리. 패킷이
드롭되면 Nmap이 느려지고 미해결 프로브가 줄어듭니다. 이상적인 프로브 번호
네트워크 자체가 가치가 있음이 입증되면 천천히 증가합니다. 이러한 옵션은 최소 또는
해당 변수의 최대 경계. 기본적으로 이상적인 병렬 처리는 다음과 같은 경우 XNUMX로 떨어질 수 있습니다.
네트워크는 신뢰할 수 없으며 완벽한 조건에서 수백 개로 증가합니다.
가장 일반적인 사용법은 다음을 설정하는 것입니다. --최소 병렬도 속도를 내기 위해 XNUMX보다 높은 숫자로
성능이 좋지 않은 호스트 또는 네트워크의 최대 스캔. 이것은 가지고 노는 위험한 옵션입니다.
너무 높게 설정하면 정확도에 영향을 줄 수 있습니다. 이것을 설정하면 Nmap의 능력도 감소합니다.
네트워크 조건에 따라 동적으로 병렬 처리를 제어합니다. 10의 값은 다음과 같을 수 있습니다.
합리적이지만 이 값은 최후의 수단으로만 조정합니다.
The --최대 병렬도 옵션은 Nmap이 더 이상 전송하지 못하도록 XNUMX로 설정되는 경우가 있습니다.
호스트에 한 번에 하나 이상의 프로브. 그만큼 --스캔 지연 나중에 논의되는 옵션은
이 작업을 수행하는 또 다른 방법입니다.
--분-rtt-시간 초과 시간, --최대-rtt-시간 초과 시간, --초기-rtt-시간 초과 시간 (프로브 조정
시간 초과) .
Nmap은 다음을 기다리는 시간을 결정하기 위해 실행 시간 초과 값을 유지합니다.
프로브를 포기하거나 재전송하기 전에 프로브 응답. 이것은 다음을 기반으로 계산됩니다.
이전 프로브의 응답 시간.
네트워크 대기 시간이 중요하고 가변적이면 이 시간 초과는
몇 초로 늘어납니다. 또한 보수적(높은) 수준에서 시작하여 유지될 수 있습니다.
Nmap이 응답하지 않는 호스트를 스캔할 때 잠시 동안 그렇게 합니다.
더 낮은 지정 --최대-rtt-시간 초과 그리고 --초기-rtt-시간 초과 기본값보다
스캔 시간을 크게 줄입니다. 이것은 특히 pingless(-Pn) 스캔 및
심하게 필터링된 네트워크에 대한 것입니다. 그렇다고 너무 공격적이지는 마세요. 스캔 수
많은 프로브가 시간 초과되는 낮은 값을 지정하면 시간이 더 오래 걸립니다.
응답이 전송되는 동안 재전송합니다.
모든 호스트가 로컬 네트워크에 있는 경우 100밀리초(--최대-rtt-시간 초과 100ms)이다
합리적인 공격적 가치. 라우팅이 관련된 경우 네트워크의 호스트에 ping
먼저 ICMP ping 유틸리티를 사용하거나 Nping과 같은 맞춤형 패킷 크래프터를 사용합니다. 저것
방화벽을 통과할 가능성이 더 높습니다. 최대 왕복 시간을 확인하십시오.
열 패킷 정도. 다음을 위해 두 배로 늘리고 싶을 수도 있습니다. --초기-rtt-시간 초과 그리고
XNUMX배 또는 XNUMX배 --최대-rtt-시간 초과. 나는 일반적으로 최대값을 설정하지 않습니다
핑 시간에 관계없이 RTT가 100ms 미만입니다. 1000ms를 초과하지도 않습니다.
--분-rtt-시간 초과 네트워크가 다음과 같을 때 유용할 수 있는 거의 사용되지 않는 옵션입니다.
Nmap의 기본값조차도 너무 공격적이어서 신뢰할 수 없습니다. Nmap은
네트워크가 신뢰할 수 있는 것처럼 보일 때 최소 시간으로 시간 제한이 필요합니다.
비정상적이며 nmap-dev 메일링 리스트에 버그로 보고해야 합니다.
--최대 재시도 숫자 (포트 스캔 프로브 재전송의 최대 수 지정) .
Nmap이 포트 스캔 프로브에 대한 응답을 수신하지 않으면 포트가
거르는. 또는 프로브 또는 응답이 네트워크에서 단순히 손실되었을 수 있습니다. 그것은 또한
대상 호스트가 일시적으로 차단하는 속도 제한이 활성화되어 있을 수 있습니다.
응답. 따라서 Nmap은 초기 프로브를 재전송하여 다시 시도합니다. Nmap이 감지하면
네트워크 안정성이 좋지 않으면 포트를 포기하기 전에 여러 번 더 시도할 수 있습니다. 하는 동안
이는 정확도에 도움이 되며 스캔 시간도 길어집니다. 성능이 중요할 때
허용되는 재전송 횟수를 제한하여 스캔 속도를 높일 수 있습니다. 당신은 할 수 있습니다
지정하다 --최대 재시도 0 재전송을 방지하기 위해
가끔 항구를 놓치고 비공식 조사와 같은 상황에 권장됩니다.
호스트가 허용됩니다.
기본값( -T 템플릿)은 XNUMX번의 재전송을 허용하는 것입니다. 네트워크가 보인다면
신뢰할 수 있고 대상 호스트는 속도 제한이 없습니다. Nmap은 일반적으로 하나만 수행합니다.
재전송. 따라서 대부분의 대상 스캔은 드롭해도 영향을 받지 않습니다. --최대 재시도 에
XNUMX과 같은 낮은 값. 이러한 값은 느린 스캔(속도
제한됨) 호스트. Nmap이 일찍 포트를 포기하면 일반적으로 일부 정보를 잃습니다.
허용하는 것이 더 나을 수 있지만 --호스트 타임아웃 만료 및 모든 손실
대상에 대한 정보.
--호스트 타임아웃 시간 (느린 대상 호스트는 포기) .
일부 호스트는 단순히 긴 스캔할 시간. 이것은 성능이 좋지 않거나
신뢰할 수 없는 네트워킹 하드웨어 또는 소프트웨어, 패킷 속도 제한 또는
방화벽. 검색된 호스트 중 가장 느린 몇 퍼센트가
스캔 시간. 때로는 손실을 줄이고 처음에 해당 호스트를 건너뛰는 것이 가장 좋습니다.
지정 --호스트 타임아웃 당신이 기꺼이 기다릴 최대 시간. 을위한
예를 들어, Nmap이 30분 이상을 낭비하지 않도록 하려면 XNUMXm를 지정하십시오.
단일 호스트. Nmap은 그 동안 동시에 다른 호스트를 스캔할 수 있습니다.
XNUMX분이므로 완전한 손실은 아닙니다. 시간 초과된 호스트는 건너뜁니다. 포트 없음
해당 호스트에 대한 테이블, OS 감지 또는 버전 감지 결과가 인쇄됩니다.
--스캔 지연 시간; --최대-스캔-지연 시간 (프로브 간의 지연 조정) .
이 옵션은 Nmap이 각 프로브 사이에 최소한 주어진 시간만큼 기다리게 합니다.
주어진 호스트로 보냅니다. 이것은 속도 제한의 경우에 특히 유용합니다.
Solaris 시스템(많은 다른 시스템 중에서)은 일반적으로 UDP 스캔 프로브 패킷에 응답합니다.
초당 하나의 ICMP 메시지만 사용합니다. Nmap이 보낸 것보다 더 많은 것은
낭비. ㅏ --스캔 지연 1초는 Nmap을 느린 속도로 유지합니다. Nmap이 감지하려고 합니다.
속도를 제한하고 그에 따라 스캔 지연을 조정하지만 지정하는 것은 나쁘지 않습니다.
어떤 비율이 가장 효과적인지 이미 알고 있다면 명시적으로.
Nmap이 속도 제한에 대처하기 위해 스캔 지연을 상향 조정하면 스캔이 느려집니다.
극적으로 아래로. 그만큼 --최대-스캔-지연 옵션은 Nmap에서 가장 큰 지연을 지정합니다.
허용합니다. 낮은 --최대-스캔-지연 Nmap의 속도를 높일 수 있지만 위험합니다. 이것을 설정
값이 너무 낮으면 패킷 재전송이 낭비되고 포트가 누락될 수 있습니다.
대상이 엄격한 비율 제한을 구현할 때.
또 다른 용도 --스캔 지연 임계값 기반 침입 탐지를 회피하고
예방 시스템(IDS/IPS)..
--최소 속도 번호; --최대 속도 번호 (스캔 속도를 직접 제어) .
Nmap의 동적 타이밍은 적절한 속도를 찾는 데 효과적입니다.
주사. 그러나 때로는 적절한 스캔 속도를 알고 있을 수 있습니다.
그렇지 않으면 스캔이 특정 시간까지 완료되도록 보장해야 할 수도 있습니다.
아니면 Nmap이 너무 빨리 스캔하지 않도록 해야 합니다. 그만큼 --최소 속도 그리고 --최대 속도
옵션은 이러한 상황을 위해 설계되었습니다.
때 --최소 속도 옵션이 주어지면 Nmap은 패킷을 최대한 빨리 전송하기 위해 최선을 다할 것입니다.
또는 주어진 속도보다 빠릅니다. 인수는 다음을 나타내는 양의 실수입니다.
초당 패킷 단위의 패킷 속도입니다. 예를 들어, --최소 속도 300 의미
Nmap은 전송 속도를 초당 300패킷 이상으로 유지하려고 시도합니다. 지정
최소 속도는 조건이 보장되는 경우 Nmap이 더 빠르게 진행되는 것을 방지하지 않습니다.
마찬가지로, --최대 속도 스캔의 전송 속도를 지정된 최대값으로 제한합니다. 사용 --최대 속도
100예를 들어, 고속 네트워크에서 초당 100개의 패킷으로 전송을 제한합니다. 사용
--최대 속도 0.1 XNUMX초마다 한 패킷의 느린 스캔을 위해. 사용 --최소 속도 그리고
--최대 속도 특정 범위 내에서 비율을 유지하기 위해 함께.
이 두 옵션은 전역적이며 개별 호스트가 아닌 전체 스캔에 영향을 줍니다. 그들
포트 스캔 및 호스트 검색 스캔에만 영향을 미칩니다. OS 감지와 같은 기타 기능
자신의 타이밍을 구현합니다.
실제 스캔 속도가 요청한 것보다 떨어질 수 있는 두 가지 조건이 있습니다.
최저한의. 첫 번째는 최소값이 Nmap이 할 수 있는 가장 빠른 속도보다 빠른 경우입니다.
하드웨어에 따라 다릅니다. 이 경우 Nmap은 단순히 다음과 같이 패킷을 보냅니다.
가능한 한 빨리, 그러나 그러한 높은 비율로 인해 손실이 발생할 수 있음을 인지하십시오.
정확성. 두 번째 경우는 Nmap이 보낼 것이 없는 경우입니다. 예를 들어
마지막 프로브가 전송되고 Nmap이 시간 초과 또는
에 응답합니다. 스캔이 끝나면 스캔 속도가 떨어지는 것이 정상입니다.
호스트 그룹 사이. 전송 속도는 만회하기 위해 일시적으로 최대값을 초과할 수 있습니다.
예측할 수 없는 지연이 발생하지만 평균적으로 속도는 최대값 이하로 유지됩니다.
최소 비율을 지정할 때는 주의해야 합니다. 네트워크보다 빠른 스캔
정확도가 떨어질 수 있습니다. 경우에 따라 더 빠른 속도를 사용하면
스캔 테이크 이상 느린 속도보다. Nmap이 적응형이기 때문입니다.
재전송 알고리즘은 과도한
정확도를 높이기 위해 스캔 속도를 높이고 재전송 횟수를 늘립니다.
따라서 패킷이 더 높은 속도로 전송되더라도 전체적으로 더 많은 패킷이 전송됩니다. 캡
재전송 횟수 --최대 재시도 설정해야 하는 경우 옵션
총 스캔 시간의 상한.
--defeat-최초 속도 제한 .
많은 호스트가 오랫동안 속도 제한을 사용해 왔습니다. ICMP 오류 메시지의 수를 줄이기 위해
(port-unreachable 오류와 같은) 그들은 보냅니다. 일부 시스템은 이제 유사한 비율을 적용합니다.
생성하는 RST(재설정) 패킷으로 제한됩니다. 이것은 Nmap을 극적으로 느리게 할 수 있습니다.
그 비율 제한을 반영하기 위해 타이밍을 조정하기 때문입니다. Nmap에 무시하도록 지시할 수 있습니다.
이러한 속도 제한(SYN 스캔과 같은 포트 스캔의 경우 하지 무반응을 치료하다
포트를 열린 상태로) 지정하여 --defeat-최초 속도 제한.
이 옵션을 사용하면 일부 포트가 응답하지 않는 것처럼 보이기 때문에 정확도가 떨어질 수 있습니다.
Nmap이 속도 제한 RST 응답을 충분히 오래 기다리지 않았기 때문입니다. SYN 스캔으로,
응답하지 않으면 포트가 닫히지 않고 필터링된 레이블이 지정됩니다.
RST 패킷이 수신될 때 표시되는 상태입니다. 이 옵션은 다음과 같은 경우에만 유용합니다.
열린 포트에 대해, 그리고 닫힌 포트와 필터링된 포트를 구별하는 것은 가치가 없습니다.
추가 시간.
--nsock-엔진 epoll|kqueue|poll|선택 .
지정된 nsock IO 다중화 엔진의 사용을 시행합니다. 오직 고르다(2) 기반 폴백
엔진은 시스템에서 사용 가능하도록 보장됩니다. 엔진은 이름을 따서 명명됩니다.
활용합니다. 현재 구현된 엔진은 epoll,
kqueue, poll 및 select가 있지만 모든 플랫폼에 있는 것은 아닙니다. 사용 nmap -V 에
지원되는 엔진을 확인하십시오.
-T 편집증|비열한|정중한|정상|공격적|미친 (타이밍 템플릿 설정) .
이전 섹션에서 논의한 세밀한 타이밍 제어는 강력하지만
효과적이고 어떤 사람들은 그것들을 혼란스럽게 여깁니다. 또한, 적절한 선택
값은 최적화하려는 스캔보다 시간이 더 오래 걸릴 수 있습니다. 그래서 엔맵
XNUMX개의 타이밍 템플릿을 사용하여 더 간단한 접근 방식을 제공합니다. 다음을 사용하여 지정할 수 있습니다. -T
옵션 및 해당 번호(0–5) 또는 이름. 템플릿 이름은 편집증 (0),
몰래하는 (1), 공손한 (2), 표준 (3), 적극적인 (4), 그리고 미친 (5). 처음 두 개는
IDS 회피용. 폴라이트 모드는 더 적은 대역폭과 대상을 사용하기 위해 스캔 속도를 늦춥니다.
기계 자원. 일반 모드가 기본값이므로 -T3 아무것도하지 않습니다. 공격적 모드
당신이 합리적으로 빠르고
안정적인 네트워크. 드디어 미친 모드. 당신이 비정상적으로 켜져 있다고 가정합니다
빠른 네트워크 또는 속도를 위해 어느 정도 정확도를 희생할 의향이 있습니다.
이러한 템플릿을 사용하면 사용자가 원하는 정도를 지정할 수 있지만,
정확한 타이밍 값을 선택하도록 Nmap을 남겨둡니다. 템플릿은 또한 약간의 속도를 만듭니다.
세분화된 제어 옵션이 현재 존재하지 않는 조정. 을위한
예, -T4. TCP 포트에 대해 동적 스캔 지연이 10ms를 초과하는 것을 금지하고
-T5 해당 값을 5ms로 제한합니다. 템플릿은 세분화된 템플릿과 함께 사용할 수 있습니다.
제어하고 지정하는 세분화된 제어가
해당 매개변수에 대한 타이밍 템플릿 기본값입니다. 나는 사용하는 것이 좋습니다 -T4 스캔할 때
합리적으로 현대적이고 안정적인 네트워크. 추가하는 경우에도 해당 옵션을 유지합니다.
세분화된 제어를 통해 추가적인 사소한 최적화의 이점을 얻을 수 있습니다.
가능합니다.
적절한 광대역 또는 이더넷 연결을 사용하는 경우 항상 권장합니다.
사용 -T4. 어떤 사람들은 사랑 -T5 내 취향에는 너무 공격적이지만. 사람들
때때로 지정 -T2 호스트 충돌 가능성이 낮다고 생각하거나
그들은 일반적으로 자신을 예의 바르게 생각합니다. 그들은 종종 어떻게
느리게 -T 공손한. 정말로. 그들의 스캔은 기본 스캔보다 XNUMX배 더 오래 걸릴 수 있습니다.
기본 타이밍 옵션(-T3)
그래서 나는 일반적으로 조심스러운 스캐너에게 권장합니다. 버전 감지 생략은
이러한 문제를 줄이는 데 타이밍 값을 사용하는 것보다 훨씬 더 효과적입니다.
DaVinci에는 -T0. 과 -T1. IDS 경고를 피하는 데 유용할 수 있습니다.
수천 대의 컴퓨터나 포트를 스캔하는 데 엄청나게 오랜 시간이 걸립니다. 그렇게 오랫동안
스캔을 수행하는 경우 데이터에 의존하기보다 필요한 정확한 타이밍 값을 설정하는 것을 선호할 수 있습니다.
술취한 -T0 그리고 -T1 values.
의 주요 효과 T0 한 번에 하나의 포트만 스캔되도록 스캔을 직렬화하고 있습니다.
각 프로브를 보내는 사이에 XNUMX분을 기다립니다. T1 그리고 T2 비슷하지만 그들은
프로브 사이에 각각 15초와 0.4초만 기다리십시오. T3. 엔맵의
병렬화를 포함하는 기본 동작. -T4 에 해당하는
--최대-rtt-시간 초과 1250ms --분-rtt-시간 초과 100ms --초기-rtt-시간 초과 500ms
--최대 재시도 6 최대 TCP 스캔 지연을 10밀리초로 설정합니다. T5 ~한다.
동등한 --최대-rtt-시간 초과 300ms --분-rtt-시간 초과 50ms --초기-rtt-시간 초과
250ms --최대 재시도 2 --호스트 타임아웃 15m 최대 TCP 스캔 지연 설정
5ms까지.
방화벽/IDS 회피 및 스푸핑
많은 인터넷 개척자들은 범용 IP 주소 공간을 가진 글로벌 개방형 네트워크를 구상했습니다.
두 노드 간의 가상 연결을 허용합니다. 이렇게 하면 호스트가 true로 행동할 수 있습니다.
피어, 서로 정보를 제공하고 검색합니다. 사람들은 모든 항목에 액세스할 수 있습니다.
직장에서 가정 시스템, 실내 온도 조절기 설정 변경 또는 문 잠금 해제
이른 손님을 위해. 보편적 연결에 대한 이러한 비전은 주소 공간에 의해 억눌려 왔습니다.
부족 및 보안 문제. 1990년대 초반에 조직에서 배포하기 시작했습니다.
연결을 줄이기 위한 명시적인 목적을 위한 방화벽. 거대한 네트워크가 차단되었습니다.
응용 프로그램 프록시, 네트워크 주소 변환 및
패킷 필터. 정보의 무제한 흐름은 엄격한 규제로 바뀌었습니다.
승인된 커뮤니케이션 채널 및 이를 통해 전달되는 콘텐츠.
방화벽과 같은 네트워크 장애물은 네트워크 매핑을 매우 어렵게 만들 수 있습니다.
숨막히는 캐주얼 정찰이 종종
장치를 구현합니다. 그럼에도 불구하고 Nmap은 이러한 기능을 이해하는 데 도움이 되는 많은 기능을 제공합니다.
복잡한 네트워크와 필터가 의도한 대로 작동하는지 확인합니다. 심지어 지원한다
제대로 구현되지 않은 방어를 우회하기 위한 메커니즘. 가장 좋은 방법 중 하나는
네트워크 보안 상태를 이해하는 것은 이를 무력화하는 것입니다. 에 자신을 배치
공격자의 사고 방식을 파악하고 이 섹션의 기술을 네트워크에 배포합니다.
FTP 바운스 스캔, 유휴 스캔, 조각화 공격을 시작하거나 하나를 통해 터널링을 시도합니다.
자신의 프록시.
기업은 네트워크 활동을 제한하는 것 외에도 트래픽을 점점 더 모니터링하고 있습니다.
침입 탐지 시스템(IDS)과 함께. 모든 주요 IDS는 다음과 같이 설계된 규칙과 함께 제공됩니다.
스캔은 때때로 공격의 전조이기 때문에 Nmap 스캔을 감지합니다. 이들 중 많은
제품은 최근에 침입으로 변했습니다. 예방 시스템(IPS). 적극적으로
악성으로 간주되는 트래픽을 차단합니다. 불행히도 네트워크 관리자와 IDS 공급업체에게는
패킷 데이터를 분석하여 나쁜 의도를 확실하게 탐지하는 것은 어려운 문제입니다. 공격자
인내, 기술 및 특정 Nmap 옵션의 도움으로 일반적으로 IDS를 통과할 수 있습니다.
감지되지 않음. 한편, 관리자는 다수의 가양성(false positive)에 대처해야 합니다.
무고한 활동이 잘못 진단되고 경고되거나 차단되는 결과.
때때로 사람들은 Nmap이 방화벽 규칙을 회피하기 위한 기능을 제공해서는 안 된다고 제안합니다.
IDS를 몰래 지나치거나. 그들은 이러한 기능이 다음과 같이 오용될 가능성이 있다고 주장합니다.
보안을 강화하기 위해 관리자가 사용하는 공격자. 이 논리의 문제는
이러한 방법은 다른 도구를 찾거나
기능을 Nmap에 패치합니다. 한편, 관리자는 그것을 많이 찾을 것입니다
그들의 일을 하기가 더 어렵습니다. 패치가 적용된 최신 FTP 서버만 배포하는 것이 훨씬 더 강력합니다.
FTP 바운스를 구현하는 도구의 배포를 방지하는 것보다 방어
공격.
방화벽과 IDS를 탐지하고 파괴하기 위한 마법의 총알(또는 Nmap 옵션)은 없습니다.
시스템. 기술과 경험이 필요합니다. 튜토리얼은 이 참조 범위를 벗어납니다.
관련 옵션만 나열하고 해당 옵션이 수행하는 작업을 설명하는 가이드입니다.
-f (조각 패킷); --mtu (지정된 MTU 사용) .
The -f 옵션은 요청된 스캔(ping 스캔 포함)이 작은 조각화를 사용하도록 합니다.
IP 패킷. 아이디어는 TCP 헤더를 여러 패킷으로 분할하여
패킷 필터, 침입 탐지 시스템 및 기타 성가신 요소를 탐지하기가 더 어렵습니다.
당신이하는 일. 이것을 조심하십시오! 일부 프로그램은 이러한 문제를 처리하는 데 문제가 있습니다.
작은 패킷. Sniffit 세분화라는 이름의 구식 스니퍼가 즉시 오류가 발생했습니다.
첫 번째 조각을 받을 때. 이 옵션을 한 번 지정하면 Nmap이 분할됩니다.
패킷을 IP 헤더 뒤에 20바이트 이하로 따라서 XNUMX바이트 TCP 헤더는
세 패킷으로 나눕니다. XNUMX바이트의 TCP 헤더가 있는 두 개와
마지막 네 번째. 물론 각 조각에는 IP 헤더도 있습니다. 지정 -f 다시 사용 16
조각당 바이트 수(조각 수 줄이기).. 또는 직접 지정할 수 있습니다.
오프셋 크기 --mtu 옵션. 또한 지정하지 마십시오. -f 당신이 사용하는 경우 --mtu. 오프셋
XNUMX의 배수여야 합니다. 조각난 패킷은 패킷 필터를 통과하지 못하고
모든 IP 조각을 대기열에 넣는 방화벽(예: CONFIG_IP_ALWAYS_DEFRAG 에 옵션
Linux 커널, 일부 네트워크는 이러한 성능 저하를 감당할 수 없으므로
비활성화된 상태로 두십시오. 조각이 서로 다를 수 있으므로 다른 사람들은 이것을 활성화할 수 없습니다.
자신의 네트워크로 경로를 지정합니다. 일부 소스 시스템은 나가는 패킷을 조각 모음합니다.
핵심. iptables가 있는 리눅스. 연결 추적 모듈이 그러한 예입니다. 하다
Wireshark와 같은 스니퍼 동안 스캔하십시오. 전송된 패킷이
조각난. 호스트 OS가 문제를 일으키는 경우 다음을 시도하십시오. --send-eth. 우회 옵션
IP 계층 및 원시 이더넷 프레임을 보냅니다.
조각화는 TCP 및 TCP를 포함하는 Nmap의 원시 패킷 기능에서만 지원됩니다.
UDP 포트 스캔(연결 스캔 및 FTP 바운스 스캔 제외) 및 OS 감지. 특징
버전 감지 및 Nmap 스크립팅 엔진과 같은 일반적으로 지원하지 않습니다.
대상과 통신하기 위해 호스트의 TCP 스택에 의존하기 때문에 조각화
서비스를 제공합니다.
-D 미끼 1[,미끼 2][,나][,...] (미끼로 스캔을 은폐) .
미끼 스캔을 수행하여 원격 호스트에 다음과 같이 나타납니다.
미끼로 지정한 호스트도 대상 네트워크를 스캔하고 있습니다. 따라서 그들의 IDS
고유한 IP 주소에서 5-10개의 포트 스캔을 보고할 수 있지만 어떤 IP가
그들을 스캔하고 있었고 무고한 미끼였습니다. 이것을 통해 패배할 수 있는 동안
라우터 경로 추적, 응답 삭제 및 기타 활성 메커니즘, 일반적으로
IP 주소를 숨기는 효과적인 기술.
각 미끼 호스트를 쉼표로 구분하고 ME를 선택적으로 사용할 수 있습니다. 중 하나로
실제 IP 주소의 위치를 나타내는 미끼입니다. ME를 여섯 번째에 넣으면
위치 이상, 일부 일반적인 포트 스캔 감지기(예: Solar Designer의.
우수한 Scanlogd). 귀하의 IP 주소를 전혀 표시하지 않을 것입니다. 사용하지 않는 경우
ME, Nmap은 당신을 임의의 위치에 배치할 것입니다. RND를 사용할 수도 있습니다. 생성하기 위해
임의의 예약되지 않은 IP 주소 또는 RND:번호 생성하는 번호 구애.
미끼로 사용하는 호스트는 작동 중이어야 하며 그렇지 않으면 실수로 SYN 플러드가 발생할 수 있습니다.
당신의 목표. 또한 다음과 같은 경우에만 스캔 중인 호스트를 쉽게 결정할 수 있습니다.
하나는 실제로 네트워크에 있습니다. 이름 대신 IP 주소를 사용할 수 있습니다.
(따라서 미끼 네트워크는 네임서버 로그에서 당신을 볼 수 없습니다).
미끼는 초기 핑 스캔(ICMP, SYN, ACK 등을 사용)과
실제 포트 스캐닝 단계에서. 원격 OS 감지 중에도 미끼가 사용됩니다.
(-O). 미끼는 버전 감지 또는 TCP 연결 스캔과 함께 작동하지 않습니다. 스캔 지연 시
실제로 지연은 스푸핑된 프로브의 각 배치 사이가 아니라
각 개별 프로브. 미끼는 한꺼번에 일괄 발송되기 때문에
일시적으로 혼잡 제어 제한을 위반합니다.
너무 많은 미끼를 사용하면 스캔 속도가 느려지고 잠재적으로
덜 정확합니다. 또한 일부 ISP는 스푸핑된 패킷을 필터링하지만 많은
스푸핑된 IP 패킷을 전혀 제한하지 마십시오.
-S IP 주소 (스푸핑 소스 주소) .
어떤 상황에서는 Nmap이 소스 주소(Nmap
이 경우 알려드립니다). 이 상황에서 사용 -S 의 IP 주소로
패킷을 보내고자 하는 인터페이스.
이 플래그의 또 다른 가능한 사용은 스캔을 스푸핑하여 대상이 다음과 같이 생각하도록 만드는 것입니다.
someone 그렇지 않으면 스캔하고 있습니다. 회사가 반복적으로 포트 스캔을 한다고 상상해보십시오.
경쟁자! 그만큼 -e 옵션 및 -Pn 이러한 종류의 사용에는 일반적으로 필요합니다. 메모
일반적으로 응답 패킷을 다시 받지 않습니다(이 패킷은 IP 주소로
스푸핑), Nmap은 유용한 보고서를 생성하지 않습니다.
-e 인터페이스 (지정된 인터페이스 사용) .
패킷을 보내고 받을 인터페이스를 Nmap에 알려줍니다. Nmap은 다음을 수행할 수 있어야 합니다.
자동으로 감지하지만 감지할 수 없는 경우 알려줍니다.
--소스 포트 포트 번호; -g 포트 번호 (스푸핑 소스 포트 번호) .
놀랍게도 일반적인 구성 오류 중 하나는 소스에만 기반하여 트래픽을 신뢰하는 것입니다.
포트 번호. 이것이 어떻게 발생하는지 이해하는 것은 쉽습니다. 관리자가 설정합니다
반짝이는 새 방화벽을 설치했지만, 감사할 줄 모르는 사용자의 불만으로 가득 차게 됩니다.
응용 프로그램이 작동을 멈췄습니다. 특히 UDP가
외부 서버의 DNS 응답은 더 이상 네트워크에 들어갈 수 없습니다. FTP는 또 다른
일반적인 예. 활성 FTP 전송에서 원격 서버는
클라이언트에 다시 연결하여 요청된 파일을 전송합니다.
이러한 문제에 대한 보안 솔루션은 종종 애플리케이션 수준의 형태로 존재합니다.
프록시 또는 프로토콜 구문 분석 방화벽 모듈. 불행히도 더 쉬운 것도 있습니다.
안전하지 않은 솔루션. DNS 응답은 포트 53에서, 활성 FTP는 포트에서 옵니다.
20, 많은 관리자들이 단순히 들어오는 트래픽을 허용하는 함정에 빠졌습니다.
그 항구에서. 그들은 종종 공격자가 그러한 것을 알아차리고 악용하지 않을 것이라고 가정합니다.
방화벽 구멍. 다른 경우에는 관리자가 이것을 단기적 임시방편으로 간주합니다.
보다 안전한 솔루션을 구현할 수 있을 때까지 측정합니다. 그런 다음 그들은 보안을 잊어 버립니다.
업그레이드.
과로한 네트워크 관리자만이 이 함정에 빠지는 것은 아닙니다.
수많은 제품이 이러한 안전하지 않은 규칙과 함께 배송되었습니다. 심지어 마이크로소프트도
죄책감이 드는. Windows 2000 및 Windows XP와 함께 제공되는 IPsec 필터에는
포트 88(Kerberos)의 모든 TCP 또는 UDP 트래픽을 허용하는 암시적 규칙입니다. 또 다른
잘 알려진 경우, Zone Alarm 개인 방화벽 버전은 최대 2.1.25까지 허용되었습니다.
소스 포트 53(DNS) 또는 67(DHCP)로 들어오는 UDP 패킷.
엔맵은 -g 그리고 --소스 포트 이를 악용하기 위한 옵션(동일함)
약점. 포트 번호를 제공하기만 하면 Nmap이 해당 포트에서 패킷을 보냅니다.
가능한 곳. SYN 및 UDP를 포함하여 원시 소켓을 사용하는 대부분의 스캔 작업
스캔, 옵션을 완전히 지원합니다. 옵션은 특히 영향을 미치지 않습니다.
DNS 요청, TCP를 포함하여 일반 운영 체제 소켓을 사용하는 모든 작업
잇다 주사,. 버전 감지 및 스크립트 스캔. 소스 포트도 설정
Nmap은 다른 포트 번호를 사용해야 하기 때문에 OS 감지에는 작동하지 않습니다.
특정 OS 감지 테스트가 제대로 작동하도록 합니다.
--데이터 마녀 현 (보낸 패킷에 사용자 정의 바이너리 데이터 추가) .
이 옵션을 사용하면 전송된 패킷에 이진 데이터를 페이로드로 포함할 수 있습니다. 마녀 현 5월
다음 형식 중 하나로 지정해야 합니다. 0xAABBCCDDEEFF..., AABCCDDEEFF... or
\xAA\xBB\xCC\xDD\xEE\xFF.... 사용 예는 --데이터 0x데드비프 그리고 --데이터
\xCA\xFE\x09. 0x00ff와 같은 숫자를 지정하면 바이트 순서 변환이 없습니다.
수행됩니다. 에서 예상하는 바이트 순서로 정보를 지정했는지 확인하십시오.
수신기.
--데이터 문자열 현 (보낸 패킷에 사용자 지정 문자열 추가) .
이 옵션을 사용하면 보낸 패킷의 페이로드로 일반 문자열을 포함할 수 있습니다. 현
모든 문자열을 포함합니다. 그러나 일부 문자는 시스템에 따라 다를 수 있습니다.
로케일과 수신자는 동일한 정보를 볼 수 없습니다. 또한
문자열을 큰따옴표로 묶고 쉘에서 특수 문자를 이스케이프합니다.
예 : --데이터 문자열 "주사 실시 by 보안 옵스, 확장자 7192 " or
--데이터 문자열 "Ph34r my l33t 기술". 아무도 실제로
네트워크를 주의 깊게 모니터링하지 않는 한 이 옵션이 남긴 모든 설명을 참조하십시오.
스니퍼 또는 사용자 정의 IDS 규칙으로.
--데이터 길이 번호 (전송된 패킷에 임의의 데이터 추가) .
일반적으로 Nmap은 헤더만 포함하는 최소한의 패킷을 보냅니다. 따라서 TCP 패킷
일반적으로 40바이트이고 ICMP 에코 요청은 28바이트입니다. 일부 UDP 포트. 및 IP
프로토콜. 기본적으로 사용자 정의 페이로드를 가져옵니다. 이 옵션은 Nmap에 다음을 추가하도록 지시합니다.
전송하는 대부분의 패킷에 임의의 바이트 수를 지정하고 어떤 것도 사용하지 않습니다.
프로토콜별 페이로드. (사용 --데이터 길이 0 무작위 또는 프로토콜 관련 없음
페이로드.. OS 감지(-O) 패킷은 영향을 받지 않습니다. 정확도가 거기에 있기 때문에
프로브 일관성이 필요하지만 대부분의 핑 및 포트 스캔 패킷이 이를 지원합니다. 그것
속도가 약간 느려지지만 스캔을 눈에 덜 띄게 만들 수 있습니다.
--ip-옵션 S|R [경로]|L [경로]|T|U ... ; --ip-옵션 마녀 현 (패킷을 보낸다.
지정된 IP 옵션) .
The IP 프로토콜[13]은 패킷 헤더에 배치할 수 있는 몇 가지 옵션을 제공합니다.
유비쿼터스 TCP 옵션과 달리 IP 옵션은 실용성과
보안 문제. 실제로 많은 인터넷 라우터가 가장 위험한 옵션을 차단합니다.
소스 라우팅과 같은. 그러나 어떤 경우에는 옵션을 결정하는 데 여전히 유용할 수 있습니다.
및 타겟 머신에 대한 네트워크 경로를 조작하는 단계를 포함합니다. 예를 들어 다음을 수행할 수 있습니다.
기록 경로 옵션을 사용하여 보다 전통적인 경우에도 대상에 대한 경로를 결정합니다.
traceroute 스타일 접근 방식은 실패합니다. 또는 패킷이 특정
방화벽의 경우 엄격하거나 느슨한 소스로 다른 경로를 지정할 수 있습니다.
라우팅 옵션.
IP 옵션을 지정하는 가장 강력한 방법은 단순히 값을 다음으로 전달하는 것입니다.
인수 --ip-옵션. 각 XNUMX진수 앞에 \x를 붙인 다음 두 자리 숫자를 붙입니다. 당신은 할 수있다
별표를 따라 특정 문자를 반복한 다음
반복하고 싶은 시간. 예를 들어 \x01\x07\x04\x00*36\x01은 XNUMX진수 문자열입니다.
36 NUL 바이트를 포함합니다.
Nmap은 또한 옵션을 지정하기 위한 바로 가기 메커니즘을 제공합니다. 단순히 편지를 전달
R, T 또는 U를 사용하여 기록 경로를 요청합니다. 기록 타임 스탬프,. 또는 두 옵션을 함께 사용하거나
각기. 느슨하거나 엄격한 소스 라우팅. L 또는 S로 지정할 수 있습니다.
그 뒤에 공백이 오고 공백으로 구분된 IP 주소 목록이 나옵니다.
보내고 받은 패킷의 옵션을 보려면 다음을 지정하십시오. --패킷 추적.
Nmap과 함께 IP 옵션을 사용하는 방법에 대한 자세한 정보와 예는 다음을 참조하십시오.
http://seclists.org/nmap-dev/2006/q3/52.
--ttl 가치 (IP time-to-live 필드 설정) .
전송된 패킷의 IPv4 TTL(time-to-live) 필드를 지정된 값으로 설정합니다.
--randomize-호스트 (대상 호스트 순서를 무작위화) .
최대 16384개의 호스트로 구성된 각 그룹을 스캔하기 전에 섞으라고 Nmap에 지시합니다. 이것은 할 수 있습니다
특히 다음과 같은 경우 다양한 네트워크 모니터링 시스템에서 스캔을 덜 명확하게 만듭니다.
느린 타이밍 옵션과 결합하십시오. 더 큰 그룹 크기에 대해 무작위화하려는 경우,
증가하다 PING_GROUP_SZ. nmap.h에서 그리고 다시 컴파일합니다. 대체 솔루션은
목록 스캔으로 대상 IP 목록 생성(-SL -n -에 파일 이름)로 무작위화
Perl 스크립트를 작성한 다음 전체 목록을 Nmap에 제공하십시오. -iL..
--스푸핑 맥 맥 주소, 접두사, or 공급 업체 name (스푸핑 MAC 주소) .
Nmap이 보내는 모든 원시 이더넷 프레임에 대해 지정된 MAC 주소를 사용하도록 요청합니다.
이 옵션은 --send-eth. Nmap이 실제로 이더넷 수준을 전송하는지 확인하기 위해
패킷. 주어진 MAC은 여러 형식을 취할 수 있습니다. 단순히 숫자 0이면 Nmap
세션에 대해 완전히 임의의 MAC 주소를 선택합니다. 주어진 문자열이
짝수 개의 XNUMX진수(선택적으로 콜론으로 구분된 쌍 포함), Nmap은
그것들을 MAC으로 사용하십시오. 12개 미만의 XNUMX진수가 제공되면 Nmap은
임의의 값이 있는 XNUMX바이트의 나머지. 인수가 XNUMX 또는 XNUMX진수가 아닌 경우
string, Nmap은 nmap-mac-prefixes를 통해 다음을 포함하는 공급업체 이름을 찾습니다.
주어진 문자열(대소문자를 구분하지 않음). 일치하는 항목이 발견되면 Nmap은 공급업체의 OUI를 사용합니다.
(XNUMX바이트 접두사). 나머지 XNUMX바이트를 무작위로 채웁니다. 유효한
--스푸핑 맥 인수 예는 Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2,
그리고 시스코. 이 옵션은 SYN 스캔 또는 OS 감지와 같은 원시 패킷 스캔에만 영향을 미칩니다.
버전 감지 또는 Nmap 스크립팅과 같은 연결 지향 기능이 아님
엔진.
--프록시 쉼표로 구분 명부 of 대리 URL이 (체인을 통해 TCP 연결을 중계합니다.
프록시) .
제공된 체인을 통해 최종 대상과 TCP 연결을 설정하도록 Nmap에 요청합니다.
하나 이상의 HTTP 또는 SOCKS4 프록시. 프록시는 스캔의 진정한 출처를 숨기거나
특정 방화벽 제한을 회피하지만 다음과 같은 이유로 검사 성능을 저해할 수 있습니다.
대기 시간 증가. 사용자는 Nmap 시간 초과 및 기타 스캔 매개변수를 조정해야 할 수 있습니다.
따라서. 특히, 낮은 --최대 병렬도 일부 프록시 때문에 도움이 될 수 있습니다
Nmap이 기본적으로 여는 만큼의 동시 연결 처리를 거부합니다.
이 옵션은 형식의 URL로 표현되는 프록시 목록을 인수로 사용합니다.
proto://호스트:포트. 쉼표를 사용하여 체인에서 노드 URL을 구분합니다. 인증 없음
아직 지원됩니다. 유효한 프로토콜은 HTTP 및 SOCKS4입니다.
경고: 이 기능은 아직 개발 중이며 제한 사항이 있습니다. 그것은
nsock 라이브러리 내에서 구현되므로 ping, 포트 스캐닝에 영향을 미치지 않습니다.
및 스캔의 OS 검색 단계. NSE 및 버전 스캔만 이 옵션의 이점을 얻습니다.
지금까지는 다른 기능을 통해 실제 주소가 공개될 수 있습니다. SSL 연결은 아직
지원되지 않으며 프록시 측 DNS 확인도 지원되지 않습니다(호스트 이름은 항상 Nmap에 의해 확인됨).
--바섬 (가짜 TCP/UDP 체크섬으로 패킷 보내기) .
Nmap에 대상으로 보낸 패킷에 대해 잘못된 TCP, UDP 또는 SCTP 체크섬을 사용하도록 요청합니다.
호스트. 거의 모든 호스트 IP 스택이 이러한 패킷을 적절하게 삭제하므로 모든 응답은
수신 확인을 귀찮게하지 않은 방화벽 또는 IDS에서 올 가능성이 있습니다.
체크섬. 이 기술에 대한 자세한 내용은 다음을 참조하십시오. https://nmap.org/p60-12.html
--adler32 (SCTP 체크섬에 CRC32C 대신 사용되지 않는 Adler32 사용) .
SCTP 체크섬을 계산하기 위해 더 이상 사용되지 않는 Adler32 알고리즘을 사용하도록 Nmap에 요청합니다.
If --adler32 제공되지 않으면 CRC-32C(Castagnoli)가 사용됩니다. RFC 2960[14] 원래
SCTP에 대한 체크섬 알고리즘으로 Adler32를 정의했습니다. RFC 4960[7] 나중에 SCTP 재정의
CRC-32C를 사용하기 위한 체크섬. 현재 SCTP 구현은 CRC-32C를 사용해야 하지만
오래된 레거시 SCTP 구현에서 응답을 이끌어 내기 위해 바람직 할 수 있습니다.
Adler32를 사용합니다.
출력
모든 보안 도구는 그것이 생성하는 출력만큼만 유용합니다. 복잡한 테스트와
알고리즘이 체계적이고 이해할 수 있는 방식으로 제시되지 않으면 가치가 거의 없습니다.
패션. 사람과 다른 소프트웨어가 Nmap을 사용하는 방법의 수를 감안할 때 단일
형식은 모두를 기쁘게 할 수 있습니다. 따라서 Nmap은 대화형 모드를 포함한 여러 형식을 제공합니다.
사람이 직접 읽을 수 있도록 하고 소프트웨어로 쉽게 구문 분석할 수 있도록 XML을 제공합니다.
다양한 출력 형식을 제공하는 것 외에도 Nmap은 제어 옵션을 제공합니다.
출력의 자세한 정도와 디버깅 메시지. 출력 유형은 다음으로 전송될 수 있습니다.
표준 출력 또는 명명된 파일에 Nmap이 추가하거나 클로버할 수 있습니다. 출력 파일은
중단된 스캔을 재개하는 데에도 사용됩니다.
Nmap은 출력을 XNUMX가지 다른 형식으로 제공합니다. 기본값은 대화형이라고 합니다.
산출,. 표준 출력(stdout)으로 보내집니다.. 일반 출력도 있습니다.
더 적은 런타임 정보를 표시하고
보다는 검사가 완료된 후에 분석될 것으로 예상되기 때문에 경고
대화식으로.
XML 출력. HTML로 변환할 수 있으므로 가장 중요한 출력 유형 중 하나입니다.
Nmap 그래픽 사용자 인터페이스와 같은 프로그램에서 쉽게 구문 분석하거나
데이터베이스.
나머지 두 가지 출력 유형은 단순 grepable 출력입니다. 대부분을 포함하는
한 줄에 대상 호스트에 대한 정보 및 sCRiPt KiDDi3 0utPUt. 사용자를 위해
자신을 고려하십시오 |<-r4d.
대화형 출력이 기본값이고 연결된 명령줄 옵션이 없지만
다른 네 가지 형식 옵션은 동일한 구문을 사용합니다. 그들은 하나의 주장을 취합니다.
결과를 저장해야 하는 파일 이름. 여러 형식을 지정할 수 있지만 각각
형식은 한 번만 지정할 수 있습니다. 예를 들어, 다음을 위해 일반 출력을 저장할 수 있습니다.
프로그래밍 방식 분석을 위해 동일한 스캔의 XML을 저장하는 동안 자신의 검토. 당신은 할 수 있습니다
이것은 옵션과 함께 -황소 myscan.xml -에 myscan.nmap. 이 장에서는 간단한
간결함을 위해 myscan.xml과 같은 이름을 사용하지만 일반적으로 더 설명적인 이름을 사용하는 것이 좋습니다. 그만큼
선택한 이름은 개인 취향의 문제이지만,
스캔 날짜와 스캔을 설명하는 한두 단어
내가 스캔하는 회사.
이 옵션이 결과를 파일에 저장하는 동안 Nmap은 여전히 stdout에 대화형 출력을 인쇄합니다.
평소처럼. 예를 들어, 명령 nmap -황소 myscan.xml 목표 XML을 myscan.xml에 인쇄하고
표준 출력을 다음과 같은 경우 인쇄했을 것과 동일한 대화형 결과로 채웁니다. -황소
전혀 지정하지 않았습니다. 하이픈 문자를 인수로 전달하여 변경할 수 있습니다.
형식 유형 중 하나로 이로 인해 Nmap이 대화형 출력을 비활성화하고 대신
표준 출력 스트림에 지정한 형식으로 결과를 인쇄합니다. 그래서 명령
nmap -황소 - 목표 XML 출력만 stdout으로 보냅니다. 심각한 오류가 여전히 있을 수 있습니다.
일반 오류 스트림인 stderr..에 인쇄됩니다.
일부 Nmap 인수와 달리 logfile 옵션 플래그 사이의 공백(예: -황소) and
파일 이름 또는 하이픈은 필수입니다. 플래그를 생략하고 다음과 같은 인수를 제공하는 경우 -oG-
or -oXscan.xml, Nmap의 이전 버전과의 호환성 기능으로 인해
표준 체재 각각 G- 및 Xscan.xml이라는 이름의 출력 파일입니다.
이러한 모든 주장은 다음을 지원합니다. strftime-처럼. 파일 이름의 변환. %H, %M, %S,
%m, %d, %y 및 %Y는 모두 다음과 같습니다. strftime. %T는 %H%M%S, %R과(와) 같습니다.
%H%M과 동일하고 %D는 %m%d%y와 동일합니다. % 다음에 다른 문자가 오는 경우
해당 문자를 생성합니다(%%는 퍼센트 기호를 제공합니다). 그래서 -황소 '스캔-%T-%D.xml' 결제 게이트웨이,
scan-144840-121307.xml 형식의 이름을 가진 XML 파일을 사용합니다.
Nmap은 또한 스캔 상세도를 제어하고 출력 파일에 추가하는 옵션을 제공합니다.
그들을 방해하는 것보다. 이러한 모든 옵션은 아래에 설명되어 있습니다.
Nmap은 산출 형식
-에 파일 사양 (정상 출력) .
일반 출력이 지정된 파일 이름으로 보내지도록 요청합니다. 위에서 논의한 바와 같이,
이것은 대화식 출력과 약간 다릅니다.
-황소 파일 사양 (XML 출력) .
XML 출력이 지정된 파일 이름으로 보내지도록 요청합니다. Nmap에는 문서가 포함되어 있습니다.
XML 파서가 Nmap XML 출력의 유효성을 검사할 수 있도록 하는 유형 정의(DTD). 동안
주로 프로그래밍 방식으로 사용하기 위한 것이며 인간이 Nmap XML을 해석하는 데도 도움이 될 수 있습니다.
산출. DTD는 형식의 법적 요소를 정의하고 종종 다음을 열거합니다.
그들이 취할 수 있는 속성과 가치. 최신 버전은 항상 다음에서 사용할 수 있습니다.
https://svn.nmap.org/nmap/docs/nmap.dtd.
XML은 소프트웨어에서 쉽게 구문 분석할 수 있는 안정적인 형식을 제공합니다. 무료 XML 파서는
C/C++, Perl, Python 및 Java를 포함한 모든 주요 컴퓨터 언어에 사용할 수 있습니다.
사람들은 Nmap 출력을 처리하기 위해 이러한 언어의 대부분에 대한 바인딩을 작성했습니다.
그리고 구체적으로 실행. 예는 다음과 같습니다. Nmap::스캐너[삼]. 그리고 Nmap::파서[16]. ~에
펄 CPAN. 중요하지 않은 애플리케이션이 Nmap과 인터페이스하는 거의 모든 경우에,
XML이 선호되는 형식입니다.
XML 출력은 결과 형식을 다음과 같이 지정하는 데 사용할 수 있는 XSL 스타일시트를 참조합니다.
HTML. 이것을 사용하는 가장 쉬운 방법은 단순히 웹 브라우저에서 XML 출력을 로드하는 것입니다.
Firefox 또는 IE와 같은. 기본적으로 이것은 Nmap을 실행한 시스템에서만 작동합니다.
(또는 유사하게 구성된 것) 하드 코딩된 nmap.xsl 파일 시스템 경로로 인한 것입니다. 사용
전에, --webxml or --스타일시트 HTML로 렌더링되는 이식 가능한 XML 파일을 만드는 옵션
웹에 연결된 모든 컴퓨터에서.
-OS 파일 사양 (ScRipT KIdd|3 출력) .
스크립트 키디 출력은 다음으로 후처리된다는 점을 제외하고는 대화형 출력과 같습니다.
일관성 때문에 이전에 Nmap을 무시했던 l33t HaXXorZ에 더 적합합니다.
대문자 및 철자. 유머 장애가 있는 사람들은 이 옵션이
내가 "도와준다"고 비난하기 전에 대본 꼬마들을 조롱했습니다.
-oG 파일 사양 (grepable 출력) .
이 출력 형식은 더 이상 사용되지 않으므로 마지막으로 다룹니다. XML 출력 형식은
훨씬 더 강력하고 숙련된 사용자에게 거의 편리합니다. XML은
수십 개의 우수한 파서를 사용할 수 있는 표준이지만 grepable 출력은 다음과 같습니다.
내 자신의 간단한 해킹. XML은 새로운 Nmap 기능을 지원하도록 확장 가능합니다.
릴리스된 반면 나는 종종 grepable 출력에서 이러한 기능을 생략해야 합니다.
넣어두는 곳.
그럼에도 불구하고 grepable 출력은 여전히 매우 인기가 있습니다. 나열하는 간단한 형식입니다.
각 호스트를 한 줄에 표시하고 표준 Unix로 간단하게 검색 및 구문 분석할 수 있습니다.
grep, awk, cut, sed, diff 및 Perl과 같은 도구. 평소에도 일회용으로 사용하는데
명령줄에서 수행되는 테스트. SSH 포트가 열려 있거나 해당하는 모든 호스트 찾기
Solaris를 실행 중이면 호스트를 식별하기 위해 간단한 grep만 사용하고 awk 또는
cut 명령을 사용하여 원하는 필드를 인쇄합니다.
Grepable 출력은 주석(파운드(#)으로 시작하는 줄)으로 구성됩니다. 그리고 목표
윤곽. 목표 라인에는 탭으로 구분된 XNUMX개의 레이블이 지정된 필드 조합이 포함됩니다.
콜론이 뒤따랐습니다. 필드는 호스트, 포트, 프로토콜, 무시된 상태, OS,
시퀀스 인덱스, IP ID 및 상태.
이러한 필드 중 가장 중요한 것은 일반적으로 각 포트에 대한 세부 정보를 제공하는 포트입니다.
흥미로운 항구. 쉼표로 구분된 포트 항목 목록입니다. 각 포트 항목
하나의 흥미로운 포트를 나타내며 XNUMX개의 슬래시(/)로 구분됩니다.
하위 필드. 해당 하위 필드는 포트 번호, 상태, 프로토콜, 소유자, 서비스, SunRPC입니다.
정보 및 버전 정보.
XML 출력과 마찬가지로 이 매뉴얼 페이지에서는 전체 형식을 문서화할 수 없습니다. ㅏ
Nmap grepable 출력 형식에 대한 자세한 내용은
https://nmap.org/book/output-formats-grepable-output.html.
-오아 기본 이름 (모든 형식으로 출력) .
편의상 다음을 지정할 수 있습니다. -오아 기본 이름 스캔 결과를 일반, XML,
한 번에 grepable 형식. 그들은에 저장됩니다 기본 이름.nmap, 기본 이름.xml 및
기본 이름각각 .gnmap. 대부분의 프로그램과 마찬가지로 파일 이름에 접두사를 붙일 수 있습니다.
다음과 같은 디렉토리 경로 ~/nmaplogs/foocorp/ Unix의 경우 또는 Windows의 경우 c:\hacking\sco.
다변 그리고 디버깅 옵션
-v (상세한 수준 증가) .
Nmap이 스캔에 대한 더 많은 정보를 인쇄하도록 하는 자세한 수준을 높입니다.
진행 중입니다. 열린 포트는 발견된 대로 표시되며 예상 완료 시간은 다음과 같습니다.
Nmap이 스캔에 몇 분 이상 걸릴 것이라고 생각할 때 제공됩니다. 두 번 사용하거나
더 자세한 정보를 위해 more: -vv, 또는 자세한 수준을 직접 제공합니다. 예를 들어
-v3..
대부분의 변경 사항은 대화식 출력에만 영향을 미치고 일부는 일반 및 스크립트에도 영향을 미칩니다.
아동 출력. 다른 출력 유형은 기계에서 처리하도록 되어 있으므로 Nmap
사람의 피로를 주지 않으면서 이러한 형식으로 기본적으로 상당한 세부 정보를 제공할 수 있습니다.
사용자. 그러나 출력 크기를 줄일 수 있는 다른 모드에는 몇 가지 변경 사항이 있습니다.
실질적으로 일부 세부 사항을 생략함으로써. 예를 들어, grepable의 주석 줄
스캔된 모든 포트 목록을 제공하는 출력은 상세 모드에서만 인쇄됩니다.
꽤 길 수 있기 때문입니다.
-d (디버깅 레벨 증가) .
자세한 정보 표시 모드에서도 충분한 데이터를 제공하지 못하는 경우 디버깅을 사용할 수 있습니다.
당신을 훨씬 더 홍수! 자세한 정보 표시 옵션(-v), 디버깅이 활성화됨
명령줄 플래그(-d) 및 디버그 수준을 지정하여 높일 수 있습니다.
여러 번,. 에서와 같이 -dd, 또는 레벨을 직접 설정하여. 예를 들어, -d9 세트
레벨 XNUMX. 그것은 가장 효과적인 수준이며 수천 개의 라인을 생성합니다.
아주 적은 수의 포트와 대상으로 매우 간단한 스캔을 실행하지 않는 한.
디버깅 출력은 Nmap에서 버그가 의심되거나 단순히
Nmap이 무엇을 하고 있고 왜 하는지 혼란스럽습니다. 이 기능은 주로
개발자에게 디버그 라인은 항상 설명이 필요 없습니다. 다음과 같은 결과를 얻을 수 있습니다.
시간 초과 값: srtt: -1 rttvar: -1 ~: 1000000 delta 14987 ==> srtt: 14987 rttvar:
14987 to: 100000. 한 줄을 이해하지 못하면 무시할 수 있는 유일한 수단입니다.
소스 코드에서 찾아보거나 개발 목록에서 도움을 요청하십시오.
(nmap-dev).. 일부 행은 설명이 필요 없지만 메시지는 다음과 같이 더 모호해집니다.
디버그 레벨이 증가합니다.
--이유 (호스트 및 포트 상태 이유) .
각 포트가 특정 상태로 설정된 이유와 각 호스트가 작동 중인 이유를 표시합니다.
또는 아래로. 이 옵션은 포트 또는 호스트를 결정한 패킷 유형을 표시합니다.
상태. 예를 들어 닫힌 포트의 RST 패킷 또는 활성 상태의 에코 응답
주최자. Nmap이 제공할 수 있는 정보는 스캔 또는 핑 유형에 따라 결정됩니다. 그만큼
SYN 스캔 및 SYN 핑(-봄 여름 시즌 그리고 -추신) 매우 상세하지만 TCP 연결 스캔(-성)
의 구현에 의해 제한됩니다. 잇다 시스템 호출. 이 기능은
디버그 옵션(-d). 결과는 XML 로그에 저장됩니다.
이 옵션이 지정되지 않은 경우에도 파일.
--stats-마다 시간 (주기적인 타이밍 통계 인쇄) .
의 각 간격 후에 주기적으로 타이밍 상태 메시지를 인쇄합니다. 시간. 시간은
"타이밍 및 성능" 섹션에 설명된 종류의 사양 그래서
예를 들어, 사용 --stats-마다 10s 10초마다 상태 업데이트를 받으려면 업데이트
대화형 출력(화면) 및 XML 출력으로 인쇄됩니다.
--패킷 추적 (트레이스 패킷 및 데이터 송수신) .
Nmap이 보내거나 받은 모든 패킷의 요약을 인쇄하도록 합니다. 이것은 자주 사용됩니다
디버깅을 위한 것이기도 하지만 새로운 사용자가
Nmap은 비밀리에 하고 있습니다. 수천 줄의 인쇄를 방지하려면 다음을 수행할 수 있습니다.
다음과 같이 스캔할 제한된 수의 포트를 지정합니다. - p20-30. 관심만 있다면
버전 감지 하위 시스템을 사용하려면 --버전 추적 대신에. 만약 당신이
스크립트 추적에 대한 관심, 지정 --스크립트 추적. 과 --패킷 추적, 당신은 모든
위.
--열려있는 (열린(또는 열려 있는) 포트만 표시) .
때로는 실제로 연결할 수 있는(열린 포트) 포트에만 관심을 두고
폐쇄, 필터링 및 폐쇄된 포트로 복잡한 결과를 원합니다. 산출
사용자 정의는 일반적으로 grep, awk 및 Perl과 같은 도구를 사용하여 스캔 후에 수행됩니다.
그러나 이 기능은 압도적인 요청으로 인해 추가되었습니다. 지정 --열려있는 보기만 하다
하나 이상의 열려 있거나 필터링되지 않았거나 필터링되지 않은 포트가 있는 호스트이며 다음의 포트만 볼 수 있습니다.
그 상태. 이 세 가지 상태는 정상적으로 처리됩니다.
필터링되지 않은 항목이 있는 경우 카운트로 압축될 수 있습니다.
압도적인 수.
--iflist (인터페이스 및 경로 나열) .
Nmap이 감지한 인터페이스 목록과 시스템 경로를 인쇄합니다. 이것은 유용하다
라우팅 문제 또는 장치 특성 오류 디버깅(예: PPP를 처리하는 Nmap
이더넷으로 연결).
그 외 출력 옵션
--추가 출력 (클로버 출력 파일보다 추가) .
다음과 같은 출력 형식 플래그에 파일 이름을 지정할 때 -황소 or -에, 해당 파일은
기본적으로 덮어씁니다. 파일의 기존 내용을 유지하고
새 결과를 추가하고 --추가 출력 옵션. 모든 출력 파일 이름
Nmap 실행에 지정된 것은 클로버링되지 않고 추가됩니다. 이것
XML에서는 잘 작동하지 않습니다(-황소) 결과 파일이 일반적으로 구문 분석하지 않으므로 데이터를 스캔합니다.
손으로 고칠 때까지 제대로.
--재개하다 파일 이름 (중단된 스캔 재개) .
일부 광범위한 Nmap 실행은 며칠 정도 매우 오랜 시간이 걸립니다. 이러한 스캔은
항상 완료까지 실행합니다. 제한 사항으로 인해 작업 중에 Nmap이 실행되지 않을 수 있습니다.
몇 시간 동안 네트워크가 다운될 수 있고 Nmap이 실행 중인 시스템에 문제가 발생할 수 있습니다.
계획되거나 계획되지 않은 재부팅 또는 Nmap 자체가 충돌할 수 있습니다. 실행 중인 관리자
Nmap은 ctrl-C를 눌러 다른 이유로 취소할 수도 있습니다. 다시 시작
처음부터 전체 스캔이 바람직하지 않을 수 있습니다. 다행히 정상인 경우(-에) 또는
탐욕스러운 (-oG) 로그가 보관된 경우 사용자는 Nmap에 스캔을 재개하도록 요청할 수 있습니다.
실행이 중지되었을 때 작업 중이던 대상입니다. 간단히 지정 --재개하다 옵션 및
일반/grepable 출력 파일을 인수로 전달합니다. 다른 인수는 없습니다
Nmap이 이전에 지정된 것과 동일한 것을 사용하도록 출력 파일을 구문 분석하기 때문에 허용됩니다.
간단히 Nmap을 다음과 같이 호출하십시오. nmap --재개하다 로그 파일 이름. Nmap은 새로운 결과를
이전 실행에서 지정된 데이터 파일. 재개는 XML을 지원하지 않습니다
두 개의 실행을 하나의 유효한 XML 파일로 결합하면 출력 형식이
어려운.
--스타일시트 통로 or URL (XML 출력을 변환하도록 XSL 스타일시트 설정) .
Nmap은 XSL과 함께 제공됩니다. 스타일시트. 이름이 nmap.xsl입니다. XML을 보거나 번역하기 위해
출력을 HTML로.. XML 출력에는 다음을 가리키는 xml-stylesheet 지시문이 포함됩니다.
Nmap이 처음 설치한 nmap.xml입니다. XSLT를 통해 XML 파일 실행
와 같은 프로세서 xsltproc[17]. HTML 파일을 생성합니다. XML 직접 열기
최신 브라우저가 위치를 제한하기 때문에 브라우저의 파일이 더 이상 제대로 작동하지 않습니다.
스타일시트를 로드할 수 있습니다. 다른 스타일시트를 사용하려면 지정하십시오.
인수로 --스타일시트. 전체 경로 이름 또는 URL을 전달해야 합니다. 하나의 공통
호출은 --스타일시트 https://nmap.org/svn/docs/nmap.xsl. 이것은 XSLT에게
프로세서를 사용하여 Nmap.Org에서 최신 버전의 스타일시트를 로드합니다. 그만큼 --webxml
옵션은 타이핑과 암기 횟수를 줄이면서 동일한 작업을 수행합니다. 다음에서 XSL 로드
Nmap.Org를 사용하면 Nmap이 없는 시스템에서 결과를 더 쉽게 볼 수 있습니다(따라서
nmap.xsl)이 설치되었습니다. 따라서 URL이 더 유용한 경우가 많지만 로컬 파일 시스템은
nmap.xsl의 위치는 개인 정보 보호를 위해 기본적으로 사용됩니다.
--webxml (Nmap.Org에서 스타일시트 로드) .
이것은 에 대한 별칭에 불과한 편리한 옵션입니다. --스타일시트
https://nmap.org/svn/docs/nmap.xsl.
--스타일시트 없음 (XML에서 XSL 스타일시트 선언 생략) .
Nmap이 XSL 스타일시트를 XML과 연결하지 못하도록 하려면 이 옵션을 지정하십시오.
산출. xml-stylesheet 지시문은 생략됩니다.
기타 사항 옵션
이 섹션에서는 실제로 적합하지 않은 몇 가지 중요한(그리고 그다지 중요하지 않은) 옵션에 대해 설명합니다.
다른 곳.
-6 (IPv6 스캐닝 활성화) .
Nmap은 가장 인기 있는 기능에 대해 IPv6을 지원합니다. 핑 스캐닝, 포트 스캐닝,
버전 감지 및 Nmap 스크립팅 엔진은 모두 IPv6을 지원합니다. 명령 구문
추가하는 것을 제외하고는 평소와 동일합니다. -6 옵션. 물론, 당신은 사용해야합니다
호스트 이름 대신 주소를 지정하는 경우 IPv6 구문. 주소가 보일 수 있습니다
3ffe:7501:4819:2000:210:f3ff:fe03:14d0과 같으므로 호스트 이름이 권장됩니다. 출력
"interesting ports" 라인의 IPv6 주소가
유일한 IPv6 경품.
IPv6이 정확히 전 세계를 강타한 것은 아니지만 일부 지역에서는 상당한 사용이 되고 있습니다.
(보통 아시아) 국가와 대부분의 최신 운영 체제에서 지원합니다. 엔맵을 사용하려면
IPv6을 사용하는 경우 스캔의 소스와 대상 모두 IPv6에 대해 구성되어야 합니다. 만약에
귀하의 ISP(대부분의 경우와 같이)는 귀하에게 IPv6 주소를 할당하지 않습니다. 무료 터널
브로커는 널리 사용 가능하며 Nmap과 잘 작동합니다. 무료 IPv6 터널을 사용합니다.
브로커. 서비스 http://www.tunnelbroker.net. 다른 터널 브로커는 나와 at
위키 백과[18]. 6to4 터널은 또 다른 인기 있는 무료 접근 방식입니다.
Windows에서 원시 소켓 IPv6 스캔은 이더넷 장치에서만 지원됩니다.
터널) 및 Windows Vista에서만 가능합니다. 그리고 나중에. 사용 --권한 없는. 옵션
다른 상황.
-A (공격적인 스캔 옵션) .
이 옵션은 추가 고급 및 적극적인 옵션을 활성화합니다. 현재 이것은 가능
OS 감지(-O), 버전 스캔(-sV), 스크립트 스캔(-sC) 및 추적 경로
(--추적 경로).. 앞으로 더 많은 기능이 추가될 수 있습니다. 요점은
사람들이 많은 세트를 기억할 필요 없이 포괄적인 스캔 옵션 세트
플래그. 그러나 기본 설정을 사용한 스크립트 스캔은 방해가 되는 것으로 간주되기 때문에
당신은 사용해서는 안됩니다 -A 허가 없이 대상 네트워크에 대해. 이 옵션만
기능을 활성화하고 타이밍 옵션(예: -T4) 또는 자세한 표시 옵션(-v)
당신도 원할 수 있습니다. OS와 같은 권한(예: 루트 액세스)이 필요한 옵션
이러한 권한을 사용할 수 있는 경우에만 감지 및 traceroute가 활성화됩니다.
--datadir 디렉토리 이름 (사용자 정의 Nmap 데이터 파일 위치 지정) .
Nmap은 런타임 시 nmap-service-probes라는 파일에서 일부 특수 데이터를 얻습니다.
nmap-services, nmap-protocols, nmap-rpc, nmap-mac-prefixes 및 nmap-os-db. 만약
이러한 파일의 위치가 지정되었습니다( --servicedb or
--versiondb 옵션), 해당 위치는 해당 파일에 사용됩니다. 그 후 Nmap은 다음을 검색합니다.
이 파일은 다음과 같이 지정된 디렉토리에 있습니다. --datadir 옵션(있는 경우). 모든 파일
거기에서 찾을 수 없는 경우에 의해 지정된 디렉토리에서 검색됩니다. NMAPDIR.
환경 변수. 다음 온다 ~/.nmap. 실제적이고 효과적인 UID를 위해; 또는 Windows에서
홈\AppData\Roaming\nmap(여기서 홈 다음과 같은 사용자의 홈 디렉토리입니다.
C:\사용자\사용자). 그 다음에는 nmap 실행 파일의 위치와 동일한 위치가 나옵니다.
../share/nmap이 추가된 위치. 그런 다음 다음과 같은 컴파일된 위치
/usr/local/share/nmap 또는 /usr/share/nmap.
--servicedb 서비스 파일 (사용자 정의 서비스 파일 지정) .
nmap-services 데이터 파일이 아닌 지정된 서비스 파일을 사용하도록 Nmap에 요청합니다.
Nmap과 함께 제공됩니다. 이 옵션을 사용하면 빠른 스캔(-F) 사용될. 보다
에 대한 설명 --datadir Nmap의 데이터 파일에 대한 자세한 내용은
--versiondb 서비스 프로브 파일 (사용자 정의 서비스 프로브 파일 지정) .
nmap-service-probes 대신 지정된 서비스 프로브 파일을 사용하도록 Nmap에 요청합니다.
Nmap과 함께 제공되는 데이터 파일. 에 대한 설명을 참조하십시오. --datadir 자세한 내용은
Nmap의 데이터 파일에서
--send-eth (원시 이더넷 전송 사용) .
상위 계층이 아닌 원시 이더넷(데이터 링크) 계층에서 패킷을 보내도록 Nmap에 요청합니다.
IP(네트워크) 계층. 기본적으로 Nmap은 일반적으로 가장 적합한 것을 선택합니다.
실행 중인 플랫폼입니다. 원시 소켓(IP 계층). 일반적으로 가장 효율적입니다.
Unix 시스템에서는 이더넷 프레임이 Windows 작동에 필요하므로
Microsoft는 원시 소켓 지원을 비활성화했습니다. Nmap은 여전히 Unix에서 원시 IP 패킷을 사용합니다.
다른 선택이 없을 때(예: 이더넷이 아닌 연결) 이 옵션을 사용합니다.
--send-ip (원시 IP 수준에서 전송) .
Nmap에 낮은 수준의 이더넷을 보내는 대신 원시 IP 소켓을 통해 패킷을 보내도록 요청합니다.
프레임. 에 대한 보완이다. --send-eth 이전에 논의된 옵션.
--특권 (사용자에게 완전한 권한이 있다고 가정) .
Nmap에 원시 소켓 전송을 수행할 수 있는 권한이 있다고 가정하도록 지시합니다.
패킷 스니핑 및 일반적으로 루트 권한이 필요한 유사한 작업. 유닉스에서
시스템. 기본적으로 Nmap은 그러한 작업이 요청되면 종료되지만 게투이드 하지 않습니다
제로. --특권 Linux 커널 기능 및 유사한 시스템에 유용합니다.
권한이 없는 사용자가 원시 패킷 스캔을 수행할 수 있도록 구성할 수 있습니다. 반드시
권한이 필요한 옵션의 플래그 앞에 이 옵션 플래그를 제공하십시오(SYN
스캔, OS 감지 등). 그만큼 NMAP_PRIVILEGED. 환경 변수는 다음과 같이 설정할 수 있습니다.
동등한 대안 --특권.
--권한 없는 (사용자에게 원시 소켓 권한이 없다고 가정) .
이 옵션은 반대입니다. --특권. 사용자를 다음과 같이 취급하도록 Nmap에 지시합니다.
네트워크 원시 소켓 및 스니핑 권한이 부족합니다. 이것은 테스트에 유용하며,
디버깅 또는 운영 체제의 원시 네트워크 기능이 어떻게 든
고장난. 그만큼 NMAP_UNPRIVILEGED. 환경 변수는 동등하게 설정할 수 있습니다
에 대한 대안 --권한 없는.
--릴리스 메모리 (종료하기 전에 메모리 해제) .
이 옵션은 메모리 누수 디버깅에만 유용합니다. Nmap이 릴리스되도록 합니다.
실제 메모리 누수를 더 쉽게 발견할 수 있도록 종료 직전에 할당된 메모리.
일반적으로 Nmap은 프로세스 종료 시 OS가 이 작업을 수행하므로 이를 건너뜁니다.
-V; --번역 (버전 번호 인쇄) .
Nmap 버전 번호를 출력하고 종료합니다.
-h; --도움 (도움말 요약 페이지 인쇄) .
가장 일반적인 명령 플래그와 함께 짧은 도움말 화면을 인쇄합니다. 없이 Nmap 실행
모든 인수는 동일한 작업을 수행합니다.
실행 시간 상호 작용
Nmap을 실행하는 동안 모든 키 누름이 캡처됩니다. 이것은 당신이 상호 작용할 수 있습니다
프로그램을 중단하고 다시 시작하지 않고 특정 특수 키가 변경됩니다.
다른 키는 스캔에 대해 알려주는 상태 메시지를 인쇄합니다.
협약은 그 소문자 편지 증가하다 인쇄량, 대문자
편지 감소 인쇄. '를 눌러도 됩니다.?' 도와주기 위해.
v / V
상세 수준 증가/감소
d / D
디버깅 레벨 증가/감소
p / P
패킷 추적 켜기/끄기
?
런타임 상호 작용 도움말 화면 인쇄
다른 것
다음과 같은 상태 메시지를 출력합니다.
통계: 0:00:07 경과; 20개의 호스트 완료(1개 업), 1개 서비스 스캔 중
서비스 스캔 타이밍: 약 33.33% 완료; ETC: 20:57 (0:00:12 남음)
사용 예
다음은 단순하고 일상적인 것부터 좀 더 복잡한 것까지 몇 가지 Nmap 사용 예입니다.
그리고 난해한. 일부 실제 IP 주소와 도메인 이름은 더 많은 것을 만들기 위해 사용됩니다.
콘크리트. 그 자리에서 다음의 주소/이름을 대체해야 합니다. your 자신의 네트워크.
다른 네트워크의 포트 스캐닝이 불법이거나 불법이어야 한다고 생각하지 않지만 일부 네트워크는
관리자는 원치 않는 네트워크 검사를 좋아하지 않으며 불평할 수 있습니다.
먼저 허가를 받는 것이 가장 좋은 방법입니다.
테스트 목적으로 scanme.nmap.org 호스트를 스캔할 수 있는 권한이 있습니다.
권한에는 Nmap을 통한 검색만 포함되며 익스플로잇 또는 서비스 거부 테스트는 포함되지 않습니다.
공격. 대역폭을 절약하기 위해 XNUMX개 이상의 스캔을 시작하지 마십시오.
하루에 그 호스트. 이 무료 스캔 대상 서비스를 악용할 경우 서비스가 중단됩니다.
Nmap은 주어진 호스트 이름/IP를 확인하지 못했습니다: scanme.nmap.org를 보고합니다. 이것들
권한은 scanme2.nmap.org, scanme3.nmap.org 등의 호스트에도 적용됩니다.
해당 호스트는 현재 존재하지 않습니다.
nmap -v scanme.nmap.org.
이 옵션은 scanme.nmap.org 시스템에서 예약된 모든 TCP 포트를 스캔합니다. 그만큼 -v option
상세 모드를 활성화합니다.
nmap -봄 여름 시즌 -O scanme.nmap.org/24.
256개의 IP 중 상위에 있는 각 시스템에 대해 은밀한 SYN 스캔을 시작합니다.
Scanme가 상주하는 클래스 C 크기의 네트워크. 또한 어떤 운영 체제가
시스템이 실행 중인 각 호스트에서 실행 중입니다. 이것은 루트 권한이 필요합니다
SYN 스캔 및 OS 감지 때문입니다.
nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127.
가능한 255개 각각의 전반부에 호스트 열거 및 TCP 스캔을 시작합니다.
198.116 클래스 B 주소 공간의 XNUMX비트 서브넷. 이것은 시스템이 실행되는지 여부를 테스트합니다.
표준 포트의 SSH, DNS, POP3 또는 IMAP 또는 포트 4564의 모든 것.
이 포트가 열려 있는 것으로 확인되면 버전 감지를 사용하여 애플리케이션이 무엇인지 확인합니다.
실행할 수 있습니다.
nmap -v -iR 100000 -Pn -p 80.
Nmap에 무작위로 100,000개의 호스트를 선택하고 웹 서버(포트 80)를 검색하도록 요청합니다. 주최자
열거는 다음과 같이 비활성화됩니다. -Pn 여부를 결정하기 위해 먼저 몇 개의 프로브를 보낸 이후
어쨌든 각 대상 호스트에서 하나의 포트만 프로빙할 때 호스트가 작동 중이라는 것은 낭비입니다.
nmap -Pn -p80 -황소 로그/pb-port80scan.xml -oG 로그/pb-port80scan.gnmap 216.163.128.20/20.
이것은 웹 서버에 대해 4096개의 IP를 스캔하고(ping 없이) 출력을 다음 위치에 저장합니다.
grepable 및 XML 형식.
nmap 예약
이 참조 가이드에서는 모든 재료 Nmap 옵션에 대해 자세히 설명하지만 완전히 설명할 수는 없습니다.
이러한 기능을 적용하여 실제 작업을 빠르게 해결하는 방법. 이를 위해 Nmap을 출시했습니다.
네트워크 스캐닝: 네트워크 검색 및 보안에 대한 공식 Nmap 프로젝트 가이드
스캐닝. 주제에는 방화벽 및 침입 탐지 시스템 파괴, 최적화가 포함됩니다.
Nmap 성능 및 Nmap 스크립팅 엔진으로 일반적인 네트워킹 작업 자동화.
네트워크 가져오기와 같은 일반적인 Nmap 작업에 대한 힌트와 지침이 제공됩니다.
인벤토리, 침투 테스트, 악성 무선 액세스 포인트 탐지 및 차단
네트워크 웜 발생. 예제와 다이어그램은 유선상의 실제 통신을 보여줍니다. 더
책의 절반 이상이 온라인에서 무료로 제공됩니다. 보다 https://nmap.org/book 자세한
정보.
onworks.net 서비스를 사용하여 온라인으로 nmap 사용