Nmap Summary (ESP)

htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅이 되는 AWS 해킹을 배우세요

HackTricks를 지원하는 다른 방법:

nmap -sV -sC -O -n -oA nmapscan 192.168.0.1/24

매개변수

스캔할 IP

  • <ip>,<net/mask>: 직접 IP를 나타냄

  • -iL <ips_file>: IP 목록

  • -iR <number>: 랜덤 IP 수, --exclude <Ips> 또는 --excludefile <file>로 제외 가능

장비 발견

기본적으로 Nmap은 -PA80 -PS443 -PE -PP로 구성된 발견 단계를 시작함

  • -sL: 침입적이지 않고, 목표를 나열하기 위해 DNS 요청을 수행함. 예를 들어 www.prueba.es/24의 모든 IP가 우리의 목표인지 확인하는 데 유용함.

  • -Pn: 핑 없음. 모두 활성 상태임을 알고 있는 경우 유용함 (그렇지 않으면 많은 시간이 소요될 수 있지만, 이 옵션은 활성 상태가 아니라고 잘못 알려줄 수도 있음), 발견 단계를 방지함.

  • -sn : 포트 스캔 없음. 정찰 단계를 완료한 후 포트를 스캔하지 않음. 비교적 은밀하며 소규모 네트워크 스캔을 허용함. 권한이 있는 경우 80번으로 ACK(-PA), 443번으로 SYN(-PS) 및 에코 요청 및 타임스탬프 요청을 보냄. 대상이 네트워크인 경우 ARP(-PR)만 사용함. 다른 옵션과 함께 사용하면 다른 옵션의 패킷만 삭제됨.

  • -PR: 핑 ARP. 네트워크의 컴퓨터를 분석할 때 기본적으로 사용되며, 핑을 사용하는 것보다 빠름. ARP 패킷을 사용하지 않으려면 --send-ip를 사용함.

  • -PS <ports>: SYN 패킷을 보내어 SYN/ACK로 응답하는 경우 열림(연결을 끝내지 않기 위해 RST로 응답), RST로 응답하는 경우 닫힘, 응답이 없는 경우 접근 불가능함. 권한이 없는 경우 자동으로 총 연결이 사용됨. 포트가 지정되지 않은 경우 80번으로 보냄.

  • -PA <ports>: 이전과 유사하지만 ACK로, 두 가지를 결합하면 더 나은 결과를 얻을 수 있음.

  • -PU <ports>: 목적은 반대로, 닫혀 있을 것으로 예상되는 포트로 보냄. 일부 방화벽은 TCP 연결만 확인함. 닫혀 있으면 포트 접근 불가능으로 응답하고, 다른 ICMP로 응답하거나 응답이 없는 경우 대상 접근 불가능으로 남김.

  • -PE, -PP, -PM : ICMP PINGS: 에코 응답, 타임스탬프 및 주소 마스크. 대상이 활성 상태인지 확인하기 위해 전송됨.

  • -PY<ports>: 기본적으로 80번으로 SCTP INIT 프로브를 보내며, INIT-ACK(열림) 또는 ABORT(닫힘) 또는 아무것도 또는 ICMP 접근 불가능(비활성)으로 응답할 수 있음.

  • -PO <protocols>: 헤더에 프로토콜이 표시됨, 기본적으로 1(ICMP), 2(IGMP) 및 4(Encap IP). ICMP, IGMP, TCP(6) 및 UDP(17) 프로토콜의 경우 프로토콜 헤더가 전송되며, 나머지에는 IP 헤더만 전송됨. 이는 헤더의 형태가 변형되어 프로토콜이 업데이트되거나 동일한 프로토콜의 응답이 도착하는지 확인하기 위해 프로토콜 접근 불가능 또는 동일한 프로토콜의 응답이 도착함.

  • -n: DNS 없음

  • -R: 항상 DNS

