Nmap高级技术与防御措施

Nmap网络安全审计(五)

Nmap的高级技术与防御措施

Nmap的伪装技术

大部分人认为,Nmap中不应该提供逃避防火墙规则和欺骗IDS的功能。但是很多安全工具都已经提供了这些功能,因此Nmap中包含这些功能可以帮助网络管理员增强安全性。Nmap不提供检测和破坏防火墙及IDS系统专门工具和选项,但是却提供了相关技术。

  1. Nmap -f 目标

    使用 -f 选项可以对Nmap发送的探测数据包进行分段。这样将原来的数据包分为几个部分,目标网络的防御机制如包过滤,防火墙等在对这些数据包进行检测的时候就会变得更加困难。另外必须谨慎使用这个选项,一些比较老的系统在处理分段的包时会经常出现死机的情况。

nmap -f 192.168.0.103

在这里想要看的更直观一些的话,我们可以通过抓包工具对这个步骤进行抓包。我们就会发现大量的数据包上面都含有 Fragmented IP protocol 的标志。这个标志就说明这些数据包都是分段的报文。
我们在检测结果中可以发现有一个warning的提示,这个提示说明我们刚才所演示的功能可能在windows下无法正常工作。

  1. -mtu(使用指定的MTU)

    MTU(最大输出单元)是指一种通信协议的某一层上面所能通过的最大数据包大小。一般来说,以太网的MTU值默认是1500 bytes,这个含义就是指当发送者的协议高层向IP层发送了长度为2008 bytes数据报文,则该报文再添加20 bytes的IP包头后,IP包的总长度是2028 bytes。为2028大于1500,因此该数据报文就会被分片。
    在Nmap中使用 -mtu 参数可以指定MTU的大小。这里 MTU 的值必须是8的整数倍。

nmap --mtu 16 192.168.0.103

因为我这里的windows没有操作成功我这里就暂时不贴图了。在这里我们同样使用抓包工具查看,我们会发现每个发送的数据包大小都被修改成了16bytes。

  1. -D <decoy1[,decoy2][,ME],...>(使用诱饵主机隐蔽扫描)

    通常在对目标进行扫描时,有可能会被发现。一个比好用的方法就是同时伪造大量的主机地址对目标进行扫描,这是目标主机及时发现了有人正在进行扫描,但是由于扫描数据包来自于多个主机,即使是IDS也只能知道目前正在被扫描,并不知道到底是哪台主机在进行扫描。这是一种常用的隐蔽自身IP的技术。

    Nmap中支持使用诱饵主机,在扫描时,使用选项-D来指定诱饵主机,使用逗号分隔每个诱饵IP地址,也可以使用自己的真实IP做为诱饵,自己的ip地址可以使用ME选项。如果在第六个位置和更后的位置使用ME选项,一些常用的端口扫描检测器就不会报告这个真实IP。如果不使用ME选项,Nmap将真实IP放在一个随机位置。

    作为诱饵的主机,必须处于工作状态中,否则这次扫描就可能变成SYN FLOOD,也就是我们常说的DDoS。如果网络中只有一台主机在工作,无论你产生多少个诱饵,都是这一台主机在扫描。

    在我们之前讲到的Ping扫描(ICMP、SYN、ACK等)阶段或真正的端口扫描。以及远程操作系统检测阶段,都可以使用诱饵主机选项。但是在进行版本检测或TCP连接扫描时,诱饵主机选项是不能使用的。

    我们用这条命令来进行测试,在参数-D 后面加上RND:10 表示产生十台诱饵主机。(产生的诱饵主机的数量越多,会导致扫描变慢,而且结果不准确。)

nmap -D RND:10 192.168.0.103

这个时候我们使用抓包工具进行抓包检测的话,我们就可以发现很多源地址不一样的数据包发送。

  1. --source-port <portnumber>;-g <portnumber>(源端口欺骗)

    网络安全控制中有一种访问控制列表技术(Access Control Lists, ACL)。这种技术主要是依靠ip地址和端口数来对数据包进行限制,有时候需要保证DNS和FTP协议正常工作,DNS响应来自53端口,FTP连接来自于20端口,很多时候网络管理员会直接允许来自于这些端口的数据进入网络,这样做其实就是在防护的网络边界上开的一个漏洞。

    Nmap提供了-g和--source-port参数,用于利用上述弱点,nmap就可从不常用或被遗忘的端口发送数据,下面我们来测试一下,将扫描的源端口指定为8888。

    nmap -g 8888 192.168.0.103

    在这里我们也可以通过抓包工具,对发送出去的数据包进行检测,在数据包中的Source port 字段中可以看到源端口为8888。

