热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Nmap的实际应用

本章前面多次提到Nmap这款俗有“扫描器之王”的工具软件,由此可见这的确非同一般。Nmap运行通常会得到被扫描主机端口的列表,给出wellknown端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。open状态意
本章前面多次提到Nmap这款俗有“扫描器之王”的工具软件,由此可见这的确非同一般。Nmap运行通常会得到被扫描主机端口的列表,给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。filtered状态表示防火墙、包过滤和其他的网络安全软件掩盖了这个端口,禁止Nmap探测其是否打开。unfiltered表示这个端口关闭,并且没有防火墙/包过滤软件来隔离Nmap的探测企图。通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。
根据使用的功能选项,Nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址,以及其他一些东西。
Nmap还提供了一些高级的特征,例如,通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行Ping扫描探测关闭的主机、诱饵扫描、避开端口过滤检测、直接RPC扫描(无须端口影射)、碎片扫描,以及灵活的目标和端口设定。Nmap命令的基本语法格式如下:
nmap [Scan Type(s)] [Options]
从语法格式中可以看出,它主要包括“Scan Type(s)”(扫描类型)和“Options”(选项)两部分,而“”部分是扫描目标说明,可以是IP地址,也可以是主机名或域名。在“Scan Type(s)” 和“Options”这两大部分却包含了非常强大的功能,其可选参数非常之多。如-31所示的是Nmap其中的一部分功能。直接在命令提示符下输入Nmap命令即可得到如-31所示的功能和使用介绍。下面是一些简单介绍,不过是英文的,为了帮助那些英文不是很好的朋友,特意把其中的功能翻译过来。
-31  Nmap功能和使用说明
1.扫描类型
首先介绍“Scan Type(s)”部分,即扫描类型选项。这些扫描类型在本节前面已有介绍,只是此处用更简单的字母组合方式给出。
1)-sT
TCP connect()扫描:这是最基本的TCP扫描方式。Connect()是一种系统调用,由操作系统提供,用来打开一个连接。如果目标端口有程序监听,connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,无须Root或Administrator权限,任何UNIX或Windows用户都可以自由使用这个系统调用。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
2)-sS
TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开(half-open)扫描。可以发出一个TCP同步包(SYN),然后等待回应,如果对方返回SYN/ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN/ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上是由操作系统内核自动完成的。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,需要Root权限来定制SYN数据包。
3)-sN/-sF/sX
空(Null)扫描、秘密FIN数据包扫描和圣诞树(Xmas Tree)模式:在SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视,而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的,而使用SYN扫描显示有打开的端口,可以确定目标主机可能运行的是Windwos系统。现在这种方式没有什么太大的用处,因为Nmap有内嵌的操作系统检测功能。还有其他几个系统使用和Windows同样的处理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在应该抛弃数据包时,以上这些系统都会从打开的端口发出复位数据包。
4)-sP
Ping扫描:有时只是想知道此时网络上哪些主机正在运行。通过指定网络内的每个IP地址发送ICMP echo请求数据包,Nmap就可以完成这项任务。如果主机正在运行就会作出响应,但也有一些站点(如microsoft.com)阻塞ICMP echo请求数据包。在默认的情况下Nmap也能够向80号端口发送TCP ACK包,如果收到一个RST包,就表示主机正在运行。Nmap使用的第三种技术是:发送一个SYN包,然后等待一个RST或者SYN/ACK包。对于非Root用户,Nmap使用connect()方法。
Nmap在任何情况下都会进行Ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。如果只是想知道目标主机是否运行,而不想进行其他扫描,才会用到这个选项。
5)-sU
UDP扫描:如果想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用这种扫描方法。Nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果收到端口不可达的ICMP消息,端口就是关闭的,否则就假设它是打开的。
6)-sA
ACK扫描:这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下,这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序,只是阻塞进入的SYN包。
这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。注意,Nmap通常不输出unfiltered的端口,所以在输出中通常不显示所有被探测的端口。显然,这种扫描方式不能找出处于打开状态的端口。
7)-sW
滑动窗口的扫描:这项高级扫描技术非常类似于ACK扫描,除了它有时可以检测到处于打开状态的端口,因为滑动窗口的大小是不规则的,有些操作系统可以报告其大小。这些系统至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64 UNIX、DG/UX、OpenVMS、Digital UNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS 4.x、Ultrix、VAX、VXWORKS。从nmap-hackers邮件3列表的文档中可以得到完整的列表。
8)-sR
RPC扫描:这种方法和Nmap的其他不同的端口扫描方法结合使用。选择所有处于打开状态的端口向它们发出SunRPC程序的null命令,以确定它们是否是RPC端口,如果是,就确定是哪种软件及其版本号,由此能够获得防火墙的一些信息。诱饵扫描现在还不能和RPC扫描结合使用。
9)-b
FTP反弹攻击(bounce attack):FTP协议有一个很有意思的特征,它支持代理FTP连接。也就是说,能够从evil.com连接到FTP服务器target.com,并且可以要求这台 FTP服务器为自己发送Internet上任何地方的文件。
传递给-b功能选项的参数,是要作为代理的FTP服务器。语法格式为:
-b usernameassword@serverort
除了server以外,其余都是可选的。如果用户想知道什么服务器有这种缺陷,可以参考笔者在Phrack 51发表的文章。还可以在Nmap的站点得到这篇文章的最新版本。
2.选项
在“Options”部分中可选择的选项如下。
1)-P0
在扫描之前,不必Ping主机。有些网络的防火墙不允许ICMP echo请求穿过,使用这个选项可以对这些网络进行扫描。
2)-PT
扫描之前,使用TCP Ping确定哪些主机正在运行。Nmap不是通过发送ICMP echo请求包然后等待响应来实现这种功能,而是向目标网络(或者单一主机)发出TCP ACK包然后等待回应。如果主机正在运行就会返回RST包。只有在目标网络/主机阻塞了Ping包,而仍旧允许对其进行扫描时,这个选项才有效。对于非 Root用户,使用connect()系统调用来实现这项功能。使用-PT 来设定目标端口。默认的端口号是80,因为这个端口通常不会被过滤。
3)-PS
对于Root用户,这个选项让Nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)。
4)-PI
设置这个选项,让Nmap使用真正的Ping(ICMP echo请求)来扫描目标主机是否正在运行。使用这个选项让Nmap发现正在运行的主机的同时,Nmap也会对用户的直接子网广播地址进行观察。直接子网广播地址是一些外部可达的IP地址,把外部的包转换为一个内向的IP广播包,向一个计算机子网发送。这些IP广播包应该删除,因为会造成拒绝服务攻击(如Smurf)。
5)-PB
这是默认的Ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,就能够穿过防火墙。
6)-O
这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志。换句话说,Nmap使用一些技术检测目标主机操作系统网络协议栈的特征。Nmap使用这些信息建立远程主机的指纹特征,把它和已知的操作系统指纹特征数据库作比较,就可以知道目标主机操作系统的类型。
7)-I
这个选项打开Nmap的反向标志扫描功能。Dave Goldsmith 1996年向bugtap发出的邮件注意到这个协议,identd协议(RFC 1413)允许使用TCP连接给出任何进程拥有者的用户名,即使这个进程并没有初始化连接。例如,可以连接到HTTP端口,接着使用identd确定这个服务器是否由Root用户运行。这种扫描只能在同目标端口建立完全的TCP连接时(例如-sT扫描选项)才能成功。使用-I选项,远程主机的identd进程就会查询在每个打开的端口上监听的进程的拥有者。显然,如果远程主机没有运行identd程序,这种扫描方法无效。