포트 스캔 기술

  • -sS: 연결을 완료하지 않아 추적을 남기지 않음, 사용 가능한 경우 매우 좋음(권한 필요). 기본적으로 사용됨.

  • -sT: 연결을 완료하여 추적을 남김, 확실하게 사용 가능함. 기본적으로 권한이 없음.

  • -sU: UDP를 위한 느린 스캔. 주로: DNS(53), SNMP(161,162), DHCP(67 및 68), (-sU53,161,162,67,68): 열림(응답), 닫힘(포트 접근 불가능), 필터링(다른 ICMP), 열림/필터링(아무것도). 열림/필터링의 경우, -sV는 nmap이 지원하는 버전 중 하나를 감지하고 실제 상태를 감지할 수 있도록 여러 요청을 보냄. 시간이 많이 소요됨.

  • -sY: SCTP 프로토콜이 연결을 설정하지 못하면 로그가 생성되지 않음, -PY처럼 작동함

  • -sN,-sX,-sF: Null, Fin, Xmas, 일부 방화벽을 관통하고 정보를 추출할 수 있음. SYN, RST 또는 ACK 플래그가 없는 모든 요청에 RST로 응답해야 한다는 사실에 기초함: 열림/필터링(아무것도), 닫힘(RST), 필터링(ICMP 접근 불가능). Windows, CIsco, BSDI 및 OS/400에서 신뢰할 수 없음. Unix에서는 신뢰할 수 있음.

  • -sM: Maimon 스캔: FIN 및 ACK 플래그를 보냄, 현재 BSD에서는 모두 닫힌 것으로 반환됨.

  • -sA, sW: ACK 및 Window, 방화벽을 감지하기 위해 사용되며 포트가 필터링되었는지 여부를 알 수 있음. -sW는 열림/닫힘을 구별함(열린 경우 다른 창 값으로 응답함): 열림(창 값이 0이 아닌 RST), 닫힘(창 값 = 0인 RST), 필터링(ICMP 접근 불가능 또는 아무것도). 모든 컴퓨터가 이렇게 작동하는 것은 아니므로 모두 닫힌 경우 작동하지 않음, 몇 개가 열린 경우 잘 작동하며, 많이 열려 있고 몇 개가 닫힌 경우 반대로 작동함.

  • -sI: Idle 스캔. 활성 방화벽이 있지만 특정 IP로 필터링되지 않는다는 것을 알고 있는 경우(또는 단순히 익명성을 원하는 경우) 좀비 스캐너를 사용할 수 있음(모든 포트에 대해 작동함), 가능한 좀비를 찾기 위해 ipidseq 스크립트 또는 exploit auxiliary/scanner/ip/ipidseq를 사용할 수 있음. 이 스캐너는 IP 패킷의 IPID 번호를 기반으로 함.

  • --badsum: 합계를 잘못 보내어 컴퓨터가 패킷을 버릴 수 있지만, 방화벽은 응답할 수 있음, 방화벽을 감지하는 데 사용됨.

  • -sZ: "이상한" SCTP 스캐너, 쿠키 에코 조각을 보내면 열린 경우 삭제되거나 닫힌 경우 ABORT로 응답해야 함. init을 통과하지 못하는 방화벽을 통과할 수 있지만, 필터링된 것과 열린 것을 구별하지 못함.

  • -sO: 프로토콜 IP 스캔. 때로는 프로토콜을 식별할 수 없는 잘못된 및 빈 헤더를 보냄. ICMP 접근 불가능 프로토콜이 도착하면 닫힘, 접근 불가능한 포트가 도착하면 열림, 다른 오류가 도착하면 필터링, 아무것도 도착하지 않으면 열림|필터링.

  • -b <server>: FTPhost--> 다른 호스트에서 호스트를 스캔하는 데 사용됨, 다른 기계의 FTP에 연결하여 해당 기계에서 다른 기계로 파일을 보내도록 요청함, 응답에 따라 해당 포트가 열렸는지 여부를 알 수 있음. [<user>:<password>@]<server>[:<port>] 대부분의 FTP 서버는 더 이상 이 작업을 허용하지 않으므로 실용적인 용도가 거의 없음.

분석 중심

