Nmap原理-01选项介绍

Nmap原理-01选项介绍

1.Nmap原理图

  Nmap包含四项基本功能:主机发现/端口扫描/版本探测/操作系统探测。这四项功能之间存在大致的依赖关系,比如图片中的先后关系,除此之外,Nmap还提供规避防火墙的技巧以及NSE库。下面对这四类Nmap选项进行介绍,主要介绍每个选项有什么作用,如想了解原理,可以阅读本文附录的参考文献。

2. 主机发现

例子:  nmap –sn –PE –PS80,135 –PU53 scanme.nmap.org    使用wireshark可以查看,nmap在运行上述语句的时候到底发送了哪些包。  nmap –sn 192.168.1.100-120    通过ARP包询问ip地址上的主机是否在线。相关选项:  -sn: Ping Scan 只进行主机发现,不进行端口扫描。  -Pn: 将所有指定的主机视作开启的,跳过主机发现的过程。  -PS/PA/PU/PY[portlist]: 使用TCPSYN/ACK或SCTP INIT/ECHO方式进行发现。  -PE/PP/PM: 使用ICMP echo, timestamp, and netmask 请求包发现主机。  -PO[protocollist]: 使用IP协议包探测对方主机是否开启。  -n/-R: -n表示不进行DNS解析;-R表示总是进行DNS解析。  --dns-servers <serv1[,serv2],...>: 指定DNS服务器。  --system-dns: 指定使用系统的DNS服务器。  --traceroute: 追踪每个路由节点。

3.端口扫描

例子:  nmap –sS –sU –T4 --top-ports 300 192.168.1.100    参数-sS表示使用TCP SYN方式扫描TCP端口;    -sU表示扫描UDP端口;    -T4表示时间级别配置4级,总共6个级别,级别越高扫描速度越快,但也容易被WAF和IDS检测,推荐使用T4级别;    --top-ports 300表示扫描最有可能开放的300个端口(TCP和UDP分别有300个端口)相关选项:  -sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式来对目标主机进行扫描。  -sU: 指定使用UDP扫描方式确定目标主机的UDP端口状况。  -sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密扫描方式来协助探测对方的TCP端口状态。  --scanflags <flags>: 定制TCP包的flags  -sI <zombiehost[:probeport]>: 指定使用idle scan方式来扫描目标主机(前提需要找到合适的zombie host)  -sY/sZ: 使用SCTP INIT/COOKIE-ECHO来扫描SCTP协议端口的开放的情况  -sO: 使用IP protocol 扫描确定目标机支持的协议类型  -b <FTP relay host>: 使用FTP bounce scan扫描方式  -p <port ranges>: 扫描指定的端口    实例: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9(其中T代表TCP协议、U代表UDP协议、S代表SCTP协议)  -F: 快速模式,仅扫描TOP 100的端口  --top-ports <number>:扫描开放概率最高的number个端口;具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口  --port-ratio <ratio>: 扫描指定频率以上的端口。

4.版本探测

版本探测选项较少,但是有很大的用处,下面的文章将会介绍版本探测的具体内容,包括nmap-services-probe文件等。

-sV: 指定让Nmap进行版本侦测
--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。
--version-light: 指定使用轻量侦测方式 (intensity 2)
--version-all: 尝试使用所有的probes进行侦测 (intensity 9)
--version-trace: 显示出详细的版本侦测过程信息。

5.操作系统探测

-O: 指定Nmap进行OS侦测。
--osscan-limit: 限制Nmap只对确定的主机的进行OS探测(至少需确知该主机分别有一个open和closed的端口)。
--osscan-guess: 大胆猜测对方的主机的系统类型。由此准确性会下降不少,但会尽可能多为用户提供潜在的操作系统。

一般在使用是会结合-O -V。使用这两个选项可以造成下面的输出:  Device type:设备类型	所有的指纹被分为高层的设备类型,router, printer, firewall、general purpose	“Device Type: router|firewall”  Running:运行的什么系统	它显示操作系统家族以及操作系统型号,多个操作系统用逗号分隔,型号用‘|’分隔  OS CPE	以cpe:/o:开头  OS details	如果不确切,名字会变成Aggressive OS guesses  Uptime guess:  Network Distance:  TCP Sequence Prediction:  IP ID Sequence Generation:-sV和-O同时使用,如果输出的操作系统信息一致,那么可信度更高;如果不一致还要进一步调查。使用-A选项可以将二者结合起来。

6.其他选项

