nmap扫描期间端口状态_nmap非端口扫描状态

hacker|
131

网络安全:Nmap端口扫描

nmap -sS minimum ip/范围

TCP SYN scans: 

nmap -sS target ip

nmap使用在连接层的Address Resolution Protocol询问target ip的MAC地址,并获得回应,但是没有TCP包。

nmap显示所有端口都被过滤了,猜想是防火墙过滤了TCP SYN的包。后来发现是虚拟机网络的混杂模式设为了拒绝,调成允许所有之后:

nmap发出了1000个TCPSYN,等待目标主机TCP ACK回应,打开的端口在ACK中包含Source port=自己的端口号,关闭的端口Source port=54247。

1000个端口中有四个端口打开了。

UDP scans:

nmap -sU target ip --host-timeout 100

设置timeout以免等待时间过长。

nmap发出了UDP包,等待目标主机ICMP 70/110 Destination unreachable回应。

扩大搜索范围以纳入更高端口。

nmap --top-ports 10000 target ip 

nmap -p 10000-30000 target ip 

nmap -sV -p 13337 target ip 

这是一个Apache HTTP服务器。

nmap扫描的几种方式

原文 the art of port scanning

这种方式最简单。直接与被扫描的端口建立tcp链接,如果成功,则说明端口开放,如果不成功则说明端口关闭的。这种扫描的特点是与被扫描端口建立完成的tcp链接,完整的tcp三次握手。优点主要是不需要root权限即可扫描端口。因为connect可以在用户态直接调用

这种扫描方式又被称为tcp半开放扫描。顾名思义,这种扫描不需要建立完整的tcp连接,即可扫描端口的状态。发送tcp syn数据包,这个也是tcp握手的第一个包。如果端口开放,则会返回 tcp syn+ack数据包。如果端口关闭,则返回 tcp rst数据包。这样我们就不用进行tcp 握手的第三步,也可以探测端口的状态。这种扫描需要构建raw socket。所以需要root权限

有些时候防火墙绘过滤tcp syn数据包,有些时候会记录syn数据包并检测时候有nmap扫描。这时候可以使用TCP FIN scanning。这种方式很简单。发送tcp FIN数据包到待测端口。如果返回RST数据包,则说明该端口关闭,如果无返回则说明该端口开放。这时tcp协议的一个BUG,所以这种扫描方式不一定百分之百可靠(例如windows),但是这种扫描方式适合大部分 *NIX 系统。

在RFC 793的第65页写到,如果目的端口的是关闭的,并且接受到的tcp数据包如果可能会导致系统错误,则返回RST。如果开放的端口接受到诸如SYN RST ACK,则丢弃或者不做任何处理。根据此RFC描述,我们可以发送不包含SYN RST或者ACK标志的数据包,如果返回RST则说明端口是关闭状态,如果什么都没有返回则说明端口是开放状态。

上面这三种扫描的结果都是一致的,如果接受到到RST,则说明端口是关闭的。如果无响应,则端口可能是开放或者filteted状态。如果返回icmp unreachable error(type 3, code 0, 1, 2, 3, 9, 10, 13),则说明端口一定是filtered的。

这种扫描只设置tcp ack标志位。这种扫描一般来探测防火墙是否过滤被扫描的端口。如果扫描的端口未被防火墙保护,那么无论是开放或者是关闭,都会返回RST。nmap将该端口标记为未被封锁的(unfiltered),但是不能确定该端口是开放或者关闭状态。如果无响应,或者返货icmp error,则该端口一定被防火墙封锁了

tcp窗口扫描,如果接收到RST,则说明端口封锁了。在某些操作系统,开放的端口会返回一个正数的tcp窗口值,如果端口关闭,则返回tcp窗口值为0或者负数。但是这种扫描不是很靠谱

这种扫描为发送同时设置FIN/ACK的数据包。如果返回RST,则说明端口是开放的,如果无响应,则是关闭状态的。

这种是专门扫描ip协议的。扫描类似于udp扫描,如果IP协议号不存在,返回 icmp错误。具体没用过,不太好写

如果udp端口开放,则无响应。如果udp端口关闭,则会返回icmp unreachable error错误。这种扫描需要root权限,因为需要构建raw socket。

这种直接一个一个建立udp连接,如果能建立,则说明端口开放,不能建立则端口关闭呗。

