21 KiB
Nmap 요약 (ESP)
htARTE (HackTricks AWS Red Team Expert)를 통해 제로부터 영웅이 될 때까지 AWS 해킹을 배우세요!
HackTricks를 지원하는 다른 방법:
- 회사가 HackTricks에 광고되길 원하거나 PDF로 HackTricks를 다운로드하고 싶다면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구매하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 Discord 그룹 또는 텔레그램 그룹에 가입하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- 해킹 요령을 공유하려면 HackTricks 및 HackTricks Cloud github 저장소에 PR을 제출하세요.
{% embed url="https://websec.nl/" %}
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) 및 echo 요청 및 타임스탬프 요청을 보냅니다. 대상이 네트워크인 경우 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: echo replay, timestamp 및 addresmask. 대상이 활성인지 확인하기 위해 전송됩니다.-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는 열림/닫힘을 구별합니다. 열린 포트는 창 값이 다른 RST로 응답하며, 닫힌 포트는 창 = 0인 RST로 응답하며, 필터링된 포트는 ICMP 접근 불가능 또는 아무것도 응답합니다. 모든 컴퓨터가 이렇게 작동하는 것은 아니므로 모두 닫힌 경우 작동하지 않으며, 일부 열린 경우 잘 작동하며, 많이 열린 경우와 일부 닫힌 경우는 반대로 작동합니다.-sI
: Idle scan. 활성 방화벽이 있지만 특정 IP로 필터링되지 않는다는 것을 알고 있는 경우(또는 익명성을 원하는 경우) 좀비 스캐너를 사용할 수 있습니다(모든 포트에 대해 작동). 가능한 좀비를 찾기 위해 ipidseq 스크립트 또는 exploit auxiliary/scanner/ip/ipidseq를 사용할 수 있습니다. 이 스캐너는 IP 패킷의 IPID 번호를 기반으로 합니다.--badsum
: 잘못된 합계를 보냅니다. 컴퓨터는 패킷을 버릴 수 있지만 방화벽은 응답할 수 있습니다. 방화벽을 감지하는 데 사용됩니다.-sZ
: "이상한" SCTP 스캐너로, 쿠키 에코 조각을 보내면 열린 경우 삭제되거나 닫힌 경우 ABORT로 응답해야 합니다. 초기화가 통과하지 못하는 방화벽을 통과할 수 있지만, 필터링된 상태와 열린 상태를 구별하지 못합니다.-sO
: 프로토콜 IP 스캔. 때로는 프로토콜을 식별할 수 없는 잘못된 및 빈 헤더를 보냅니다. ICMP 접근 불가능 프로토콜이 도착하면 닫힌 것이고, 접근 불가능한 포트가 도착하면 열린 것이며, 다른 오류가 도착하면 필터링되며, 아무것도 도착하지 않으면 열림|필터링입니다.-b <server>
: FTPhost--> 다른 호스트에서 호스트를 스캔하는 데 사용됩니다. 다른 기계의 FTP에 연결하여 해당 기계에서 스캔하려는 포트로 파일을 보내도록 요청합니다. 응답에 따라 해당 포트가 열려 있는지 여부를 알 수 있습니다. [<user>:<password>@]<server>[:<port>] 대부분의 FTP 서버는 더 이상 이 작업을 허용하지 않으므로 실용적인 용도가 거의 없습니다.
분석 중심
-p: 스캔할 포트를 지정하는 데 사용됩니다. 65335개를 선택하려면 -p- 또는 -p all을 사용합니다. Nmap은 인기에 따라 내부적으로 분류됩니다. 기본적으로 상위 1000개를 사용합니다. -F (빠른 스캔)으로 상위 100개를 분석합니다. **--top-ports <numero>**로 해당 수의 상위 포트를 분석합니다(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 <numero> 강도를 조절하여 더 낮은 값은 가장 가능성이 높은 프로브만 보내고 모두 보내지 않습니다. 이를 통해 UDP 스캔 시간을 크게 단축할 수 있습니다.
-O 운영 체제 감지
--osscan-limit 호스트를 올바르게 스캔하려면 적어도 하나의 포트가 열려 있고 다른 하나가 닫혀 있어야 합니다. 이 조건이 충족되지 않고 이 옵션을 설정한 경우 OS 예측을 시도하지 않습니다(시간을 절약함) --osscan-guess OS 감지가 완벽하지 않을 때 추가 노력을 기울입니다.
스크립트
--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
스크립트 사용 시: nmap --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 and 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 주소를 감지하지 못할 때 해당 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 <Comma-separated list of proxy URLs> 프록시를 사용하려면 때때로 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 스크립트로, 오프라인 데이터베이스(중요한 다른 데이터베이스에서 다운로드한)에서 얻은 서비스 버전을 확인하고 가능한 취약점을 반환합니다.
사용하는 데이터베이스:
- 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
Nmap 서비스 스캔 속도 향상 x16
이 게시물에 따르면 **/usr/share/nmap/nmap-service-probes
**의 모든 totalwaitms
값을 300으로 수정하여 nmap 서비스 분석 속도를 높일 수 있습니다. 또한, 특별히 정의되지 않은 **servicewaitms
**를 사용하는 프로브는 기본값인 **5000
**을 사용합니다. 따라서 각 프로브에 값을 추가하거나 **service_scan.h
**에서 기본값을 변경하여 nmap을 컴파일할 수 있습니다.
/usr/share/nmap/nmap-service-probes
파일에서 totalwaitms
및 tcpwrappedms
값을 전혀 변경하고 싶지 않다면, nmap-service-probes
파일의 이러한 값들이 완전히 무시되도록 파싱 코드를 편집할 수 있습니다.
{% embed url="https://websec.nl/" %}
제로부터 AWS 해킹을 전문가로 배우세요 htARTE (HackTricks AWS Red Team Expert)와 함께!
HackTricks를 지원하는 다른 방법:
- 회사를 HackTricks에서 광고하거나 PDF로 다운로드하려면 구독 요금제를 확인하세요!
- 공식 PEASS & HackTricks 스왜그를 구입하세요
- The PEASS Family를 발견하세요, 당사의 독점 NFTs 컬렉션
- 💬 디스코드 그룹에 가입하거나 텔레그램 그룹에 가입하거나 트위터 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 저장소에 PR을 제출하여 해킹 트릭을 공유하세요.