1.规避防火墙例子:  nmap -v -F -Pn -D192.168.1.100,192.168.1.102,ME -e eth0 -g 3355 192.168.1.1    -F表示快速扫描100个端口;-Pn表示不进行Ping扫描;-D表示使用IP诱骗方式掩盖自己真实IP(其中ME表示自己IP);    -e eth0表示使用eth0网卡发送该数据包;    -g 3355表示自己的源端口使用3355;    192.168.1.1是被扫描的目标IP地址。    更好的方式-D选项中嵌入RND随机数,这样更具有迷惑性。    可以从Wireshark中看到数据包的流动情况:对于每个探测包,Nmap都使用-D选项指定的IP地址发送不同的数据包,    从而达到扰乱对方防火墙/IDS检查的目的(更好的方式-D选项中嵌入RND随机数,这样更具有迷惑性)。    当探测到80端口时候,目标主机向我们回复了SYN/ACK包回来(当然也向其他诱骗的IP回复SYN/ACK包,我们无法接收到),证明80端口是开放的。相关选项:
  -f:--mtu <val>: 指定使用分片、指定数据包的MTU.
  -D <decoy1,decoy2[,ME],...>: 用一组IP地址掩盖真实地址,其中ME填入自己的IP地址。
  -S <IP_Address>: 伪装成其他IP地址
  -e <iface>: 使用特定的网络接口
  -g/--source-port <portnum>: 使用指定源端口
  --data-length <num>: 填充随机数据让数据包长度达到Num。
  --ip-options <options>: 使用指定的IP选项来发送数据包。
  --ttl <val>: 设置time-to-live时间。
  --spoof-mac <mac address/prefix/vendor name>: 伪装MAC地址  --badsum: 使用错误的checksum来发送数据包(正常情况下,该类数据包被抛弃,如果收到回复,说明回复来自防火墙或IDS/IPS)2.使用NSE脚本例子:  Nmap –sV –p 80 –v –script default,http* 192.168.1.1相关选项:  -sC: 等价于 --script=default,使用默认类别的脚本进行扫描。   --script=<Lua scripts>: <Lua scripts>使用某个或某类脚本进行扫描,支持通配符描述   --script-args=<n1=v1,[n2=v2,...]>: 为脚本提供默认参数   --script-args-file=filename: 使用文件来为脚本提供参数   --script-trace: 显示脚本执行过程中发送与接收的数据   --script-updatedb: 更新脚本数据库   --script-help=<Lua scripts>: 显示脚本的帮助信息,其中<Luascripts>部分可以逗号分隔的文件或脚本类别。3.检测防火墙  nmap -p 80,443 --script=http-waf-detect 192.168.150.143  nmap -p 80,443 --script=http-waf-detect www.jianshu.com  nmap -p 80,443 --script=http-waf-fingerprint idea.lanyus.com  正常与不正常的输出样式:          PORT   STATE  SERVICE      80/tcp  open  http      443/tcp  open  https      PORT   STATE SERVICE      80/tcp  open  http        | http-waf-detect: IDS/IPS/WAF detected:        |_www.jianshu.com:80/?p4yl04d3=<script>alert(document.cookie)</script>      443/tcp  open  https  除了Nmap有检测防火墙功能之外,wafw00f工具也可以实现防火墙检测。4.文件读入列表  -iL <inputfilename> (从列表中输入)  -iR <hostnum> (随机选择目标)  --exclude <host1[,host2][,host3],...> (排除主机/网络)  --excludefile <excludefile> (排除文件中的列表) 

7.参考资料

  官网:www.nmap.org

  安全工具排名:http://sectools.org/

  https://github.com/erasin/notes/blob/master/linux/safe/nmap.md

  https://nmap.org/man/zh/man-host-discovery.html

时间: 2024-10-05 11:34:30

Nmap原理-01选项介绍的相关文章

Nmap原理02 - 版本探测介绍(上)

Nmap原理02 - 版本探测介绍(上) 1.介绍 本文将介绍如何通过修改或添加nmap-service-probes文件来实现对nmap中未知服务的探测,首先介绍服务和版本探测的相关信息,然后介绍服务和版本探测的原理以及nmap-service-probes的文件格式,最后通过一个例子演示修改nmap-service-probes文件识别自己的服务,本节介绍前半部分介绍+技术摘要. 转载请注明出处:http://www.cnblogs.com/liun1994/ 2. Service and

开源Math.NET基础数学类库使用(01)综合介绍