使用Nmap进行端口扫描

    在未经授权的情况下夺取计算机系统控制权的行为是 违法行为, 此篇文章仅作为学习交流和探讨,若要测试成果,请在自己虚拟机上测试,或者被允许渗透的计算机系统上演练, 请勿做出违法之骚操作,操作者做出的一切违法操作均与本人和此文无关

    本文使用Nmap进行扫描,其他扫描手段本文不进行探讨

    Nmap是端口扫描方面的业内标准,网上的资料让人眼花缭乱,时至今日,各式各样的防火墙已经普遍采用了入侵检测和入侵防御技术,他们能够有效地拦截常见的端口扫描,所以,即使使用Nmap程序扫描结果一无所获也不是什么意外的事。换句话说, 如果你在公网上对指定网段进行主机扫描时没检测出一台在线主机,那么就应当认为扫描行动多半是被防火墙系统拦截下来了,反之则是另一种极端情况:每台主机都在线,每个端口都处于开放状态

SYN扫描

    所谓的SYN扫苗实际上是一种模拟TCP握手的端口扫描技术。TCP握手分为3个阶段:SYN、SYN-ACK、ACK。在进行SYN扫描时,Nmap程序向远程主机发送SYN数据包并等待对方的SYN-ACK数据。 如果在最初发送SYN数据包之后没有收到SYN-ACK响应,那么既定端口就不会是开放端口,在此情况下,既定端口不是关闭就是被过滤了

    在使用Nmap扫描之前,可以先使用maltego之类的信息搜集工具分析出有用的信息。我使用一个非法网站的IP来作为演示

需要注意的是,某个端口是开放端口不代表这个端口背后的程序存在安全缺陷,我们仅能够通过开放端口初步了解计算机运行的应用程序,进而判断这个程序是否存在安全缺陷

    版本扫描

    虽然SYN扫描具有某种隐蔽性,但它不能告诉我们打开这些端口的程序到底是什么版本,如果说我们想要知道这台主机的某个端口在运行着什么程序以及它运行的版本,这在我们后期威胁建模阶段有极大的用处, 使用-sT或者-sV 即可查看

    运气很好,看来这个网站运行的程序有安全漏洞,这个名为OpenSSH 5.3的软件存在着一个CVE-2016-10009漏洞,攻击者可以通过远程攻击openssh来获得服务器权限。我们在这里不做攻击操作,毕竟这是别人的网站,虽然是个违法网站。如果有机会后期笔者将会根据情况写一些关于漏洞利用的文章

UPD扫描

    Nmap的SYN扫描和完整的TCP扫描都不能扫描UDP,因为UDP的程序采用无连接的方式传输。在进行UDP扫描时,Nmap将向既定端口发送UPD数据包,不过UDP协议的应用程序有着各自不同的数据传输协议,因此在远程主机正常回复该数据的情况下,能够确定既定端口处于开放状态。 如果既定端口处于关闭状态,那么Nmap程序应当收到ICMP协议的端口不可达信息。 如果没有从远程主机收到任何数据那么情况就比较复杂了,比如说:端口可能处于发放状态,但是响应的应用程序没有回复Nmap发送的查询数据,或者远程主机的回复信息被过滤了,由此可见 在开放端口和被防火墙过滤的端口方面,Nmap存在相应的短板

扫描指定端口

    指定端口的扫描可能造成服务器崩溃,最好还是踏踏实实的彻底扫描全部端口 。就不拿别人的服务器来测试了,毕竟我也怕被报复,在这里我把渗透目标设置为我自己的xp靶机,步骤跟前面一样,扫描出端口查看是否有可利用程序,然后对想扫描的端口进行扫描

    

在渗透测试中,我们都不希望致使任何服务器崩溃,但是我们的确可能会遇到那些无法正确受理非预期输入的应用程序,在这种情况下,Nmap的扫描数据就可能引发程序崩溃

nmap端口扫描结果状态有哪些

nmap端口状态解析

open , 应用程序在该端口接收 TCP 连接或者 UDP 报文。

closed 关闭的端口对于nmap也是可访问的, 它接收nmap探测报文并作出响应。但没有应用程序在其上监听。

filtered 由于包过滤阻止探测报文到达端口,nmap无法确定该端口是否开放。过滤可能来自专业的防火墙设备,路由规则 或者主机上的软件防火墙。

unfiltered 未被过滤状态意味着端口可访问,但是nmap无法确定它是开放还是关闭。 只有用于映射防火墙规则集的 ACK 扫描才会把端口分类到这个状态。

open | filtered 无法确定端口是开放还是被过滤, 开放的端口不响应就是一个例子。

没有响应也可能意味着报文过滤器丢弃了探测报文或者它引发的任何反应。UDP,IP协议, FIN, Null 等扫描会引起。

nmap--网络探测和安全审核工具

