Nmap的安装及使用说明

Nmap的安装使用教程

Nmap介绍

Nmap(Network Mapper)是一种用于网络上客户机与服务器的一种安全扫描器。不仅具有数据收集和枚举的功能,而且也可以作为一种漏洞探测器和安全扫描器。

官网:https://nmap.org/

主要有以下三个功能;

  • 主机探测:探测网络主机是否在线,列出响应TCP和ICMP请求和端口主机
  • 端口扫描:探测目标主机所开放的端口
  • 版本检测:探测目标主机的服务名称和版本号
  • 系统检测:探测目标主机的操作系统以及网络设备的硬件特征

Nmap的安装

官方下载地址:https://nmap.org/download.html

官网提供详细的windows、Linux和Mac OS安装教程。

也提供了Source Code Distribution源代码编译安装的教程。

centos可以通过本地安装:yum -y install nmap

可以了通过软件包进行安装:rpm -vhU https://nmap.org/dist/nmap-7.80-1.x86_64.rpm

更新Nmap(通过更新脚本库进行更新) nmap --script-update

Nmap命令

-P*选项

用于选择ping的类型,可以被结合使用。可以使用不同的TCP端口/标志位和Icmp码发送许多探测报文,为了增加穿透防守严密的防火墙的机会

-P0(无ping)

用-P0选项使Nmap对每一个指定的目标IP地址进行所要求的扫描。可以使用CIDR进行地址选定

-PS[portlist] (TCP SYN Ping)

该选项设置了一个SYN标志位的空TCP报文(三次握手第一次)。默认端口为80(可以通过DEFAULT-TCP-PROBE-PORT进行设置(源码中,需重新编译))另可以指定端口,注意:指定端口的时候保证参数和端口之间没有空格

-PA[portlist] (TCP ACK Ping)

发送的包含ACK标志位的数据包

-PU[portlist] (UDP Ping)

发送的空的UDP报文到给定的端口(默认是31338),如果目标主机端口是关闭的话,UDP探测马上得到一个ICMP端口无法达到的回应报文(注意:这是说明目标主机已经开启了)。TTL超时则说明主机未开启。这种方式可以饶过TCP探测的包。

-PE、-PP、-PM(ICMP Ping Types)

-PE:Nmap发送一个ICMP type 8 (回声请求)报文到目标IP地址, 期待从运行的主机得到一个type 0 (回声响应)报文。-PE用于打开该回声请求功能。

-PP、-PM:时间戳和地址掩码查询。

-PR(ARP Ping)

基于 RFC1918私有地址范围的网络,在一个给定的时间绝大部分 IP地址都是不使用的。当Nmap试图发送一个原始IP报文如ICMP回声请求时, 操作系统必须确定对应于目标IP的硬件 地址(ARP),这样它才能把以太帧送往正确的地址。

列表扫描

-iL<inputfilename>(从列表输入)

可以通过ip列表进行文件中ip的扫描,例如通过nmap -PP -PM -PE -iL ip进行以ip为文件名的扫描。

-iR<hostnum>(随机选择目标)

hostnum告诉Nmap生成多少个IP,当参数为0时,表示无终止的扫描。

–exclude <host1, host2 …>(排除主机网络)

顾名思义除了要求的IP,其他IP都扫描。

–excludefile <excludefile>(排除文件中的列表)

和上述一样,不再赘述。

端口扫描

-sS(TCP SYN扫描)

SYN扫描作为默认的也是最受欢迎的扫面选项,他执行的很快,可以明确可靠的区分open(开放的)、closed(关闭的)和filtered(被过滤的)状态。经常被称为半开放式扫描,因为它不打开一个完整的TCP连接。

-sT(TCP connect()扫描)

当SYN扫描不能用时,TCP Connect()扫描就是默认的TCP扫描。当用户没有权限发送原始报文或者扫描IPv6网络时,就是这种情况。该系统调用完全连接到开放的目标端口而不是SYN扫描那样半开放复位。

-sU(UDP扫描)

DNS(53端口)、SNMP(161/162端口)和DHCP(67/68端口)最常见的三个。

