命令很多,试试Ctrl+f,查找吧---------Nmap详细的命令解释
我只是简化了这些命令,如果不懂得的话,点上面的链接
Nmap是一款多么牛逼的扫描器,我就不再此废话了。对照下面的命令用法吧。
一,扫描目标ip
-iL <文件名>--扫描文件里所有的ip
-iR <数量>--随机选择一定数量的目标
--exclude <主机名/地址>--不包含的主机
--excludefile <文件名>--不包含的主机的列表文件
二,扫描ip后,主机发现
-sL(列表扫描)--列出给出目标的具体内容,默认会对地址进行反向解析,显示主机名。
-sn(不进行端口扫描)
-Pn(无ping)--跳过主机发现阶段,把每个都IP当成存活主机。
-P0 <协议号列表>(IP 协议 ping)---一个较新的主机发现选项是IP协议ping,它将IP数据包发送到IP报头中指定的协议号。
-PS<端口列表>(TCP SYN Ping)---可以添加不同的端口,如,-PS80,23,445,113
-PA<端口列表>(TCP ACK Ping)---同上
-PU <端口列表>(UDP Ping)同上
-PR(ARP Ping)同上
--disable-arp-ping (No ARP or ND Ping)----不使用ARP发现和ICMPv6邻居发现
-PY <端口列表> (SCTP INIT Ping)
-PE; -PP; -PM(ICMP Ping Types)
-n 不域名解析
-R 所有IP做反向域名解析
--system-dns 使用本机的dns服务器
--dns-servers(使用指定的dns服务器)
如果指定dns服务器无法使用,则会转向使用本机配置的dns服务器
三,端口状态
以下不是命令,但是要判断端口的状态,以便于后续的操作
open(开放的)
应用程序正在该端口接收TCP 连接或者UDP报文。
closed(关闭的)
关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作出响应), 但没有应用程序在其上监听。
filtered(被过滤的)
由于包过滤阻止探测报文到达端口, Nmap无法确定该端口是否开放。
unfiltered(未被过滤的)
未被过滤状态意味着端口可访问,但Nmap不能确定它是开放还是关闭。
open|filtered(开放或者被过滤的)
当无法确定端口是开放还是被过滤的,Nmap就把该端口划分成 这种状态。开放的端口不响应就是一个例子。
closed|filtered(关闭或者被过滤的)
该状态用于Nmap不能确定端口是关闭的还是被过滤的。 它只可能出现在IPID Idle扫描中
四,端口扫描
-sS(TCP SYN扫描)--半开放扫描
-sT(TCP connect()扫描)--Nmap通过创建connect() 系统调用要求操作系统和目标机以及端口建立连接,而不像其它扫描类型直接发送原始报文。
-sU(UDP 扫描)
-sY(SCTP INIT scan)--扫描类似TCP SYN扫描
-sN; -sF; -sX (TCP Null,FIN,Xmas扫描)
-sA (TCP ACK扫描)--它用于发现防火墙规则,确定它们是有状态的还是无状态的,哪些端口是被过滤的
-sW(TCP窗口扫描)
-sM(TCP Maimon扫描)
--scanflags (定制的TCP扫描)
-sZ(SCTP COOKIE ECHO扫描)
--sI <僵尸主机地址:端口>(idlescan)
-sO(IP协议扫描)
-b(FTP弹跳扫描)
五,端口扫描设置
-p <端口号,端口列表>
--exclede-ports <端口列表>(排除的端口)
-F(快速扫描)
-r(顺序扫描端口)
--port-ratio---扫描nmap-services中给出的目标的一定比例,这个值在1.0-0.0之间。
--top-ports--扫描nmap-services中的前多少个端口
六,服务和版本扫描
-sV(版本扫描)---扫描服务版本,也可以用-A同时进行操作系统探测和版本扫描。
--allports(版本扫描时,不排除任何端口)
--version-intensity <强度>(版本扫描强度)---强度在1到9之间,一般来说,强度越大,服务越有可能被正确识别
--version-light----相当于 --version-intensity 2
--vension-all----相当于 --version-intensity 9
--version-trace---打印出正在进行的版本扫描的详细信息
七、操作系统探测
-O (启用操作系统检测)-----也可以使用-A来同时启用操作系统检测和版本扫描。
--osscan-limit(只对至少知晓一个端口开放或者关闭的主机进行操作系统探测)
--osscan-guess;--fuzzy(---------------无法确定操作系统类型的时候,默认进行推测。但是使用这两项,会让猜测更加准确。)
--max-os-tries(操作系统识别重试次数)
八、扫描性能设置
--min-hostgroup; --max-hostgroup(调整并行扫描组的大小)
--min-parallelism; --max-parallelism(调整探测报文的并行度)
--max-parallelism选项通常设为1,以防止Nmap在同一时间 向主机发送多个探测报文,和选择--scan-delay同时使用非常有用。
--min-rtt-timeout, --max-rtt-timeout, --initial-rtt-timeout(调整探测报文超时)
--host-timeout(放弃低速目标主机)
--scan-delay; --max-scan-delay(调整探测报文的时间间隔)
-T(设置时间模板)
--max-retries <次数>---没有响应后的重试次数
--script-timeout(设置脚本超时时间)
预防脚本的bug导致影响效率
--min-rate; --max-rate(发包速度控制)
最少每秒发多少,最多每秒发多少。如果0.1的话就是10秒一个包的意思
--defeat-rst-ratelimit
忽略系统reset包的速率限制
--defeat-icmp-ratelimit
忽略系统ICMP错误消息速率限制
--nsock-engine epoll|kqueue|poll|select
选择系统IO模型,nmap -V可以查看支持哪些
九、防火墙绕过/IDS躲避
-f (报文分段); --mtu (使用指定的MTU)
-D <肉鸡1,肉鸡2,...>(结合肉鸡干扰进行扫描)
-S(源地址欺骗)
-e(指定使用的网络接口)
--source-port; -g(源端口欺骗)
--date可以用这样的格式指定值 --data 0xdeadbeef --data \xCA\xFE\x09如果指定0x00ff 这个的数字,将不会做字节序转换。确保你的字节序,对方可以接受
--data-string
例如,--data-string "Scan conducted by Security Ops, extension 7192" or --data-string "Ph34r my l33t skills"
--data-length(发送报文时 附加随机数据)
这个选项告诉Nmap在发送的报文上 附加指定数量的随机字节。操作系统检测(-O)包不受影响。
--ip-options; --ip-options(Send packets with specified ip options)
指定IP头
--proxies
设置代理,支持http代理和socks4代理
--badsum(让nmap使用一个伪造的不合法的checksum)
这样的数据包一般都会丢弃,如果收到任何回复,这个回复一定来自防火墙
--adler32(使用弃用的Adler32来代替CRC32C做SCTP的checksum)
这是为了从旧版的SCTP协议设备获得响应
--ttl(设置IP time-to-live域)
设置IPv4报文的time-to-live域为指定的值。
--randomize-hosts (对目标主机的顺序随机排列)
告诉Nmap在扫描主机前对每个组中的主机随机排列,最多可达 8096个主机。
--spoof-mac(MAC地址哄骗)
十、输出
-oN(标准输出)
将结果输入制定文件
-oX(XML输出)
将XML输出写入指定文件
-oS(ScRipT KIdd|3 oUTpuT)
脚本小子输出类似于交互工具输出,这是一个事后处理,适合于 'l33t HaXXorZ, 由于原来全都是大写的Nmap输出。
-oG(Grep输出)
-oA(输出至所有格式)
为使用方便,利用-oA选项 可将扫描结果以标准格式、XML格式和Grep格式一次性输出。分别存放在.nmap,.xml和.gnmap文件中。也可以在文件名前 指定目录名,如在UNIX中,使用~/nmaplogs/foocorp/, 在Window中,使用c:\hacking\sco on Windows。
-v(提高输出信息的详细程度)
-d [level](设置调试级别)
--packet-trace(跟踪发出的报文)
-iflist(列举端口和路由)
--append-out(在输出文件住追加)
但对于XML(-oX)扫描输出 文件无效,无法正常解析,需要手工修改。
--resume(继续中断的扫描)
如果标准扫描 (-oN)或Grep扫描(-oG)日志 被保留,用户可以要求Nmap恢复终止的扫描,只需要简单地使用选项 --resume并说明标准/Grep扫描输出文件,不允许 使用其它参数,Nmap会解析输出文件并使用原来的格式输出。使用方式 如nmap --resume。Nmap将把新地结果添加到文件中,这种方式不支持XML输出格式,原因是将两次运行结果合并至一个XML文件比较困难。
--stylesheet(设置XSL样式表,转换XML输出)
--webxml
--stylesheethttps://nmap.org/svn/docs/nmap.xsl的简写。
--no-stylesheet (忽略XML声明的XSL样式表)
--open
只显示开放或者可能开放的端口
--stats-every(周期性的输出统计数据)
--stats-every 10s 每10秒输出一次,,这个输出会被输出到标准输出,和XML文件
--reason(打印主机和端口状态的原因)
十一、其他选项
-6(启用IPv6扫描)
-A(强力扫描模式)
--datadir <文件夹名称> (说明nmap用户数据文件的位置)
--send-ip (在原IP层发送)
要求Nmap通过原IP套接字发送报文,而不是低层的以 太网帧。这是--send-eth选项的补充。
--send-eth
使用raw ethernet包来发包
--privileged (假定用户具有全部权限)
--unprivileged(假定用户没有特权)
--interactive (在交互模式中启动)
--release-memory (退出后namp自己释放内存)
--servicedb
nmap-service文件的路径
--versiondb
nmap-service-probes文件路径
-V;--version (查看版本)
-h;--help(简要的使用介绍)
十二、NSE脚本引擎
https://nmap.org/nsedoc/具体脚本的使用手册
--script <脚本名>
脚本名字前面加 + 会让脚本强制执行指定名字的时候可以使用shell风格的通配符"*"。
nmap --script "http-*"
加载所有的名字以http-开头的脚本,必须用引号包起来,让通配符不受shell影响。
nmap --script "not intrusive"
加载所有非入侵类型的脚本
nmap --script "default or safe"
在功能上等同于nmap --script "default,safe"加载了所有默认类或者安全类,或者是两者都包含的。
nmap --script "default and safe"
加载在同属于两者的脚本
nmap --script "(default or safe or intrusive) and not http-*"
加载属于默认类或者安全类或者入侵类的但是名字开头不是http-的脚本
--script-args=,={=},={,}
指定脚本参数,里面不能有‘{’, ‘}’, ‘=’, or ‘,’,如果要用就用\转义
--script-args-file
从一个文件获取脚本参数
--script-trace
打印出脚本执行的具体信息
--script-updatedb