nmap的使用教程

摘要:
nmap的介绍:nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。正如大多数被用于网络安全的工具,nmap也是不少黑客及骇客爱用的工具。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。Nmap以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。那么我们就可以利用nmap所给的参数对特定的服务进行探测啦!
nmap的介绍:
nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。
正如大多数被用于网络安全的工具,nmap 也是不少黑客及骇客(又称脚本小子)爱用的工具 。系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。
Nmap 常被跟评估系统漏洞软件Nessus混为一谈。Nmap 以隐秘的手法,避开闯入检测系统的监视,并尽可能不影响目标系统的日常操作。
功能:

1.信息收集:主要收集目标主机的相关信息,主要包括端口,服务,漏洞等信息

2.端口扫描

3.漏洞扫描

在进行nmap扫描工具的使用之前,我们首先要了解一下TCP、ICMP协议以及一些常见的端口号

TCP协议:

nmap的使用教程第1张

其中:源端口占16位 ,端口号范围就是0-65535(2的16次幂)

目的端口占16位

nmap的使用教程第2张nmap的使用教程第3张

nmap的使用教程第4张

nmap的使用教程第5张

接下来就是nmap的学习了

nmap的使用教程第6张

1.Nmap进行探测之前要把域名通过DNS服务器解析为ip地址,也可以使用指定的DNS服务器进行解析。使用- - dns – servers参数来指定

比如:nmap – dns – servers 8.8.8.8 nmap.org

nmap的使用教程第7张

2.对于已经知道主机存活或者防火墙开启的机器,可以使用-Pn参数来停止探测之前的ICMP请求,已达到不触发防火墙安全机制。

3.对于默认的端口范围,可以使用-p m-n来指定探测端口范围为m-n之间的所有端口

比如:nmap –p 1-1000 nmap.org

4.使用nmap –sV ip地址 来识别目标主机的服务信息

使用 nmap –A –v –T4 ip地址 (侵略性的扫描)进行更加详细的服务信息

使用 nmap -sC -sV –o ip地址 (侵略性的扫描)来探测目标主机的操作系统、服务等信息

其中 sC表示使用nmap脚本进行探测,sV表示探测目标主机的服务信息,o表示探测目标机的操作系统信息。

小提示:我们可在命令行输入nmap –h来查看nmap自带的帮助信息