UDP扫描发送的空的(没有数据)UDP报头到目标端口。如果返回ICMP端口不可到达错误(类型3,代码3),该端口是closed(关闭的)。其它ICMP不可到达错误(类型3,代码1、2、9、10或者13)表明该端口是filtered(被过滤的)

UDP扫描非常慢,可以通过选项--host-timeout跳过慢的主机

-sA(TCP ACK扫描)

它不能确认open、open|filtered的端口。它用于发现防火墙的规则,确定它是有状态的还是无状态的,那些端口是被过滤的。ACK扫描探测报文只设置ACK标志位。当扫描未被过滤的系统时,open和closed端口都会返回RST报文。Nmap把它们标记为unfiltered(未被过滤的),意思是ACK报文不能到达,至于是open还是closed,无法确定。不响应的端口或者发送特定的ICMP错误消息(类型3,代号1,2,3,9,10或者13),标记为filtered(被过滤的)

-sW(TCP 窗口扫描)

窗口扫描和ACK扫描完全一样

-sN(Null 扫描)

不设置任何标志位(tcp标志头为0)

-sF(FIN 扫描)

只设置TCP FIN标志位

-sX(Xmas 扫描)

设置FIN、PSH和URG标志位

-sM(TCP Maimon扫描)

探测报文是FIN/ACK。根据RFC 793(TCP),无论端口开放还是关闭,都应该对这样的探测响应RST报文。

-sO(IP协议扫描)

发送的IP报文头,报文头通常是空的。

-b <ftp relay host>(FTP弹跳扫描)

只要请求FTP服务器轮流发送一个文件到目标主机上的所感兴趣的端口。错误消息会描述端口是开放的还是关闭的。这是绕过防火墙的好办法,因为FTP服务器常常被置于可以访问比Web主机更多其他内部主机的位置。Nmap用-b选项支持ftp弹跳扫描。参数格式是:<username>:<password>@<server>:<port>。Server是某个脆弱的FTP服务器的名字或者IP地址。也可以省略username:password,如果服务器上开启了匿名用户(user:anonymous password:-wwwuser@)。端口号(以及前面的冒号)也可以省略。如果<server>使用默认的FTP端口21

-sl <zombie host[:probeport]>(ldlescan)

允许对目标进行真正的TCP端口盲扫描(意味着没有报文从你的真实ip地址发送到目标)。相反,side-channel攻击利用zombie主机上已知的IP分段ID序列生成算法来窥探目标上开放端口的信息。IDS系统将显示扫描来自你指定的zombie机。

除了极端隐蔽(由于它不从真实IP地址发送任何报文),该扫描类型可以建立机器间的基于IP的信任关系。端口列表从zombie主机的角度显示开放的端口。因此可以尝试用自己认为(通过路由器/包过滤规则)可能被信任的zombies扫描目标。

如果由于IP ID改变希望探测zombie上的特定端口,您可以在zombie主机后加上一个冒号和端口号,否则Nmap会使用默认的端口(80)

-p <port rangs>(只扫描指定的端口)

该选项指明您想要扫描的端口,覆盖默认值。单个端口和连字符表示的端口范围(如1-1023)都可以。

当既扫描TCP端口又扫描UDP端口时,您可以通过在端口号前加上**T:或者U:**指定协议。协议限定符一直有效直到指定另一个。注意:既要扫描UDP又要扫描TCP,您必须指定-sU,以及至少一个TCP扫描类型(如-sS,-sF或者-sT)如果没有给定协议限定。端口号会被加到所有协议恶列表。

-F(快速(有限的端口)扫描)

在nmap的nmap-services文件中(对于-sO是协议文件)指定你想要扫描的端口。这比扫描所有65535个端口快得多。因为该列表包含如此多的TCP端口(1200多),这和默认的TCP扫描scan(大约1600个端口)速度差别不是很大。如果用--datadir选项指定自己的nmap-services文件,差别会很惊人。

-r(按随机顺序扫描端口)

默认情况下,Nmap按随机顺序扫描端口(除了出于效率的考虑,常用的端口几率大)

-sV(版本探测)

打开版本探测,也可以使用-A同时打开操作系统探测和版本探测

