Nmap是主机扫描工具,他的图形化界面是Zenmap,分布式框架为Dnamp。

Nmap可以完成以下任务:

  • 主机探测
  • 端口扫描
  • 版本检测
  • 系统检测
  • 支持探测脚本的编写
  • Nmap在实际中应用场合如下:
  • 通过对设备或者防火墙的探测来审计它的安全性
  • 探测目标主机所开放的端口
  • 通过识别新的服务器审计网络的安全性
  • 探测网络上的主机

端口扫描工具,即借助工具,试图了解所扫描IP提供的计算机网络服务类型(网络服务均与端口号相关),从而发现攻击弱点,常见服务对应端口号:

服务

端口号

HTTP

80

HTTPS

443

Telnet

23

FTP

21

SSH(安全登录)、SCP(文件传输)、端口重定向

22

SMTP

25

POP3

110

WebLogic

7001

TOMCAT

8080

WIN2003远程登录

3389

Oracle数据库

1521

MS SQL* SEVER数据库sever

1433

MySQL 数据库sever

3306

Nmap进行完整全面的扫描
nmap –T4 –A –v

其中-A选项用于使用进攻性(Aggressive)方式扫描;-T4指定扫描过程使用的时序(Timing),总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉,在网络通讯状况良好的情况推荐使用T4;-v表示显示冗余(verbosity)信息,在扫描过程中显示扫描的细节,从而让用户了解当前的扫描状态。

Nmap输出的是扫描目标的列表,以及每个目标的补充信息,至于是哪些信息则依赖于所使用的选项。 状态可能是 open(开放的),filtered(被过滤的), closed(关闭的),或者unfiltered(未被过滤的)。 Open(开放的)意味着目标机器上的应用程序正在该端口监听连接/报文。 filtered(被过滤的) 意味着防火墙,过滤器或者其它网络障碍阻止了该端口被访问,Nmap无法得知 它是 open(开放的) 还是 closed(关闭的)。 closed(关闭的) 端口没有应用程序在它上面监听,但是他们随时可能开放。 当端口对Nmap的探测做出响应,但是Nmap无法确定它们是关闭还是开放时,这些端口就被认为是 unfiltered(未被过滤的) 如果Nmap报告状态组合 open|filtered 和 closed|filtered时,那说明Nmap无法确定该端口处于两个状态中的哪一个状态。 当要求进行版本探测时,端口表也可以包含软件的版本信息。当要求进行IP协议扫描时 (-sO),Nmap提供关于所支持的IP协议而不是正在监听的端口的信息。

除了所感兴趣的端口表,Nmap还能提供关于目标机的进一步信息,包括反向域名,操作系统猜测,设备类型,和MAC地址。

参数搭配:

