百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

安全运维工具Nmap介绍——主机发现研究(下篇)

xsobi 2024-12-01 05:41 1 浏览

一、前言

接上一篇安全运维工具Nmap介绍——主机发现研究(上篇)发现当时的环境并不严谨,所以搭建了个测试环境,如下:

192.168.23.170 HFish和防火墙都没开
192.168.23.171 HFish和防火墙都开(应该可以被扫描到) 
192.168.23.172 HFish开,防火墙没开 
192.168.23.173 HFish没开,防护墙开(应该可以被扫描到)
192.168.23.174 都没开 
192.168.23.175-192.168.23.178 没有这三台机器

注意上面的HFish是一个蜜罐软件,用来模拟端口打开,因为我给测试环境的机器开真实服务端口,很浪费时间,所以就有蜜罐来代替!

二、主机发现测试

  • 2.1 基础主机发现
nmap -sn 192.168.23.170-178

如上23.171和23.173果然被发现,这确实是由于防火墙没打开,可以ping通的结果,但其他机器23.170、23.172、23.174开启了,却没有扫描到,以至于认为不存在,这也是很多系统运维人的误区。

  • 2.2 无Ping扫描
nmap -sn -Pn 192.168.23.170-178

扫描的结果都返回存在,证明-sn 和-Pn不能同时使用,是错误的用法

查询官方文档发现,Pn参数的意思是将所有指定的主机视作开启的,跳过主机发现的过程,所以会出现全部存在的状况!!

  • 2.3 sP扫描
nmap -sP 192.168.23.170-178

sP参数也只进行主机发现,不进行端口扫描。结果与sn参数相同,但是sP参数只进行ping扫描,而sn会发送四种不同类型的数据包来探测目标主机是否在线,只要收到其中一个包的回复,那就证明目标机开启。使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误。

不过sP选项扫描也有一个优点,它可以轻易的获取目标信息而又不被轻易发现。在默认的情况下Nmap会发送一个ICMP回声请求和一个TCP报文到目标端口。ping扫描的优点是不会返回太多的信息造成对结果的分析干扰,并且这是一种非常高效的扫描方式。简而言之,sP扫描到的机器一定存在,那么可以用来确定网段,如果出现sP扫描完全没有任何结果,但是确认存在某网段,那么该网络一定配置了禁ping的安全设备。

  • 2.4 自定义扫描

-PS/PA/PU/PY 这些选项是通过发送SYN/ACK/UDP/SCTP包探测确认端口号的,在参数后面都可以添加端口列表来自定义扫描的端口

SCTP与TCP的最大不同之处在于它是多宿主(Multi-homing)连接,而TCP是单地址连接。

用法如下:

nmap -PS[portlist] 192.168.100.0/24
nmap -PA[portlist] 192.168.100.0/24 
nmap -PU[portlist] 192.168.100.0/24
nmap -PY[portlist] 192.168.100.0/24

经过分析,默认情况下本机地址通过发TCP连接,将SYN置1,如果收到ACK+RST包,则判定主机存活,并进一步探测端口。ACK/UDP/SCTP探测原理相同。(这里如果判定不存活,就不会再扫描端口),-PO选项,使用IP协议ping,通过抓包分析,探测过程与PS一致,这里不多描述。

TCP SYN Ping 扫描发送了一个设置了SYN标志的空TCP报文。默认是扫描目标的80端口,这样太单一了,所以我们通过"-PS22,23,25,80,115,3306,3389"进行设定扫描常用的端口。

通常情况下,nmap默认使用TCP ACK 和ICMP Echo请求对目标进行是否存活的响应,当目标主机的防火墙阻止这些请求时,可以使用 TCP SYN Ping扫描对目标主机是否存活进行判断。

Nmap是通过SYN/ACK和RST响应来对目标主机是否存活进行判断,但在特定的情况下防火墙会丢弃RST包,这种情况下扫描的结果会不准确,这时需要指定一个端口或者端口范围来避免这种情况。

例如输入命令:nmap -PS21-1000,3389 -sn 192.168.23.170-178,可以看到下面输出了完全正确的结果,但是注意这里扫描的端口还是比较多,可以选择一些特定服务的端口来扫描最好,可以减少被发现的可能

这里的逻辑是这样的,171和173可以ping通,并且一旦有端口回应便认为存在,而170,172,174不可以ping通,但有端口回应也视为存在,而175-178,不可以ping通过, 所有端口不回应便认为不存在!!

到现在我们总结一下:

nmap -sP 192.168.23.170-178 速度最快,但结果最差,也最安全,但是有防火墙禁ping的话完全无效

nmap -PU -sn 192.168.23.170-178 如果网络在设备禁ping,但是主机防火墙开放,使用PU更方便快捷安全

nmap -sn 192.168.23.170-178 速度最快,结果一般,比较安全,除可以ping通的,其他80或443开放

nmap -PS21-1000,3389 -sn 192.168.23.170-178 速度最慢,结果最准确,但是容易被发现,自由度最高,可以自定义端口只扫描开放某端口的存活机器,后者比端口扫描识别服务不容易被发现

  • 2.5 无ping扫描

