nmap如何扫描端口_nmap内网端口扫描教程

hacker|
319

nmap扫描端口命令

nmap扫描端口的命令是:nmap -PS ip地址。

使用该命令可以扫描目标地址所开放的端口地址,nmap 扫描器主要基本功能有三个,一是探测一组主机是否在线,其次是扫描主机端口,嗅探所提供的 *** 服务,还可以推断主机所用的操作系统。也可以深入探测 UDP 或者 TCP 端口,直至主机所使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。

以下是一些 nmap 常用的命令:

查看当前开放的端口:nmap localhost。

查看主机端口(1024-65535)中开放的端口:nmap -p 1024-65535 localhost。

探测目标主机开放的端口:nmap -PS ip 地址。

探测所列出的目标主机端口:nmap -p22,80,3306 ip 地址。

探测目标主机操作系统类型、端口服务名称、版本信息:nmap -sV -O localhost。

使用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 扫描原理及使用 ***

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侦测用法

参考:

Linux使用nmap扫描端口

安装nmap后(ubuntu通过apt-get install nmap安装),运行下列命令即可

nmap -p0-65535 目标ip地址

常用的扫描类型:

1、-sP(ping的方式扫描,检查主机在线与否,不发送任何报文到目的主机,想知道目标主机是否运行,而不想进行其它扫描,这扫描方式很常用)

2、-sL(仅仅列网段内出主机的状态、端口等信息,查询端口的话用 -p port,port1……)

3、 -PS/PA/PU [portlist](根据给定的端口用TCP或UDP报文探测:对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYNACK包))

4、-sS(TCP同步扫描(TCP SYN):发出一个TCP同步包(SYN),然后等待回对方应)

5、 -sF -sF -sN(秘密FIN数据包扫描、圣诞树 (Xmas Tree)、空(Null)扫描模式使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的,而使用SYN扫 描显示有打开的端口,你可以确定目标主机可能运行的是Windwos系统)

6、-sU(UDP扫描:nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果我们收到端口不可达的ICMP消息,端口就是关闭的,否则我们就假设它是打开的)

7、-P0 (No ping)(这个选项跳过Nmap扫描)

8、-PE/PP/PM

扫描类型的控制

1、sW (对滑动窗口的扫描)

2、-sR(RPC扫描)

3、 -PE; -PP; -PM (ICMP 类型的ping)

4、-PR (ARP 类型的ping-n (无 DNS 解析)

5、-R (为所有的目标做DNS解析)

6、-sV(对服务版本的检测)

常用的对主机的操作

1、-A或者-O(对操作系统的检测)

2、-v(增加信息的详尽程度)

3、-p(ports的范围)

nmap扫描工具的使用二 *** 探测

Nmap的6种端口状态:

            Open:开放状态

            Closed:关闭状态

            Filtered: 过滤状态(可能被过滤,可能 *** 阻塞)

            Unfiltered:未被过滤状态(可以访问,但未知端口处于开放还是关闭状态)

            Open|Filtered:开放还是过滤的

            Closed|Filtered:不能确定端口事关闭还是被过滤的

-T 时序选项

        -p|-F|-r  常用扫描方式

        -sS   TCP SYN扫描:(需要root权限)

        -sT  TCP连接扫描:完整三次握手,最基础最稳定的扫描方式

        -sU   UDP扫描(速度非常慢,一般用-p指定端口范围以节约时间)

        -sN/sF/sX  隐蔽扫描

        -sA   TCP ACK扫描

        -sW  TCP窗口扫描

        -sM   TCP Maimon扫描

        –scanflags  自定义TCP扫描

        -sI   空闲扫描

        -sO  IP协议扫描

        -b *  FTP Bounce扫描

时序选项:

        -T0(偏执的):非常慢的扫描,用于IDS逃避

        -T1(鬼祟的):缓慢的扫描,用于IDS逃避

        -T2(文雅的):降低速度以降低对带宽的消耗,一般不同

        -T3(普通的):默认,根据目标的反应自动调整时间

        -T4(野蛮的):快速扫描,常用,需要在很好的 *** 环境下进行扫描,请求可能会淹没目标

        -T5(疯狂的):极速扫描,以牺牲准确度来提升扫描速度

例子:

(1)指定端口扫描:

nmap -p 80 192.168.20.16

    如图,直接输入nmap -p 80 192.168.20.16的时候提示Host seems down。我们可以通过ping命令来确定 *** 的连通性,此处使用的命令是ping 192.168.20.16,发现可以ping通,即 *** 是通的, 使用Ctrl+z停止执行ping命令。 再使用nmap -p 80 192.168.20.16命令的时候就可以出现正确的结果了。

ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

nmap -p 80-1000 192.168.20.16

(2)TCP SYN扫描:

     ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

     nmap -sS 192.168.20.16

     又称为半开放(需要root权限),常见扫描方式,扫描速度较快,由于未进行TCP连接,比较隐蔽,很难背防火墙或管理员发现

(3)隐蔽扫描

     ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

     nmap -sN 192.168.20.16

     -sN是Null扫描

     ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

     nmap -sF 192.168.20.16

     -sF是Fin扫描(发送FIN包)

     ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

     nmap -sX 192.168.20.16    

           -sX是Xmas扫描(将数据包的FIN/PSH/URG都标记为1)

(4)TCP ACK扫描

         ping 192.168.20.16(使用Ctrl+z停止执行ping命令)

         nmap -sA 192.168.20.16

致命缺点:无法确定端口是否开放还是被过滤

*** 安全: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服务器。

0条大神的评论

发表评论