-p: 스캔할 포트를 지정하는 데 사용됨. 65335개를 선택하려면: -p- 또는 -p all. Nmap은 인기에 따라 내부적으로 분류됨. 기본적으로 상위 1000개를 사용함. -F (빠른 스캔)으로 상위 100개를 분석함. **--top-ports <number>**로 해당 수의 상위 포트를 분석함 (1부터 65335까지). 포트를 무작위로 확인하므로 이를 방지하려면 -r을 사용함. 또한 포트를 선택할 수 있음: 20-30,80,443,1024- 이는 1024 이후를 확인함. 또한 프로토콜별로 포트를 그룹화할 수 있음: U:53,T:21-25,80,139,S:9. 또한 nmap의 인기 있는 포트 범위 내에서 범위를 선택할 수 있음: -p [-1024] nmap-services에 포함된 1024까지 분석함. **--port-ratio <ratio>**로 0에서 1 사이의 비율로 가장 일반적인 포트를 분석함

-sV 버전 스캔, 강도를 0에서 9로 조절할 수 있으며 기본값은 7임.

--version-intensity <number> 강도를 조절하여 더 낮은 값은 가장 가능성이 높은 프로브만 보내고 모두 보내지 않음, 이를 통해 UDP 스캔 시간을 상당히 단축할 수 있음

-O OS 감지

--osscan-limit 호스트를 올바르게 스캔하려면 적어도 하나의 열린 포트와 하나의 닫힌 포트가 있어야 하며, 이 조건이 충족되지 않고 이 옵션을 설정한 경우 OS 예측을 시도하지 않음(시간을 절약함) --osscan-guess 운영 체제 감지가 완벽하지 않을 때 더 많은 노력을 기울입니다.

스크립트

--script <filename>|<category>|<directory>|<expression>[,...]

기본적으로 -sC 또는 --script=default을 사용하여 사용 가능한 스크립트를 실행할 수 있습니다.

사용 가능한 유형: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, and vuln

  • Auth: 인증에 사용 가능한 모든 스크립트 실행

  • Default: 도구의 기본 스크립트 실행

  • Discovery: 대상 또는 피해자의 정보 검색

  • External: 외부 리소스 사용을 위한 스크립트

  • Intrusive: 피해자나 대상에 대해 침입적으로 간주되는 스크립트 사용

  • Malware: 악성 코드나 백도어로 인한 열린 연결 확인

  • Safe: 침입적이지 않은 스크립트 실행

  • Vuln: 가장 잘 알려진 취약점 발견

  • All: 가능한 모든 NSE 확장을 가진 스크립트 실행

스크립트 검색:

nmap --script-help="http-*" -> http-로 시작하는 것들

nmap --script-help="not intrusive" -> 해당하지 않는 모든 것들

nmap --script-help="default or safe" -> 하나 또는 둘 중 하나 또는 둘 다에 속하는 것들

nmap --script-help="default and safe" --> 둘 다에 속하는 것들

nmap --script-help="(default or safe or intrusive) and not http-*"

--script-args <n1>=<v1>,<n2>={<n3>=<v3>},<n4>={<v4>,<v5>}

--script-args-file <filename>

--script-help <filename>|<category>|<directory>|<expression>|all[,...]

--script-trace ---> 스크립트 진행 상황 정보 제공

--script-updatedb

스크립트 사용 시: namp --script Script_Name target --> 스크립트와 스캐너가 실행되며, 스캐너 옵션도 추가할 수 있습니다. **“safe=1”**을 추가하여 안전한 스크립트만 실행할 수 있습니다.

시간 제어

Nmap은 초, 분, ms로 시간을 조정할 수 있습니다: --host-timeout arguments 900000ms, 900, 900s, and 15m 모두 동일한 작업을 수행합니다.

Nmap은 총 호스트 수를 그룹으로 나누어 그룹을 블록 단위로 분석하므로 모든 그룹이 분석될 때까지 다음 블록으로 넘어가지 않습니다 (사용자도 블록이 분석될 때까지 업데이트를 받지 않음). 이러한 방식으로 nmap은 대규모 그룹을 사용하는 것이 더 효율적입니다. 기본적으로 클래스 C에서 256을 사용합니다.

다음과 같이 변경할 수 있습니다**--min-hostgroup** <numhosts>; --max-hostgroup <numhosts> (병렬 스캔 그룹 크기 조정)