-sR(RPC扫描)

这种扫描方法和许多端口扫描方法联合使用。它对所有被发现开放的TCP/UDP端口执行SunRPC程序NULL命令,来试图确定它们是否是RPC端口。Yes则是什么程序和版本号。因此可以有效的获取和rpcinfo -p一样的信息。即使目标的端口映射在防火墙后面(或者被TCP包装器保护)

–allport(不为版本探测排除任何端口)

默认情况下,Nmap版本探测会跳到9100 TCP端口,因为一些打印机简单的打印送到该端口的任何数据,这会导致数十页的HTTP get请求,二进制SSL会话请求等等被打印出来。这一行为可以通过修改或者删除nmap-service-probes中的Exclude指示符改变。

–version-intensity <intensity>(设置 版本扫描强度)

当进行版本扫描(-sV)时,nmap发送一系列探测报文,每个报文都被赋予一个1-9之间的值。被赋予较低值的探测报文对大范围的常见服务有效,而被赋予较高值的报文一般没什么用。

–version-light(打开轻量级模式)

这是–version-intensity 2 的别名。轻量级模式使版本扫描快许多,但它识别服务的可能性也略微小一点。

–version-all(尝试每个探测)

这是–version-intensity 9 的别名。保证对每个端口尝试每个探测报文。

–version-trace(根据版本扫描活动)

这导致Nmap打印出详细的关于正在进行的扫描的调试信息。它是用–packet-trace所得到的信息的子集。

操作系统扫描

-O(启用操作系统检测)Operating system

也可以使用-A(all)来同时启用操作系统检测和版本检测

–osscan-limit(针对指定的目标进行操作系统检测)

如果发现一个打开和关闭的TCP端口时,操作系统检测会更有效。采用这个选项,Nmap只是对满足这个条件的主机进行操作系统检测,这样可以节约时间,特别在使用-P0扫描多个主机时。这个选项仅在使用-O或-A进行操作系统检测时起作用。

–osscan-guess; --fuzzy (推测操作系统检测结果)

当Nmap无法确定所检测的操作系统时,会尽可能的提供最相近的匹配,Nmap默认进行这种匹配,使用上述任一个选项使得Nmap推测更加有效。

–max-OS-tries(设置针对目标的操作系统检测的最大尝试次数)

当Nmap针对目标进行操作系统检测,并未能找到一个完美的匹配时,它通常会重复尝试。默认情况下,如果环境条件比较好,Nmap会尝试五次,如果条件比较差那么只会尝试二次。指定-max-os-tries的值比较低的话会加快Nmap的速度,但可能会错过潜在的可识别的目标。

扫描结果

open(开放的)

应用程序正在该端口接收TCP连接或者UDP报文。发现这一点常常是端口扫描的主要任务。

closed(关闭的)

关闭的端口对于Nmap也是可访问的(它接受Nmap的探测报文并作为响应),但没有应用程序在其上监听。它们可以显示该IP地址上(主机发现,或者ping扫描)的主机正在运行,也对部分操作系统探测有所帮助。

filtered(被过滤的)

由于包过滤阻止探测报文到达端口,Nmap无法确定该端口是否开放。过滤可能来自专业防火墙设备,路由器规则或者主机上的软件防火墙。这样的端口让攻击者感觉很有挫折,因为它们不提供任何信息。有时候它们响应ICMP错误消息如类型3代码13(无法到达目标:通信被管理员禁止),但更普遍的是过滤器只是丢弃探测帧,不做任何反应。这迫使Nmap探测多次使得速度变慢。

unfiltered(为被过滤的)

未被过滤状态意味着端口可访问,但是Nmap不能确定它是开放的还是关闭的。只是用于映射防火墙规则集的ACK扫描才会把端口分类到这种状态。用其它类型的扫描如窗口扫描,SYN扫描或者FIN扫描来扫描未被过滤的端口可以帮助确定端口是否开放。

open|filtered(开放或者被过滤的)

当无法确定端口是开放的还是被过滤的 ,Nmap就把该端口划分成这种状态。开放的端口不响应就是一个例子。没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何响应。因此Nmap无法确认该端口是开放的还是被过滤的。UDP、IP协议,FIN、NULL和Xmas扫描可能把端口归入此类。