5.--date-length <number> (发送报文时附加随机数据)

默认情况下,Nmap发送到报文中只包含头部,内容部分是空的。,因此,TCP的数据包大小只有40字节,而ICMP ECHO请求只有28字节。我们在之前也讲到这种空的报文,很容易被网络中检测机制发现,所以在试图通过这些网络的检测机制时,可以在数据包上附加指定数量的随机字节,这个选项会使得大部分Ping和端口扫描变慢,但是影响并不大。
使用 --data-length 指定为25

nmap --data-length 25 192.168.0.103

想要进一步查看是否更改成功的话,还需要通过抓包软件。在抓包软件中可以看到发送出去的数据包的data部分的长度是25字节。

  1. --ttl <value> (设置IP time to live )

    TTL(time to live 生存时间)。Nmap中可以设置IPv4数据包的ttl域为指定的值,指定参数为 -ttl

    nmap -ttl 25 192.168.0.103

    在这里就不再去贴图片了,因为结果都是一样的。不一样的就是需要自己通过抓包软件去分析数据包中被修改过的值。

  2. --spoof-mac <mac address ,prefix ,or vendor name> (MAC地址欺骗)

    通过这个选项可以人为指定Nmap在进行扫描工作时发送的Mac地址。这个选项默认使用了 --send-eth 参数,这样Nmap发送的才是真正的以太网包。Nmap支持多种格式,如果简单使用字符串 0 ,Nmap选择一个完全随机的MAC地址。如果给定的字符是一个使用分号分隔的十六进制偶数,Nmap将使用这个MAC地址。如果是小于12的十六进制数字,Nmap会随机填充剩下的六个字节。如果参数不是0和十六进制字符串,Nmap将通过Nmap-mac-prefixes查找厂商名称,如果找到匹配,将使用厂商的三字节前缀,然后随机填充剩下的三个字节。

    伪造MAC地址的扫描方法(-PR ARP ping 扫描)

    nmap -sn -PR --spoof-mac 0 192.168.0.103

TCP Connect扫描的检测

这个TCP Connect扫描之前说过,这里就不再多写了,算了还是写上吧...

TCP Connect扫描是一种最为基本的扫描方式。Nmap向一个开放的端口发起了连接请求,并且完成三次握手,之后结束了这次连接。这种扫描很容易被检测到,因为Nmap会向每一个目标端口发送一个数据包。如果该端口是关闭的,目标会回复一个RST和ACK标志位的数据包。如果该端口是开放的,目标会回复一个设置了SYN/ACK标志位的数据包。然后Nmap会发送一个设置了ACK标志位的数据包来完成三次握手,在这个过程中会产生大量错误消息。

下面来测试分析一下这个实验,我这里使用物理机192.168.126.1去扫描虚拟机192.168.126.139
我们可以看到这段时间内有大量的TCP Connect活动出现,如此频繁地对大量TCP端口发起连接很可能意味有人正在对你的主机进行扫描。如果网络中部署了网络检测设备,当达到一定的阈值时就会报警。

可以看出这个时间段内正在尝试大量的端口进行连接

操作系统扫描的防范

当维护一个网络的时候,最简单的办法无非为系统及时打上补丁,及时安装更新等。但是真正这样并不能阻止他人的扫描,最好增加防火墙之类的安全设备。另外,Morph和IP Personality两款软件也是极为优秀的防护软件。
防范网络中进行的操作系统扫描,最好的办法就是提供虚假的信息来迷惑对方,可以使用上述两个软件。
具体的我也没用过,感兴趣的可以自己下一下试试。

问题

应该没啥大问题,这个环节主要是需要Nmap配合wireshake进行使用,这样实验的效果会更明显,理解起来也有帮助。

为什么最后一点才贴wireshake的图,因为我懒的贴图。

过段时间会更新wireshake的用法和操作

文章可能有的地方写的比较多,什么TTL,ACL这种基础的网络知识其实都不想写,就当给自己复习了。

原文地址:https://blog.51cto.com/14309999/2447795

时间: 2024-08-30 12:59:47

Nmap高级技术与防御措施的相关文章

GridView 高级技术

GridView 高级技术 汇总脚注 GridView 的主要目标是显示一组记录,但是你还可以加入一些有趣的信息,如汇总数据.需要如下的操作: 设置 GridView.ShowFooter 为 true ,这样可以显示脚注行(但没有数据) 在 GridView.FooterRow 中加入内容 本例假设正在处理产品列表,一个简单的汇总可以显示产品总价或均价.第一步是确定何时计算这个信息.如果正使用手工绑定(DataSource),那么可以在数据对象绑定到 GridView 之间就读取它的值并进行计

Mac地址泛洪攻击的防御措施和具体配置