用法如下,注意 -P0 是0而不是字母o

nmap -P0 192.168.xx.xx

防火墙禁止ping的情况下,可以用无ping扫描,有穿透防火墙,避免被防火墙发现的效果。但测试后发现结果并不准确,只能用来探测网段。

  • 2.6 ARP ping 扫描

用法如下:

nmap -PR 192.168.xx.xx

局域网内的扫描,如果我们发现目标主机就在它所在的局域网上,可以使用ARP扫描,这个扫描速度最快,且最为精准。

三、主机扫描总结

前面部分写得稍微复杂,有很多运维同学反映还是有点看不懂,所以我这里给大家写了一个总结,如果不想了解原理,可以直接收藏下面的总结,详细总结了各种网络情况下主机扫描的使用。

nmap -PR -sn 192.168.23.171-178 局域网内扫描最快,最精确,最安全

nmap -sP 192.168.23.170-178 速度最快,但结果最差,也最安全,但是有防火墙禁 ping 的话完全无效

nmap -PU -sn 192.168.23.170-178 如果网络有安全设备禁ping,但是主机防火墙开放, 使用PU更方便快捷安全

nmap -sn 192.168.23.170-178 速度最快,结果一般,比较安全,除可以ping通的,其他80或443端口开放

nmap -PS21-1000,3389 -sn 192.168.23.170-178 速度最慢,结果最准确,但是容易被发现,自由度最高,可以自定义端口只扫描开放某端口的存活机器,后者比端口扫描识别服务不容易被发现

相关推荐

好用的云函数!后端低代码接口开发,零基础编写API接口

前言在开发项目过程中,经常需要用到API接口,实现对数据库的CURD等操作。不管你是专业的PHP开发工程师,还是客户端开发工程师,或者是不懂编程但懂得数据库SQL查询,又或者是完全不太懂技术的人,通过...

快速上手:Windows 平台上 cURL 命令的使用方法

在工作流程中,为了快速验证API接口有效性,团队成员经常转向直接执行cURL命令的方法。这种做法不仅节省时间,而且促进了团队效率的提升。对于使用Windows系统的用户来说,这里有一套详细...

使用 Golang net/http 包:基础入门与实战

简介Go的net/http包是构建HTTP服务的核心库,功能强大且易于使用。它提供了基本的HTTP客户端和服务端支持,可以快速构建RESTAPI、Web应用等服务。本文将介绍ne...

#小白接口# 使用云函数,人人都能编写和发布自己的API接口

你只需编写简单的云函数,就可以实现自己的业务逻辑,发布后就可以生成自己的接口给客户端调用。果创云支持对云函数进行在线接口编程,进入开放平台我的接口-在线接口编程,设计一个新接口,设计和配置好接口参...

极度精神分裂:我家没有墙面开关,但我虚拟出来了一系列开关

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:iN在之前和大家说过,在iN的家里是没有墙面开关的。...

window使用curl命令的注意事项 curl命令用法

cmd-使用curl命令的注意点前言最近在cmd中使用curl命令来测试restapi,发现有不少问题,这里记录一下。在cmd中使用curl命令的注意事项json不能由单引号包括起来json...

Linux 系统curl命令使用详解 linuxctrl

curl是一个强大的命令行工具,用于在Linux系统中进行数据传输。它支持多种协议,包括HTTP、HTTPS、FTP等,用于下载或上传数据,执行Web请求等。curl命令的常见用法和解...

Tornado 入门:初学者指南 tornados

Tornado是一个功能强大的PythonWeb框架和异步网络库。它最初是为了处理实时Web服务中的数千个同时连接而开发的。它独特的Web服务器和框架功能组合使其成为开发高性能Web...

PHP Curl的简单使用 php curl formdata

本文写给刚入PHP坑不久的新手们,作为工具文档,方便用时查阅。CURL是一个非常强大的开源库,它支持很多种协议,例如,HTTP、HTTPS、FTP、TELENT等。日常开发中,我们经常会需要用到cur...

Rust 服务器、服务和应用程序:7 Rust 中的服务器端 Web 应用简介

本章涵盖使用Actix提供静态网页...

我给 Apache 顶级项目提了个 Bug apache顶级项目有哪些

这篇文章记录了给Apache顶级项目-分库分表中间件ShardingSphere提交Bug的历程。说实话,这是一次比较曲折的Bug跟踪之旅。10月28日,我们在GitHub上提...

linux文件下载、服务器交互(curl)

基础环境curl命令描述...

curl简单使用 curl sh

1.curl--help#查看关键字2.curl-A“(添加user-agent<name>SendUser-Agent<name>toserver)”...

常用linux命令:curl 常用linux命令大全

//获取网页内容//不加任何选项使用curl时,默认会发送GET请求来获取内容到标准输出$curlhttp://www.baidu.com//输出<!DOCTYPEh...

三十七,Web渗透提高班之hack the box在线靶场注册及入门知识

一.注册hacktheboxHackTheBox是一个在线平台,允许测试您的渗透技能和代码,并与其他类似兴趣的成员交流想法和方法。它包含一些不断更新的挑战,并且模拟真实场景,其风格更倾向于CT...