closed|filtered(关闭或者被过滤的)

该状态下Nmap不能确定端口是关闭的还是被过滤的。它只可能出现在IP ID Idle扫描中

防火墙/IDS躲避和哄骗

-f(报文分段);–mtu(使用指定的MTU)分片思想

-f选项要求扫描时(包括ping扫描)使用小的IP包分段。其思路是将TCP头分段在几个包中,使得包过滤器、IDS以及其他工具的检测更加困难。必须小心使用这个选项,有些系统在处理这些小包时存在问题,例如旧的网络嗅探器Sniffit在接收到第一个分段时会立刻出现分段错误。该选项使用一次,Nmap在IP头后将包分成8个字节或更小。因此,一个20字节的TCP头会被分成3个包,其中2个包分成有TCP头的8个字节,另1个包有TCP头的剩下4个字节。当然,每个包都有一个IP头。再次使用-f可使用16字节的分段(减少分段的数量)使用--mtu选项可以自定义偏移的大小,使用时不需要-f,偏移量必须是8的倍数。包过滤器和防火墙对所有IP分段排队,如Linux核心中的CONFIG-IP-ALWAYS-DEFRAG配置项,分段包不会直接使用。一些网络无法承受这样所带来的性能冲击,会将这个配置禁止。其它禁止的原因有分段包会通过不同的路由进入网络。一些源系统在内核中对发送的报文进行分段,使用iptables连接跟踪模块的Linux就是一个例子。如果主机操作系统会产生问题,尝试使用--send-eth选项以避开IP层而直接发送原始的以太网帧。

-D<decoy1,decoy2…>(使用诱饵隐蔽扫描) -sl

为使诱饵扫描起作用,需要使远程主机认为是诱饵在扫描目标网络。IDS可能会报个某个IP的5-10个端口扫描,但并不知道哪个IP在扫描以及那些不是诱饵。但这种方式可以通过路由跟踪、响应丢弃以及其他主动机制再解决。这是一种常见的隐藏自身IP地址的有效技术。

**使用逗号分隔每个诱饵主机,**也可用自己的真实IP作为诱饵,这时可使用ME选项说明。如果在第六个位置或者更后的位置使用ME选项,一些常用的端口扫描器(如Solar Designer‘s excellent scanlogd)就不会报告这个真实的IP。如果不使用ME选项,Nmap将真实IP放在一个随机的位置。

注意:作为诱饵的主机须在工作状态,否则会导致目标主机的SYN洪水攻击。如果在网络中只有一个主机在工作,那就很容易确定哪个主机在扫描。也可使用IP地址代替主机名(被诱骗的网络就不可能在名字服务器日志中发现)

诱饵可用在初始的ping扫描(ICMP、SYN、ACK等)阶段或真正的端口扫描阶段。诱饵也可以用于远程操作系统检测(-O)。在进行版本检测或TCP连接扫描时,诱饵无效。

使用过多的诱饵没有任何价值,反而导致扫描变慢并且结果不准确。此外,一些ISP会过滤哄骗的报文,但很多对欺骗IP包没有任何限制。

-S <IP_Address>(源地址哄骗)

在某些情况下,Nmap可能无法确定你的源地址(如果这样,Nmap会给出提示)。此时,使用-S选项并说明所需发送包的接口IP地址

这个标志的另一个用处是哄骗性扫描,使得目标认为是另一个地址在进行扫描。可以想象某一个竞争对手在不断扫描某个公司!-e选项在这种情况下使用,可以采用-P0选项

–source-port <portnumber>;-g<portnumber>(源端口哄骗)

仅依赖于源端口号就信任数据流是一种常见的错误配置,这个问题非常好理解。例如一个管理员部署了一个新的防火墙,但招来了很多用户的不满,因为它们的应用停止了工作。可能由于外部的UDP DNS服务器响应无法进入网络,而导致DNS的崩溃。FTP是另一个常见的例子,在FTP传输时,远程服务器尝试和内部用建立连接以传输数据。

-e<interface>(使用指定的接口)