推荐阅读
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 本文介绍如何在现有网络中部署基于Linux系统的透明防火墙(网桥模式),以实现灵活的时间段控制、流量限制等功能。通过详细的步骤和配置说明,确保内部网络的安全性和稳定性。 ... [详细]
  • 作者:守望者1028链接:https:www.nowcoder.comdiscuss55353来源:牛客网面试高频题:校招过程中参考过牛客诸位大佬的面经,但是具体哪一块是参考谁的我 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 转自:http:www.yybug.comread-htm-tid-15324.html为什么使用Twisted? 如果你并不准备使用Twisted,你可能有很多异议。为什么使用T ... [详细]
  • 随着网络安全威胁的不断演变,电子邮件系统成为攻击者频繁利用的目标。本文详细探讨了电子邮件系统中的常见漏洞及其潜在风险,并提供了专业的防护建议。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 本文深入探讨了MAC地址与IP地址绑定策略在网络安全中的应用及其潜在风险,同时提供了针对该策略的破解方法和相应的防御措施。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • 深入探讨ASP.NET中的OAuth、JWT与OpenID Connect
    本文作为前文关于OAuth2.0和使用.NET实现OAuth身份验证的补充,详细阐述了OAuth与JWT及OpenID Connect之间的关系和差异,旨在提供更全面的理解。 ... [详细]
  • Active Object设计模式解析
    Active Object设计模式通过引入代理(Proxy)和命令(Command)模式,实现了方法调用与执行的解耦,从而支持异步操作和提高系统的并发处理能力。本文将深入探讨Active Object模式的工作原理及其应用场景。 ... [详细]
  • 一面问题:MySQLRedisKafka线程算法mysql知道哪些存储引擎,它们的区别mysql索引在什么情况下会失效mysql在项目中的优化场景&# ... [详细]
  • 本文详细探讨了虚拟化的基本概念,包括服务器虚拟化、网络虚拟化及其在云计算环境中的应用。特别强调了SDN技术在网络虚拟化和云计算中的关键作用,以及网络虚拟化技术如何提升资源利用效率和管理灵活性。 ... [详细]
author-avatar
dushearer304
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有