原文:[原创]开源Math.NET基础数学类库使用(01)综合介绍 开源Math.NET基础数学类库使用系列文章总目录:   1.开源.NET基础数学计算组件Math.NET(一)综合介绍    2.开源.NET基础数学计算组件Math.NET(二)矩阵向量计算    3.开源.NET基础数学计算组件Math.NET(三)C#解析Matlab的mat格式   4.开源.NET基础数学类库使用Math.NET(四)C#解析Matrix Marke数据格式   5.开源.NET基础数学类库使用Mat

iOS中多线程原理与runloop介绍

http://mobile.51cto.com/iphone-403490.htm iOS中多线程原理与runloop介绍 iPhone中的线程应用并不是无节制的,官方给出的资料显示iPhone OS下的主线程的堆栈大小是1M,第二个线程开始都是512KB.并且该值不能通过编译器开关或线程API函数来更改.只有主线程有直接修改UI的能力.……>>详细 兄弟专题:iOS人机交互指南之UI设计基础 1 iOS多线程编程知多少 在iOS的世界里有两种实现多线程的方式: 多线程是一个比较轻量级的方法来

阿里百秀项目实践---01项目介绍

01项目介绍 核心目标 了解 Web 开发过程(历史) 掌握基本的动态网站开发 培养 B/S 架构应用开发思维 锻炼 JavaScript jQuery AJAX 项目预览演示 一个自媒体信息发布平台 管理员(编辑)通过网站后台管理界面管理(发布.维护)自媒体内容 用户登录 登录界面可以根据是否填写表单内容拒绝登录操作 管理员可以通过用户名和密码登录到后台 内容管理 管理员可以通过管理后台查看全部内容 管理员可以通过管理后台增加内容 管理员可以通过管理后台删除内容 管理员可以通过管理后台修改内容

HTTPS原理01 -- SSL/TLS介绍

https=http+ssl 顾名思义,https是在http的基础上加上了SSL保护壳,信息的加密过程就是在SSL中完成的 SSL证书的定义:SSL证书是由专门的权威的数字证书颁发机构在验证一个域名的信息之后所发行的数字网络证书,它可以很好地维护网络信息的安全,防止这些信息被第三方所截取或是窃听.ssl认证指的是客户端到服务器端的认证,它主要是提供对用户以及服务器的认证,对传送的数据进行加密和隐藏,它能够确保数据在传送过程当中不被改变,对于数据的加密性.数据的完整性有一定保障.https ss

Azure AD Connect 用户登录选项介绍

Azure AD Connect 相信大家都使用过,他的作用是让用户使用同一帐户密码访问本地和云资源.使IT管理员只需要对本地DC进行用户的管理即可.在新版的Azure AD Connect中,用户的登录选项发生了一些变化,添加了一项:直通身份验证,目前的身份验证方式包括3种:1) 密码同步2) 直通身份验证3) ADFS联合身份验证并且增加了:无缝SSO,此功能可以和密码同步及直通身份验证配合使用,在本地加入域的PC使用域帐户登录系统后可以直接访问云资源,而不需要再输入凭据如下图: 针对以上登

MySQL半同步复制原理配置与介绍详解

环境介绍: Ubuntu Server 16.04.2+MySQL 5.7.17 Community Server (GPL) MySQL安装 通过APT的方式安装,官方指导文档地址: https://dev.mysql.com/downloads/repo/apt/ 1.下载mysql-apt-config_0.8.3-1_all.deb 2.安装deb A Quick Guide to Using the MySQL APT Repository: https://dev.mysql.com

Nmap原理02 - 编写自己的服务探测脚本

编写自己的服务探测脚本 1. 添加自己的探测脚本 nmap-service-probes文件的格式将在第二节介绍,本节通过一个例子说明如何添加自己的服务探测脚本. AMQP协议,即Advanced Message Queuing Protocol,一个提供统一消息服务 的应用层标准高级消息队列协议.AMQP协议基于TCP5672端口. 在shodan上搜索AMQP: 可以看到97.74.65.116这个ip下有AMQP服务在运行,并且返回的数据为:AMQP\x01\x01\x00\n. 找到nm

C程序编译过程及优化选项介绍

当我们编译了一个c文件,最终目的是让它能够成为可以执行的代码,就是能够受控或者控制硬件的东西.控制硬件的东西,一般都是二进制代码.那么,问题来了,从c到控制硬件的二进制代码,中间经过了一个什么流程呢?它的过程是这样的: 一,编译预处理 读取c源文件,对其中的伪指令(以#开头)和特殊符号进行处理: 伪指令包括:宏定义: 比如:#defile PI (3.1415) 条件编译:#if (conditions) {do something} #else {do another thing} #endi