Nmap Summary (ESP)
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
<ip>,<net/mask>
: 직접 IP를 지정합니다.
-iL <ips_file>
: list_IPs
-iR <number>
: 랜덤 IP의 수, --exclude <Ips>
또는 --excludefile <file>
로 가능한 IP를 제외할 수 있습니다.
기본적으로 Nmap은 다음으로 구성된 탐색 단계를 시작합니다: -PA80 -PS443 -PE -PP
-sL
: 비침습적이며, 이름을 해결하기 위해 DNS 요청을 하여 대상을 나열합니다. 예를 들어 www.prueba.es/24의 모든 IP가 우리의 대상인지 알기 위해 유용합니다.
-Pn
: Ping 없음. 모든 IP가 활성화되어 있다고 알고 있다면 유용합니다(그렇지 않으면 많은 시간을 잃을 수 있지만, 이 옵션은 비활성이라고 잘못 판단할 수 있습니다), 탐색 단계를 방지합니다.
-sn
: 포트 스캔 없음. 정찰 단계를 완료한 후 포트를 스캔하지 않습니다. 상대적으로 은밀하며, 소규모 네트워크 스캔을 허용합니다. 권한이 있는 경우 80에 ACK(-PA), 443에 SYN(-PS) 및 에코 요청과 타임스탬프 요청을 보냅니다. 권한이 없는 경우 항상 연결을 완료합니다. 대상이 네트워크인 경우 ARP(-PR)만 사용합니다. 다른 옵션과 함께 사용하면 다른 옵션의 패킷만 드롭됩니다.
-PR
: Ping ARP. 네트워크의 컴퓨터를 분석할 때 기본적으로 사용되며, ping을 사용하는 것보다 빠릅니다. 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), 닫힘 (RST 창 = 0), 필터링 (ICMP 도달 불가 또는 아무것도). 모든 컴퓨터가 이렇게 작동하는 것은 아니므로, 모두 닫혀 있다면 작동하지 않으며, 몇 개가 열려 있다면 잘 작동하고, 많은 것이 열리고 몇 개가 닫혀 있다면 반대로 작동합니다.
-sI
: Idle 스캔. 활성 방화벽이 있지만 특정 IP에 대해 필터링하지 않는 것을 알고 있거나(또는 단순히 익명성을 원할 때) 좀비 스캐너를 사용할 수 있습니다(모든 포트에 대해 작동). 가능한 좀비를 찾기 위해 scrpit 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 호스트를 잘 스캔하려면 최소한 1개의 열린 포트와 1개의 닫힌 포트가 필요합니다. 이 조건이 충족되지 않으면 OS 예측을 시도하지 않으며(시간 절약).
--osscan-guess OS 감지가 완벽하지 않을 때 더 많은 노력을 기울입니다.
Scripts
--script <filename>|<category>|<directory>|<expression>[,...]
기본적으로 사용하려면 -sC 또는 --script=default로 충분합니다.
유형은 다음과 같습니다: auth, broadcast, default, discovery, dos, exploit, external, fuzzer, intrusive, malware, safe, version, and vuln
Auth: 인증을 위한 모든 _scripts_를 실행합니다.
Default: 도구의 기본 _scripts_를 실행합니다.
Discovery: target 또는 희생자로부터 정보를 수집합니다.
External: 외부 리소스를 사용하는 _script_입니다.
Intrusive: 희생자 또는 _target_에 대해 침습적인 것으로 간주되는 _scripts_를 사용합니다.
Malware: 악성 코드 또는 backdoors (백도어)에 의해 열린 연결이 있는지 확인합니다.
Safe: 비침습적인 _scripts_를 실행합니다.
Vuln: 가장 잘 알려진 취약점을 발견합니다.
All: 사용 가능한 모든 NSE 확장 _scripts_를 실행합니다.
스크립트를 검색하려면:
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 스크립트_이름 목표 --> 스크립트를 입력하면 스크립트와 스캐너가 모두 실행되므로 스캐너 옵션도 추가할 수 있습니다. **“safe=1”**을 추가하여 안전한 것만 실행되도록 할 수 있습니다.
Control tiempo
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
Firewall/IDS
포트를 차단하고 패킷을 분석합니다.
-f 패킷을 분할하며, 기본적으로 헤더 이후 8바이트로 분할합니다. 이 크기를 지정하려면 ..mtu를 사용합니다(이 경우 -f를 사용하지 마세요). 오프셋은 8의 배수여야 합니다. 버전 스캐너 및 스크립트는 분할을 지원하지 않습니다.
-D decoy1,decoy2,ME Nmap은 다른 IP 주소를 출발지로 하여 스캐너를 전송하여 자신을 숨깁니다. 목록에 ME를 추가하면 Nmap이 그곳에 위치하게 되며, 자신보다 5개 또는 6개를 앞에 두는 것이 좋습니다. RND:<number>로 무작위 IP를 생성할 수 있습니다. <number>의 무작위 IP를 생성합니다. TCP 연결이 없는 버전 감지기와는 작동하지 않습니다. 네트워크 내에 있다면 활성 IP를 사용하는 것이 좋습니다. 그렇지 않으면 당신이 유일하게 활성화된 것임을 쉽게 알아낼 수 있습니다.
무작위 IP를 사용하려면: nmap-D RND: 10 Ip_목표
-S IP Nmap이 당신의 IP 주소를 감지하지 못할 때 이를 제공해야 합니다. 또한 다른 목표가 스캔하고 있다고 생각하게 만들 수 있습니다.
-e <interface> 인터페이스를 선택합니다.
많은 관리자들은 모든 것이 제대로 작동하도록 하기 위해 입력 포트를 열어두며, 다른 해결책을 찾는 것보다 더 쉽습니다. 이러한 포트는 DNS 또는 FTP 포트일 수 있습니다... 이 취약점을 찾기 위해 Nmap은 --source-port <portnumber>;-g _<portnumber>_을 포함합니다. 동일합니다.
--data <hex string> 16진수 텍스트를 전송합니다: --data 0xdeadbeef 및 --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, 및 Cisco
--proxies <Comma-separated list of proxy URLs> 프록시를 사용합니다. 때때로 프록시는 Nmap이 원하는 만큼 많은 연결을 유지하지 않으므로 병렬성을 수정해야 할 수 있습니다: --max-parallelism
-sP ARP를 통해 우리가 있는 네트워크에서 호스트를 발견합니다.
많은 관리자는 특정 포트(예: 20,53 및 67)에서 오는 모든 패킷을 허용하는 방화벽 규칙을 생성합니다. Nmap에 이러한 포트에서 패킷을 보내도록 지시할 수 있습니다: nmap --source-port 53 Ip
Salidas
-oN file 일반 출력
-oX file XML 출력
-oS file 스크립트 키디 출력
-oG file grep 가능한 출력
-oA file -oS를 제외한 모든 출력
-v level 상세도
-d level 디버깅
--reason 호스트 및 상태의 이유
--stats-every time 해당 시간마다 진행 상황을 알려줍니다.
--packet-trace 어떤 패킷이 나가는지 보기 위해 --version-trace 또는 --script-trace와 같은 필터를 지정할 수 있습니다.
--open 열린 포트, 열린|필터링 및 필터링되지 않은 포트를 표시합니다.
--resume file 요약을 출력합니다.
Miscelanea
-6 IPv6 허용
-A -O -sV -sC --traceroute와 동일합니다.
Run time
Nmap이 실행되는 동안 옵션을 변경할 수 있습니다:
v / V 상세도 수준 증가 / 감소
d / D 디버깅 수준 증가 / 감소
p / P 패킷 추적 켜기 / 끄기
? 런타임 상호작용 도움말 화면 인쇄
Vulscan
Nmap 스크립트로, 오프라인 데이터베이스에서 얻은 서비스 버전을 확인하고 가능한 취약점을 반환합니다.
사용하는 데이터베이스는 다음과 같습니다:
Scipvuldb.csv | http://www.scip.ch/en/?vuldb
Cve.csv | http://cve.mitre.org
Osvdb.csv | http://www.osvdb.org
Securityfocus.csv | http://www.securityfocus.com/bid/
Securitytracker.csv | http://www.securitytracker.com
Xforce.csv | http://xforce.iss.net
Exploitdb.csv | http://www.exploit-db.com
Openvas.csv | http://www.openvas.org
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
이 게시물에 따르면 totalwaitms
값을 300으로, tcpwrappedms
값을 200으로 수정하여 Nmap 서비스 분석 속도를 높일 수 있습니다.
또한, 특정하게 정의된 **servicewaitms
**가 없는 프로브는 기본값으로 **5000
**을 사용합니다. 따라서 각 프로브에 값을 추가하거나, service_scan.h에서 기본값을 변경하여 Nmap을 직접 컴파일할 수 있습니다.
totalwaitms
및 tcpwrappedms
값을 전혀 변경하고 싶지 않다면, nmap-service-probes
파일의 파싱 코드를 수정하여 이 값들이 완전히 무시되도록 할 수 있습니다.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)