告诉Nmap使用哪个接口发送和接收报文,Nmap可以进行自动检测,如果检测不出会给出提示。

–data-length <number>(发送报文时 附加随机数据)

正常情况下,Nmap发送最少的报文,只含一个包头。因此TCP包通常是40字节,ICMP ECHO请求只有28字节。这个选项告诉Nmap在发送的报文上附加指定数量的随机字节。操作系统检测(-O)包不受影响,但大部分ping和端口扫描包受影响,这会使处理变慢,但对扫描的影响小。

–ttl <value>(设置IP time-to-live域)

ids、防火墙 ttl<5 --ttl 5

设置Ipv4报文的time-to-live域为指定的值。

–randomize-hosts(对目标主机的顺序随机排列)

对多个主机进行随机的扫描(目的是:因为防火墙 基于IP的访问频率来进行判断是否有可疑的行为)

–spoof-mac <mac address, prefix, or vendor name>(MAC地址哄骗)

要求Nmap在发送原以太网帧时使用指定的MAC地址,这个选项隐含了--send-length选项,以保证Nmap真正发送以太网包。MAC地址有几种格式。如果简单的使用字符串“0”,Nmap选择一个完全随机的MAC地址。如果给定的字符串是一个16进制偶数(使用:分割),Nmap将使用这个MAC地址。如果小于12的十六进制数字,Nmap会随机填充剩下的6个字节。如果参数不是0或者16进制的字符串,Nmap将通过nmap-mac-prefixes查找厂商的名称(大小写区分)如果找到匹配,Nmap将会使用厂商的OUI(3字节前缀),然后随机填充剩余的3个字节。正确的–spoof-mac参数有Apple、0、01:02:03:04:05:06、deadbeefcafe、0020F2和Cisco

Nmap其他选项

-A(激烈扫描模式选项)

可以理解为**-all这个选项启动额外的高级和高强度选项,目前还未确定代表的内容。目前,这个选项启用了操作系统检测(-O**)和版本扫描(-sV),以后会增加更多的功能。目的是启用一个全面的扫描选项集合,不需要用户记忆大量的选项。这个选项仅仅启用功能,不包含用于可能所需要的时间选项(如-T4)或细节选项(-v

Nmap报告生成

选项解释
-oN标准保存
-oXxml输出
-oGGrep输出
-oA保存到所有格式
-appent-output补充保存文件

xml转htm

借助工具xsltproc

通过命令xsltproc -o test.htm test.xml可以将xml文件中的内容通过网页的方式显示。

su、su -和sudo的区别

  • su 使用的是root密码,但不会切换到root家目录
  • su - 使用的也是root密码,切换到root家目录
  • sudo 使用的是当前用户的密码

Markdown尖括号输入

使用&lt;代替 <

使用&gt;代替 >

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用nmap之前,需要先进行安装。具体的安装步骤可能因为不同的操作系统而有所不同。你可以参考官方网站(https://nmap.org)上的安装文档来进行安装。一旦安装完成,你可以使用nmap扫描网络主机和端口,以及执行其他网络发现和攻击任务。 要开始使用nmap,你可以通过执行命令"nmap"来查看nmap的帮助信息,这将提供给你关于nmap使用方式和可用选项的详细说明nmap是一个功能强大的工具,它可以进行主机发现、端口扫描、操作系统检测和IDS规避/欺骗等任务。无论你是想进行网络安全测试、系统管理或者其他网络相关的任务,nmap都可以成为你的首选工具。 一个常见的nmap命令示例是: `nmap --sS --sU --T4 --top-ports 300 www.baidu.com` 这个命令将使用TCP SYN和UDP扫描技术,以T4速度,对百度的顶级300个端口进行扫描。你可以根据自己的需求调整命令中的参数来实现不同的扫描目标和方式。 请注意,在进行任何网络扫描或攻击测试之前,请确保你已经获得了合法的授权,并遵守当地和国际法律法规。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【2023最新版】超详细NMAP安装保姆级教程,Nmap的介绍、功能并进行网络扫描,收藏这一篇就够了](https://blog.csdn.net/Python_0011/article/details/128813523)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值