병렬로 실행되는 스캐너 수를 제어할 수 있지만 권장하지 않습니다 (nmap은 네트워크 상태에 따라 자동 제어를 포함하고 있습니다): --min-parallelism <numprobes>; --max-parallelism <numprobes>

rtt 타임아웃을 조정할 수 있지만 대개 필요하지 않습니다: --min-rtt-timeout <time>, --max-rtt-timeout <time>, --initial-rtt-timeout <time>

시도 횟수를 조정할 수 있습니다:--max-retries <numtries>

호스트의 스캔 시간을 조정할 수 있습니다: --host-timeout <time>

각 테스트 사이의 시간을 느리게 만들기 위해 스캔 지연 시간을 조정할 수 있습니다: --scan-delay <time>; --max-scan-delay <time>

초당 패킷 수를 조정할 수 있습니다: --min-rate <number>; --max-rate <number>

많은 포트가 필터링되거나 닫혀 있어 응답이 오래 걸릴 수 있습니다. 열린 포트만 관심이 있는 경우, --defeat-rst-ratelimit를 사용하여 더 빨리 할 수 있습니다.

nmap의 공격적인 정도를 정의하기 위해: -T paranoid|sneaky|polite|normal|aggressive|insane

-T (0-1)

-T0 --> 한 번에 1개의 포트만 스캔하고 다음까지 5분 대기

-T1 및 T2 --> 매우 유사하지만 각 테스트 사이에 15초와 0.4초 대기

-T3 --> 기본 동작, 병렬로 실행

-T4 --> --max-rtt-timeout 1250ms --min-rtt-timeout 100ms --initial-rtt-timeout 500ms --max-retries 6 --max-scan-delay 10ms

-T5 --> --max-rtt-timeout 300ms --min-rtt-timeout 50ms --initial-rtt-timeout 250ms --max-retries 2 --host-timeout 15m --max-scan-delay 5ms

방화벽/IDS

포트를 통과시키지 않고 패킷을 분석합니다.

-f 패킷을 단편화하며, 기본적으로 헤더 이후 8바이트로 단편화하며, 이 크기를 지정하려면 ..mtu를 사용합니다 (-f를 사용하지 않음), 오프셋은 8의 배수여야 합니다. 버전 스캐너 및 스크립트는 단편화를 지원하지 않습니다

-D decoy1,decoy2,ME Nmap은 다른 IP 주소를 송신지로 사용하여 스캐너를 보냅니다. ME를 목록에 포함하면 nmap은 해당 위치에 당신을 숨깁니다. 완전히 가려지도록 하려면 당신 앞에 5개 또는 6개를 더 추가하는 것이 좋습니다. RND:<number>를 사용하여 무작위 IP를 생성할 수 있습니다. TCP 연결 없이 버전 탐지기와 함께 작동하지 않습니다. 네트워크 내에 있을 때 활성 상태인 IP를 사용하는 것이 좋습니다. 그렇지 않으면 당신이 유일하게 활성 상태임을 쉽게 알아낼 수 있습니다.

무작위 IP를 사용하려면: nmap-D RND: 10 Target_IP

-S IP Nmap이 당신의 IP 주소를 인식하지 못할 때 사용합니다. 또한 다른 대상이 스캔 중인 것처럼 보이도록 할 수 있습니다.

-e <interface> 인터페이스 선택

많은 관리자들은 모든 것이 올바르게 작동하도록 입력 포트를 열어둡니다. 이는 DNS 또는 FTP 포트일 수 있습니다... 이 취약성을 찾기 위해 nmap은 다음을 포함합니다: --source-port <portnumber>;-g <portnumber> 동일한 작업

--data <hex string> 16진수 텍스트를 보내기 위해: --data 0xdeadbeef and --data \xCA\xFE\x09

--data-string <string> 일반 텍스트를 보내기 위해: --data-string "Scan conducted by Security Ops, extension 7192"

--data-length <number> Nmap은 헤더만 보내며, 여기에 무작위로 생성된 바이트 수를 추가합니다.

IP 패킷을 완전히 구성하려면 --ip-options 사용