Mac地址泛洪攻击指的是:利用交换机的mac地址学习机制,攻击者不断地刷新mac地址,填满交换机的mac地址表,以致崩溃,使交换机不得不使用广播发包,从而获取其他人的报文信息. mac地址泛洪攻击的防御措施和具体配置 限定接入交换机的接入的端口的数量. 例如:设置该交换机的该端口可以学习10个mac地址,超过了10个mac地址就停止学习,丢弃后来的mac.如图: 具体代码如下: [Huawei-Ethernet0/0/1] port-security enable [Huawei-Etherne

分享Java企业级开发必备高级技术(WebLogic、Tomcat集群,Apach调优)

Java自面世后就非常流行,发展迅速,对C++语言形成有力冲击.在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景,那么滋生的基于java项目也越来越多,对java运行环境的要求也越来越高,很多java的程序员只知道对业务的扩展而不知道对java本身的运行环境的调试,例如虚拟机调优,服务器集群等,所以也滋生本门课程的产生. Java企业级开发必备高级技术(WebLogic.Tomcat集群,Apach调优),刚刚买的,这个教程讲的很好,高清完整版,现低价转两个播放码,可以先

【ASP.NET Identity系列教程(三)】Identity高级技术

注:本文是[ASP.NET Identity系列教程]的第三篇.本系列教程详细.完整.深入地介绍了微软的ASP.NET Identity技术,描述了如何运用ASP.NET Identity实现应用程序的用户管理,以及实现应用程序的认证与授权等相关技术,译者希望本系列教程能成为掌握ASP.NET Identity技术的一份完整而有价值的资料.读者若是能够按照文章的描述,一边阅读.一边实践.一边理解,定能有意想不到的巨大收获!希望本系列博文能够得到广大园友的高度推荐. 15 Advanced ASP

Android LaunchAnyWhere (Google Bug 7699048)漏洞具体解释及防御措施

開始 近日,Google修复一个组件安全的漏洞LaunchAnyWhere(Google Bug 7699048). 这个漏洞属于Intend Based提取漏洞,攻击者利用这个漏洞,能够突破了应用间的权限隔离.达到调用随意私有Activity(exported为false)的目的. 该漏洞影响Android 2.3至4.3固件. 漏洞分析 在分析这个漏洞之前.须要先介绍两个东西. Account管理机制 从Android2.0開始.系统引入了Account管理机制.具体使用说明见Android

spring(7)spring mvc 的高级技术

[0]README 1)本文部分文字描述转自:"Spring In Action(中/英文版)",旨在review  "spring(7)spring mvc 的高级技术" 的相关知识: 2)本文将会看到如何编写控制器来处理文件上传,如何处理控制器所抛出的异常,以及如何在模型中传递数据,使其能够在重定向之后仍然存活: [1]spring mvc 配置的替代方案 [1.1] 自定义 DispatcherServlet配置 [1.2]添加其他的Servlet 和 Fil

Delphi2010中DataSnap高级技术

Delphi2010中DataSnap高级技术 日期:2010年12月1日 作者:SUNSTONE原创 人气:13498 查看:[大字体 中字体 小字体]  (1)—为DataSnap系统服务程序添加描述 这几天一直在研究Delphi 2010的DataSnap,感觉功能真是很强大,现在足有理由证明Delphi7该下岗了. DataSnap有三种服务模式,其中Service Application方式建立的windows服务没有描述,描述部分是空的,感觉总是欠缺点什么. 现找到办法添加描述: p

.Net高级技术

本次课程中讲的有的东西都是根据初学者的认知规律进行了调整,并不是严谨的,比如很多地方在多AppDomain条件下很多说法就不对了,但是说严谨了大家就晕了,因此继续不严谨的讲吧. 很多面试题都在这阶段的课程中. .Net高级技术属于拔高内容,根据自己的基础决定学习深度. 参考教材: <C#高级编程> <C#图解教程> <CLR Via C#> 正则表达式前奏:地狱 需求1:“192.168.10.5[port=8080]”,这个字符串表示IP地址为192.168.10.5

.net高级技术(class0515)

本次课程中讲的有的东西都是根据初学者的认知规律进行了调整,并不是严谨的,比如很多地方在多AppDomain条件下很多说法就不对了,但是说严谨了大家就晕了,因此继续不严谨的讲吧. 很多面试题都在这阶段的课程中. .Net高级技术属于拔高内容,根据自己的基础决定学习深度. 参考教材: <C#高级编程> <C#图解教程> <CLR Via C#> 正则表达式前奏:地狱 需求1:“192.168.10.5[port=8080]”,这个字符串表示IP地址为192.168.10.5