Nmap扫描过程: Nmap扫描目标的方式

  1. 主机发现 第一种: 主机ip或域名
  2. 端口扫描 -nmap 192.168.27.156
  3. 服务和版本探测 -nmapwww.baidu.com
  4. 操作系统探测 第二种: 网段(CIDR格式
  5. 防火墙IDS躲避和哄骗 -nmap 192.168.27.0/24 或者 205.1.1.8/1
  6. 输出结果 -nmap 192.168.27.1-254
  7. -nmap 0-255.1-100.10.10

注意:下面的截图中介绍了CIDR

nmap的使用教程第8张

参数

-iL <inputfilename> 从列表输入

-iR <hostnum> 随机选择目标

nmap的使用教程第9张

一、主机发现

一个局域网中肯定连接着多台设备,那么我们如何获取哪些设备正在开机状态呢?

你肯定想到了使用ping ip地址进行探测的,但是如果一个网络很大的情况下,这样的手工探测会显得很费时费力。 那么我们就可以利用nmap所给的参数对特定的服务进行探测啦!

主机发现原理:一般通过发送ARP、 ICMP、 TCP syn/ack或UDP组合到目标主机,根据主机存活

发送包的回应确认主机是否存在

比如:nmap –sP 192.168.27.1.1/24

上面是nmap两个简单扫描例子,仅反馈了一些简单的信息,但是对于其他的数据收集,nmap里面有详细的参数可以实现,下面将开始讲解一些常用参数的使用:

扫描参数:

1.-sL 不做扫描,仅完成DNS解析和网址的转换

2.-sP (Ping扫描)

发送一个ICMP回声请求和一个tcp报文到80端口。如果非特权用户执行,就发送一个SYN报文(用connect()系统调用)到目标主机的80端口;当特权用户扫描局域网上的目标主机时,会发送ARP请求(-PR)

3.-PN 不用ping

4 .-Ps (TCP SYN Ping) 发TCP协议SYN标记的空包(80端口)

5 .-PA (TCP ACK Ping) 发TCP协议ACK标记的空包(80端口)

-发送一个设置了SYN标志位空TCP报文,默认端口80

-发送一个设置了TCP的ACK标志位的空报文,默认端口80

-以上两个参数一般用于绕过状态检测防火墙,可以两者结合使用

6.-PU (UDP Ping)

-目标机器的端口是关闭的,UDP探测应该马上得到一个icmp端口无法到达的回应报文,穿过设置了TCP过滤的防火墙

7.-PE -PP -PM ICMP ping Types 扫描

使用ICMP Echo 扫描方式 nmap -PE -v 127.0.0.1

使用ICMP时间戳ping扫描 nmap -PP -v 127.0.0.1

使用ICMP地址掩码ping 扫描 nmap -PM -v 127.0.0.1

8.-P0 (无ping扫描)

-禁止主机发现,并对每一个指定目标的ip地址进行深度扫描

如果想知道协议是如何判断目标主机是否存在使用--packet-trace

nmap -p0 --packet-trace 127.0.0.1

9.-PR (ARP ping)

10.-PY SCTP INIT ping 扫描 nmap -PY -v 127.0.0.1

通过向目标发送INIT包,根据目标主机的返回情况判断目标主机是否存活

设置参数:

--traceroute
-n(禁止DNS反向解析,不会对目标ip地址做反向域名解析) nmap -n 127.0.0.1
-R(DNS解析所有的地址,默认不解析不在线的IP) nmap -R -sL 127.0.0.1
--system-dns(使用系统DNS) namp --system-dns 127.0.0.1 127.0.0.2
--dns-servers <server1>[,<server2>[,…]](使用其他DNS)

-6 扫描IPV6地址 nmap -6 fe80::d920:6c18:1f7f:3d7c

--traceroute路由跟踪 可以帮助用户了解网络的同行情况,通过此选项可以轻松地查出从计算机到目标之间所经过的网络节点,并可以看到通过各个节点的时间.

nmap --traceroute -v 127.0.0.1

二、端口扫描

nmap的使用教程第10张

端口状态的详细解释:

1.Open,端口开启,有程序监听此端口
2.Closed,端口关闭,数据能到达主机,但是没有程序监听此端口。
3.Filtered,数据未能到达主机。
4.Unfiltered,数据能到达主机,但是Nmap无法判断端口开启还是关闭。
5.Open|filtered,端口没有返回值,主要出现在UDP,IP,FIN,NULL和Xmas扫描
6.Closed|filtered,只出现在IP ID idle 扫描。

nmap的使用教程第11张

使用命令:nmap –p80 nmap.org 对其80端口进行探测

nmap –p1-100 nmap.org 对端口1-100进行探测

nmap –p- nmap.org 对所有端口进行探测

通过名称范围扫描(扫描以s开头的服务) namp –p s* nmap.org

指定协议探测端口 nmap –p T:25,U:53 nmap.org

通过协议名来扫描端口 nmap –p ssh nmap.org

nmap的使用教程第12张

nmap的使用教程第13张

nmap的使用教程第14张

nmap的使用教程第15张

nmap的使用教程第16张

nmap的使用教程第17张

nmap的使用教程第18张

注意上面的适用范围.

小插入:

nmap的使用教程第19张

使用nmap 探测web服务的title信息

命令:nmap - -script 脚本名称目标

nmap - -script http-headers 192.168.27.100

NSE的脚本分类 可以打开nmap.org/nsedoc这个网站进行详细的查看

三、服务和版本探测

nmap的使用教程第20张

有时候nmap探测出来的服务和版本信息并不是非常准确,不过我们可以通过加参数的方式使其精确

1.-sV:探测开放端口的服务和版本信息 可以借助-A选项进行操作系统探测和版本探测.结果信息更详细和直观.

2.--version-intensity<0-9>:设置探测深度,默认是7。数值越大,强度越大。

赋予的值越高,服务越有可能被正确识别,但是时间也较长
3.
--version-light:相当于级别2

对应的--version-intensity 2的快捷方式,轻量级扫描会节省时间,但是准确性会降低.使用--version-light可以节约部分时间和不会牺牲太多准确性
4.--version-all:相当于级别9
5.--version-trace:显示版本扫描详情(用于调试)跟踪版本扫描活动

6.--allports全端口版本扫描

四、操作系统探测

nmap的使用教程第21张

1.-O:启动操作系统识别。

2.--osscan-limit:对指定的目标进行操作系统检测(该选项仅在使用-O或-A进行操作系统检测时起作用.) nmap -O --osscan-limit 127.0.0.1/24
3.--osscan-guest<OS>:给NMAP建议的操作系统。类似于sqlmap的参数。

--osscan-guess;--fuzzy推测系统版本(当无法准确识别的时候,nmap会从最接近数据中取值,大胆的猜测目标系统.)

例如:nmap -O --osscan-guess 127.0.0.1

五、防火墙/IDS躲避和哄骗

nmap的使用教程第22张

1.-f 报文分段 nmap -sX -v -F 127.0.0.1(ping扫描目标主机)

如果在无法获知目标主机的端口是否开放.此时尝试使用报文分段进行扫描.

例如:nmap -f -v 127.0.0.1

2.--mtu 指定偏移大小

例如:nmap --mtu 16 127.0.0.1

3.-D I P欺骗(IP欺骗的语法如下:Nmap -D [decoy1,decoy2...|RND: number][目标])

(使用-D选项可以指定多个ip地址,或者使用RND随机生成几个地址,在指定的诱饵之间使用逗号进行分割,需要注意的是在进行版本检测或者TCP扫描的时候诱饵是无效的.)

例如:nmap -D RND:11 127.0.0.1

随机的方法容易发现,接下来将指定几个IP地址对目标实施扫描来达到更好的效果.

例如:nmap -D 127.0.0.1,127.0.0.2,127.0.0.253 127.0.153.1

通过抓包的方法看到nmap正在使用我们指定的ip进行对目标主机的扫描,可以使用ME选项指定自己的真实IP.

例如:nmap -D 127.0.0.1,127.0.0.2,127.0.0.253,ME 127.0.153.1

4.-sI 源地址欺骗(使用-sI选项可以进行源地址欺骗,如果Nmap无法确定你的原地址,Nmap会给出相应的提示,我们使用-sI选项指定需要发包的接口ip地址.)

例如:nmap -sI xssm.me:80 127.0.0.1

5.--source-port 源端口欺骗(使用--source-port选项可以进行源地址欺骗,也可以用-g选项,只需要提供端口,nmap就可以从端口发数据,)

例如:nmap --source-port 53 127.0.0.1

6.--data-length 指定发包长度(使用--datalength可以在发送报文的时候指定发包长度,tcp包是40字节,ICMP Echo有28个字节.)

例如:nmap --data-length 30 127.0.0.1

7.--randomize-hosts 目标主机随机排序(使用该选项可以对比主机顺序进行随机的排序,最多可达8096个主机,单方面使用这个选项对防火墙/IDS逃逸效果不大.配合时间选项会有很好的效果.)

例如:nmap --randomize-hosts 127.0.0.1-200

8.--spoof-mac MAC地址欺骗

使用该选项就可以进行MAC地质欺骗,冒失指定一个MAC地址会引起管理员怀疑,这是可以用字符串'0'随机分配一个MAC地址,也可以指定一个MAC地址进行欺骗,.MAC地址最好是存在的,这样才能起到欺骗的效果,使用--spoof-mac选项可以用参数包括0,MAC Address,Vendor Name。

0表示随机生成一个MAC地址,MAC Address表示用户手动指定一个MAC地址,Vendor Name表示从指定厂商生成一个MAC地址.

例如:nmap -sT -PN --spoof-mac 0 127.0.0.1

六、输出结果

nmap的使用教程第23张

nmap的使用教程第24张

使用命令:nmap –sn CIDR –oX test.xml 对该网络中所有的主机进行ping扫描,以探测主机存活性,同时将结果输出到test.xml文件中,以便后续使用

nmap的使用教程第25张

免责声明:文章转载自《nmap的使用教程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NLog输出目标及类型IOS开发调用系统相机和打开闪光灯下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

TCP接收窗口的调整算法(下)

本文内容:分析TCP接收窗口的调整算法,主要是接收窗口的调整算法和总结。 内核版本:3.2.12 作者:zhangskd @ csdn blog 接收窗口的调整算法 经过一系列的前奏,我们终于到了最关键的地方。接下来我们可以看到,接收窗口的大小 主要取决于剩余的接收缓存,以及接收窗口当前阈值。 决定接收窗口大小的函数tcp_select_window()在...

DISPLAY变量和xhost(原创)

DISPLAY 在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结...

美团点评面试20190515

1. 自我介绍 2. 项目介绍,项目难点 3. 笔试题研究过吗? 4. Mybatis多参数传递    //方法1:顺序(索引)传参法 public User selectUser(String name, int deptId); <select resultMap="UserResultMap"> select * fro...

Tomcat 学习笔记(二)监控

一、tomcat可监控的内容 tomcat通过jmx的形式对外提供tomcat的监控数据,比如:堆内存使用情况、线程使用情况等。一般通过jdk的工具jconsole、jvisualvm工具连接在 tomcat上开的jmx端口,可以界面化看到。监控数据项在tomcat本身是通过Mbean提供的,要想知道tomcat有哪些Mbean,可以使用jconsole进...

HDFS之五:Hadoop 拒绝远程 9000 端口访问

最近学习Hadoop 时发现在本机访问 hadoop 9000 端口没有问题,但是远程机器访问 9000端口时不能访问,通过telnet 命令诊断发现发现无法访问端口,经过网上搜索解决方案结合自己实践,总结解决办法一般有以下几点。 首先,利用netstat -tpnl查看的端口开放情况 下图中9000端口只能本机访问 下图中的9000端口可以通过192....

Wireshark使用入门(转)

Wireshark使用入门  目录 1. Wireshark介绍 1.1 客户端界面 1.2 Display Filter 的常用方法 1.3 界面上一些小TIPS 2. 使用Wireshark分析TCP三次握手过程 2.1 三次握手原理 2.2 第一次握手 2.3 第二次握手 2.4 第三次握手 2.5 为什么是三次握手 3. 请求数据...