보낸 패킷의 옵션을 보려면 --packet-trace 지정. Nmap을 사용하여 IP 옵션을 사용하는 방법 및 예제에 대한 자세한 내용은 http://seclists.org/nmap-dev/2006/q3/52를 참조하십시오.

--ttl <value>

--randomize-hosts 공격이 덜 눈에 띄도록

--spoof-mac <MAC address, prefix, or vendor name> MAC 주소 변경을 위해 예: Apple, 0, 01:02:03:04:05:06, deadbeefcafe, 0020F2, and Cisco --proxies <쉼표로 구분된 프록시 URL 목록> 프록시를 사용하는 경우, 때로는 프록시가 nmap이 원하는만큼 많은 연결을 유지하지 못할 수 있으므로 병렬성을 조정해야 합니다: --max-parallelism

-sP 우리가 있는 네트워크에서 호스트를 발견하기 위해 ARP를 사용합니다.

많은 관리자들이 특정 포트(예: 20, 53 및 67)에서 오는 모든 패킷을 통과시키는 방화벽 규칙을 만듭니다. nmap에게 이러한 포트에서 패킷을 보내도록 지시할 수 있습니다: nmap --source-port 53 Ip

출력

-oN file 일반 출력

-oX file XML 출력

-oS file 스크립트 키디 출력

-oG file grepable 출력

-oA file -oS를 제외한 모든 것

-v level 상세도

-d level 디버깅

--reason 호스트 및 상태의 이유

--stats-every time 주기적으로 진행 상황을 알려줍니다.

--packet-trace 보낸 패킷을 확인할 수 있으며 --version-trace 또는 --script-trace와 같은 필터를 지정할 수 있습니다.

--open 열린 포트, 열린|필터링된 포트 및 필터링되지 않은 포트를 표시합니다.

--resume file 요약을 생성합니다.

기타

-6 IPv6를 허용합니다.

-A -O -sV -sC --traceroute와 동일합니다.

실행 시간

nmap을 실행하는 동안 옵션을 변경할 수 있습니다:

v / V 상세도 레벨 증가 / 감소

d / D 디버깅 레벨 증가 / 감소

p / P 패킷 추적 켜기 / 끄기

? 실행 중 상호 작용 도움말 화면 출력

Vulscan

nmap 스크립트로, 오프라인 데이터베이스(다른 중요한 데이터베이스에서 다운로드한)에서 얻은 서비스 버전을 확인하고 가능한 취약점을 반환합니다.

사용하는 데이터베이스:

  1. Securitytracker.csv | http://www.securitytracker.com

Nmap 폴더에 다운로드하고 설치하려면:

wget http://www.computec.ch/projekte/vulscan/download/nmap_nse_vulscan-2.0.tar.gz && tar -czvf nmap_nse_vulscan-2.0.tar.gz vulscan/ && sudo cp -r vulscan/ /usr/share/nmap/scripts/

또한 데이터베이스 패키지를 다운로드하고 /usr/share/nmap/scripts/vulscan/에 추가해야 합니다.

사용법:

모두 사용: sudo nmap -sV --script=vulscan HOST_A_ESCANEAR

특정 데이터베이스 사용: sudo nmap -sV --script=vulscan --script-args vulscandb=cve.csv HOST_A_ESCANEAR

Nmap 서비스 스캔 속도 향상 x16

이 게시물에 따르면, **/usr/share/nmap/nmap-service-probes**의 모든 totalwaitms 값을 300으로 수정하여 nmap 서비스 분석 속도를 높일 수 있습니다. 또한, 특별히 정의되지 않은 **servicewaitms**를 사용하는 프로브는 기본값인 **5000**을 사용합니다. 따라서 각 프로브에 값을 추가하거나 **service_scan.h**에서 기본값을 변경하여 nmap을 컴파일할 수 있습니다.

/usr/share/nmap/nmap-service-probes 파일에서 totalwaitmstcpwrappedms 값을 전혀 변경하고 싶지 않은 경우, nmap-service-probes 파일의 구문 분석 코드를 수정하여 이러한 값을 완전히 무시할 수 있습니다.

htARTE (HackTricks AWS Red Team Expert)로부터 제로에서 영웅까지 AWS 해킹 배우기

HackTricks를 지원하는 다른 방법:

Last updated