Nmap 7.60SVN(https://nmap.org)

用法:nmap [扫描类型] [选项] {目标规格}

目标规格:

可以通过主机名,IP地址,网络等

例如:scanme.nmap.org,microsoft.com/24,192.168.0.1; 10.0.0-255.1-254

-iL <输入文件名>:从主机/网络列表中输入

-iR <num hosts>:选择随机目标

- 排除<host1 [,host2] [,host3],...>:排除主机/网络

--excludefile <exclude_file>:从文件中排除列表

主机发现:

-sL:列表扫描 - 只需列出要扫描的目标

-sn:Ping扫描 - 禁用端口扫描

-Pn:将所有主机视为联机 - 跳过主机发现

-PS / PA / PU / PY [portlist]:对给定端口的TCP SYN / ACK,UDP或SCTP发现

-PE / PP / PM:ICMP回显,时间戳和网络掩码请求发现探测

-PO [协议列表]:IP协议Ping

-n / -R:永远不要做DNS解析/总是解决[默认:有时]

--dns-servers <serv1 [,serv2],...>:指定自定义DNS服务器

--system-dns:使用操作系统的DNS解析器

--traceroute:跟踪每个主机的跳转路径

扫描技术:

-sS / sT / sA / sW / sM:TCP SYN / Connect()/ ACK / Window / Maimon扫描

-sU:UDP扫描

-sN / sF / sX:TCP空,FIN和圣诞节扫描

--scanflags <flags>:自定义TCP扫描标志

-sI <僵尸主机[:探测端口]>:空闲扫描

-sY / sZ:SCTP INIT / COOKIE-ECHO扫描

-sO:IP协议扫描

-b <FTP中继主机>:FTP反弹扫描

港口规格和扫描订单:

-p <端口范围>:仅扫描指定的端口

例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

--exclude-ports <端口范围>:从扫描中排除指定的端口

-F:快速模式 - 扫描比默认扫描更少的端口

-r:连续扫描端口 - 不要随机化

--top-ports <number>:扫描<number>最常见的端口

- 端口比率<比率>:扫描端口比<比率>更普遍

服务/版本检测:

-sV:探测打开的端口以确定服务/版本信息

--version-intensity <level>:从0(亮)到9(尝试所有探针)

--version-light:限制为最有可能的探针(强度2)

--version-all:尝试每一个探针(强度9)

--version-trace:显示详细版本的扫描活动(用于调试)

脚本扫描:

-sC:等同于--script = default

--script = <Lua scripts>:<Lua scripts>是逗号分隔的列表

目录,脚本文件或脚本类别

--script-args = <n1 = v1,[n2 = v2,...]>:为脚本提供参数

--script-args-file = filename:在文件中提供NSE脚本参数

--script-trace:显示所有发送和接收的数据

--script-updatedb:更新脚本数据库。

--script-help = <Lua scripts>:显示有关脚本的帮助。

<Lua scripts>是脚本文件或者逗号分隔的列表

脚本的类别。

操作系统检测:

-O:启用操作系统检测

--osscan-limit:限制操作系统检测到有前途的目标

--osscan-guess:猜测操作系统更积极

时间和表现:

采用<time>的选项以秒为单位,或附加“ms”(毫秒),

(秒),'m'(分钟)或'h'(小时)的值(例如30m)。

-T <0-5>:设定时间模板(越快越快)

--min-hostgroup / max-hostgroup <size>:并行主机扫描组大小

--min-parallelism / max-parallelism <numprobes>:探测器并行化

--min-rtt-timeout / max-rtt-timeout / initial-rtt-timeout <time>:指定

探测往返时间。

--max-retries <tries>:端口扫描探测重传次数的上限。

--host-timeout <time>:在此之后放弃目标

- 扫描延迟/  - 最大扫描延迟<时间>:调整探头之间的延迟

--min-rate <number>:发送不低于每秒<number>的数据包

--max-rate <number>:发送数据包不会比每秒<number>更快

防火墙/ IDS消除和防盗:

-F; --mtu <val>:分段数据包(可选w /给定MTU)

-D <decoy1,decoy2 [,ME],...>:用诱饵隐形扫描

-S <IP_Address>:欺骗源地址

-e <iface>:使用指定的接口

-g /  -  source-port <portnum>:使用给定的端口号

--proxies <url1,[url2],...>:通过HTTP / SOCKS4代理中继连接

--data <十六进制字符串>:附加一个自定义的有效载荷到发送的数据包

--data-string <string>:附加一个自定义的ASCII字符串到发送的数据包

--data-length <num>:追加随机数据到发送的数据包

--ip-options <options>:发送指定ip选项的数据包

--ttl <val>:设置IP生存时间字段

--spoof-mac <mac地址/前缀/供应商名称>:欺骗您的MAC地址

--badsum:发送具有伪造的TCP / UDP / SCTP校验和的数据包

OUTPUT:

-oN / -oX / -oS / -oG <file>:输出扫描正常,XML,s | <rIpt kIddi3,

和Grepable格式,分别给定的文件名。

-oA <basename>:一次输出三种主要格式

-v:提高详细程度(使用-vv或更多来获得更大的效果)

-d:增加调试级别(使用-dd或更多以获得更好的效果)

--reason:显示端口处于特定状态的原因

- 打开:只显示打开(或可能打开)的端口

--packet-trace:显示所有发送和接收的数据包

--iflist:打印主机接口和路由(用于调试)

--append-output:附加到指定的输出文件而不是clobber

--resume <文件名>:恢复中止的扫描

--stylesheet <path / URL>:将XML输出转换为HTML的XSL样式表

--webxml:Nmap.Org的参考样式表,以获得更多可移植的XML

--no-stylesheet:阻止与XML输出相关联的XSL样式表

MISC:

-6:启用IPv6扫描

-A:启用操作系统检测,版本检测,脚本扫描和跟踪路由

--datadir <dirname>:指定自定义Nmap数据文件的位置

--send-eth /  -  send-ip:使用原始以太网帧或IP数据包进行发送

- 特权:假设用户是完全特权的

--unprivileged:假设用户缺少原始套接字权限

-V:打印版本号

-h:打印此帮助摘要页面。

例子:

nmap -v -A scanme.nmap.org

nmap -v -sn 192.168.0.0/16 10.0.0.0/8

nmap -v -iR 10000 -Pn -p 80

-h; --help (打印帮助摘要面)打印一个短的帮助屏幕,列出大部分常用的 命令选项,这个功能与不带参数运行Nmap是相同的。

实例:

Nmap用于主机发现的一些用法

-sL: List Scan 列表扫描,仅将指定的目标的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: 追踪每个路由节点

Nmap用于端口扫描的一些用法

1、扫描方式选项

-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扫描方式

2、 端口参数与扫描顺序

[plain] view plain copy-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: Fast mode – 快速模式,仅扫描TOP 100的端口

-r: 不进行端口随机打乱的操作(如无该参数,nmap会将要扫描的端口以随机顺序方式扫描,以让nmap的扫描不易被对方防火墙检测到)。

--top-ports <number>:扫描开放概率最高的number个端口(nmap的作者曾经做过大规模地互联网扫描,以此统计出网络上各种端口可能开放的概率。以此排列出最有可能开放端口的列表,具体可以参见文件:nmap-services。默认情况下,nmap会扫描最有可能的1000个TCP端口)

--port-ratio <ratio>: 扫描指定频率以上的端口。与上述--top-ports类似,这里以概率作为参数,让概率大于--port-ratio的端口才被扫描。显然参数必须在在0到1之间,具体范围概率情况可以查看nmap-services文件。

3、 版本侦测的用法

版本侦测方面的命令行选项比较简单。

[plain] view plain copy-sV: 指定让Nmap进行版本侦测

--version-intensity <level>: 指定版本侦测强度(0-9),默认为7。数值越高,探测出的服务越准确,但是运行时间会比较长。

--version-light: 指定使用轻量侦测方式 (intensity 2)

--version-all: 尝试使用所有的probes进行侦测 (intensity 9)

--version-trace: 显示出详细的版本侦测过程信息。

10、其他扫描方式
SYN扫描:利用基本的SYN扫描方式测试其端口开放状态
namp -sS -T4 <target ip>

FIN扫描:利用FIN扫描方式探测防火墙状态。FIN扫描方式用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态
namp -sF -T4 <target ip>

ACK扫描:利用ACK扫描判断端口是否被过滤。针对ACK探测包,为被过滤的端口(无论打开或关闭)会回复RST包
namp -sA -T4 <target ip>

扫描前不进行Ping扫描测试
nmap -Pn <target ip>

如果有一个ip地址列表,将这个保存为一个txt文件,和nmap在同意目录下,扫描这个txt的所有主机,命令为
nmap -iL target.txt
版本检测扫描

kali之Nmap (Network Mapper(网络映射器)的更多相关文章

  1. 4. Retrieving a mapper(检索映射器)

    Retrieving a mapper(检索映射器) 4.1. The Mappers factory(映射工厂) 可以通过 org.mapstruct.factory.Mappers 类检索映射器实 ...

  2. Mybatis映射器接口代理对象的方式 运行过程

    查询一张表的所有数据. 环境: 使用工具IntelliJ IDEA 2018.2版本. 创建Maven工程不用骨架 1.pom.xml <?xml version="1.0" ...

  3. Mybatis 映射器接口实现类的方式 运行过程debug分析

    查询一张表的所有数据. 环境: 使用工具IntelliJ IDEA 2018.2版本. 创建Maven工程不用骨架 <?xml version="1.0" encoding= ...

  4. 带码农《手写Mybatis》进度3:实现映射器的注册和使用

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!

  5. Mapper映射器

    在两个独立的对象之间建立通信的对象 需要在两个必须相互隔离的子系统间建立通信. 可能是因为无法修改已有的子系统,或者不愿意在两者之间建立依赖关系.甚至不愿意这两个子系统与另一个部件间建立依赖关系. 运 ...

  6. MyBatis中映射器Mapper概述

    MyBatis真正强大之处在于它的映射器.因为它异常强大并且编写相对简单,不仅比传统编写SQL语句做的更好并且能节省将近95%的代码量 XML中顶级元素汇总 cache: 给定命名空间的缓存配置 ca ...

  7. Spring集成MyBatis的使用-使用Mapper映射器

    Spring集成MyBatis使用 前面复习MyBatis时,发现在测试时,需要手动创建sqlSessionFactory,Spring将帮忙自动创建sqlSessionFactory,并且将自动扫描 ...

  8. MyBatis数据库连接的基本使用-补充Mapper映射器

    补充 Mapper映射器的使用: Mapper映射器,google添加.Mapper映射器是将mapper.xml中配置的sql id,parameterType和resultMap按照规则一一映射到 ...

  9. DART: a fast and accurate RNA-seq mapper with a partitioning strategy DART:使用分区策略的快速准确的RNA-seq映射器

    DART: a fast and accurate RNA-seq mapper with a partitioning strategyDART:使用分区策略的快速准确的RNA-seq映射器 Abs ...

随机推荐

  1. P3157 [CQOI2011]动态逆序对 CDQ分治

    一道CDQ分治模板题简单来说,这道题是三维数点对于离线的二维数点,我们再熟悉不过:利用坐标的单调递增性,先按更坐标排序,再按纵坐标排序更新和查询时都直接调用纵坐标.实际上,我们是通过排序将二维中的一维 ...

  2. NodeJS学习笔记 进阶 (1)Nodejs进阶:服务端字符编解码&乱码处理(ok)

    个人总结:这篇文章主要讲解了Nodejs处理服务器乱码及编码的知识,读完这篇文章需要10分钟. 摘选自网络 写在前面 在web服务端开发中,字符的编解码几乎每天都要打交道.编解码一旦处理不当,就会出现 ...

  3. NOIP 2012 疫情控制(二分+贪心+倍增)

    题解 二分时间 然后一个显然的事是一个军队向上爬的越高它控制的点越多 所以首先军队尽量往上爬. 当一个军队可以爬到根节点我们记录下它的剩余时间T和它到达根结点时经过的根节点的子节点son. 当一个军队 ...

  4. Linux学习-Ubuntu 18.04-安装图文教程

    Ubuntu(友帮拓.优般图.乌班图)是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于Debian GNU/Linux,支持x86.amd64(即x64)和ppc架构,由全球 ...

  5. 一个Web报表项目的性能分析和优化实践(三) :提高Web应用服务器Tomcat的内存配置,并确认配置正确

    摘要 上一篇,一个Web报表项目的性能分析和优化实践(一):小试牛刀,统一显示SQL语句执行时间 ,讲述了项目优化的整体背景,重点讲述了统一显示了Web项目SQL语句的执行时间. 本篇,将重点介绍提高 ...

  6. 怎么打开/查看MySQL的SQL记录

    mysql在执行sql的时候会在日志当中记录很多信息,当然包括执行的所有语句.下面以使用navicat for mysql为例,来展示一下如何打开/查看MySQL的SQL记录: 打开navicat f ...

  7. C++语言笔记系列之十——静态成员

    1.静态成员 (1)由keywordstatic修饰 静态变量定义语句在编译阶段就运行,运行过程中不再运行. (2)分类:静态数据成员.静态成员函数. (3)静态成员时类的全部对象共享的成员,而不是某 ...

  8. hdu 1102 Constructing Roads(kruskal || prim)

    求最小生成树.有一点点的变化,就是有的边已经给出来了.所以,最小生成树里面必须有这些边,kruskal和prim算法都能够,prim更简单一些.有一点须要注意,用克鲁斯卡尔算法的时候须要将已经存在的边 ...

  9. centos 6.5搭建Samba

    Samba共享服务器 先将selinux关闭和防火墙端口号打开 #iptables -A INPUT -p udp -dport -j ACCEPT #iptables -A INPUT -p udp ...

  10. Android 数据库框架总结,总有一个适合你!

    一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面.缺点:1.基于反射,效率较低(本人还没有觉得效率低):2.缺少中文翻译文档 jar包 地址:http: ...