它曾经在电影《黑客帝国》中出现过,是黑客和网络安全人员经常用到的工具.

nmap是一个开源免费的网络发现工具,通过它能够找出网络上在线的主机,并测试主机上哪些端口处于监听状态,接着通过端口确定主机上运行的应用程序类型与版本信息,最后利用它还能侦测出操作系统的类型和版本。

一、nmap基本功能与结构

主要有如下四个基本功能:

如果希望了解目标主机更多的信息,可以通过完全扫描的方式实现,nmap命令内置了“-A”选项,可以实现对目标主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统识别等完整全面的扫描,命令形式如下:

其中,

主机发现主要用来判断目标主机是否在线,其扫描原理类似于ping命令,通过发送探测数据包到目标主机,如果能收到回复,那么认为目标主机处于在线状态。nmap支持多种不同的主机探测方法,例如发送TCP SYN/ACK包、发送SCTP包、主机发现主要用来判断目标主机是否在线,其扫描原理类似于ping命令,通过发送探测数据包到目标主机,如果能收到回复,那么认为目标主机处于在线状态。nmap支持多种不同的主机探测方法,例如发送TCP SYN/ACK包、发送SCTP包、

端口扫描是nmap最核心的功能,通过端口扫描可以发现目标主机上TCP、UDP端口的开放情况。nmap在默认状态下会扫描1000个最有可能开放的端口,并将侦测到的端口状态分为6类,分别是:

Nmap 扫描原理及使用方法

Nmap 扫描原理及使用方法

Namp包含四项基本功能

Nmap基本扫描方法

2.1 用法引入

2.1.1确定端口状况

确定目标主机在线情况及端口基本状况。

命令形式:

namp targethost

2.1.2 完整全面的扫描

对主机进行完整全面的扫描,那么可以使用nmap内置的-A选项。使用该选项,nmap 对主机进行主机发现、端口扫描、应用程序与版本侦测、操作系统侦测及调用默认NSE脚本扫描。

1)命令形式:

nmap -T4 -A -v targethost

2)参数详解:

2.2 主机发现

2.2.1 主机发现原理

主机发现发现的原理与Ping命令类似,发送探测包到目标主机,如果收到回复,说明目标主机是开启的。

1)常见主机探测方式:

2)案例:

Nmap的用户位于源端,IP地址192.168.0.5,向目标主机192.168.0.3发送ICMP Echo Request。如果该请求报文没有被防火墙拦截掉,那么目标机会回复ICMP Echo Reply包回来。以此来确定目标主机是否在线。

3)默认情况下:Nmap会发送四种不同类型的数据包来探测目标主机是否在线。

依次发送四个报文探测目标机是否开启。只要收到其中一个包的回复,那就证明目标机开启。使用四种不同类型的数据包可以避免因防火墙或丢包造成的判断错误。

2.2.2 主机发现的用法

2.3 端口扫描

Namp通过探测将端口划分为6个状态:

2.3.1 端口扫描原理

2.3.1.1 TCP SYN scanning

TCP SYN scanning 是Nmap默认的扫描方式,称作半开放扫描。

原理:该方式发送SYN到目标端口。

2.3.1.2 TCP connect scanning

原理:TCP connect 方式使用系统网络API connect 向目标主机的端口发起连接。

优缺点:该方式扫描速度比较慢,而且由于建立完整的TCP连接会在目标机上留下记录信息,不够隐蔽。所以,TCP connect是TCP SYN无法使用才考虑选择的方式。

2.3.1.3 TCP ACK scanning

原理:向目标主机的端口发送ACK包。

优缺点:该方式只能用于确定防火墙是否屏蔽某个端口,可以辅助TCP SYN的方式来判断目标主机防火墙的状况。

2.3.1.4 TCP FIN/Xmas/NULL scanning

这三种扫描方式被称为秘密扫描(Stealthy Scan)

原理:FIN扫描向目标主机的端口发送的TCP FIN包或Xmas tree包/Null包

其中Xmas tree包是指flags中FIN URG PUSH被置为1的TCP包;NULL包是指所有flags都为0的TCP包。

2.3.1.5 UDP scanning

UDP扫描方式用于判断UDP端口的情况。

原理:向目标主机的UDP端口发送探测包。

2.3.2 端口扫描用法

2.3.2.1 扫描方式选项

2.3.2.2 端口参数与扫描顺序

2.4 版本侦测

2.4.1 优缺点

2.4.2 版本侦测原理

2.4.3 版本侦测用法

2.5 OS侦测

2.5.1 OS侦测原理

2.5.2 OS侦测用法

参考:

0条大神的评论

发表评论