端口扫描详解(kali linux)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37367124/article/details/80157750

简介

nmap 是被专业人员广泛使用的一款端口扫描工具,使用灵活,它已经是渗透人员必备的工具。还具备以下功能

(1)主机探测:Nmap 可查找目标网络中的在线主机。默认情况下,Nmap通过4方式———ICMP echo 请求(ping)、向 443 端口发送 TCP SYN 包、向80 端口发送 TCP ACK包和ICMP 时间戳请求——发现目标主机。

(2)服务/版本检测:在发现开放端口后,Nmap 可进行进一步检查目标主机的检测服务协议、应用程序名称、版本号等信息。

(3)操作系统检测

(4)网络路由跟踪:它通过多种协议访问目标主机的不同端口,以尽可能访问目标主机。Nmap路由跟踪功能从TTL的高值开始测试,逐步递减,到零为止。

(5)Nmap脚本引擎:如果你想要实现这个功能,可以利用他的脚本引擎手写一个检测脚本。目前,Nmap可检查网络服务的漏洞,还可以枚举目标系统的资源。

kali Linux安装

apt-get update

apt-get install nmap

1.指定扫描目标

(1)单个主机如  nmap 10.29.1.113

(2)以CIDR标记法表示整个网段 如 nmap 10.29.1.0/24 

(3)十进制的IP区间如 nmap 10.29.1-5.1 表示4个网段的IP

(4)多个主机目标10.29.1.1 10.29.3-5.1

ps: nmap 仅支持标准格式的IPv6地址和以主机名方式指定的IPv6主机地址

现在进行扫描10.29.1.0/24 整个网段。 抓取一下数据包如图

表示确实有流量的流经。

根据以上的信息可以得知,我们的主机从44587端口向目标主机的443端口(https)发送含有SYN标识位的数据包。默认情况下,在Kali Linux 里以root身份启动 Nmap后,程序发送的数据包都会设有SYN标识

再看看 扫描后得到的一小段信息(信息很多,这里随便选两个解释)

上面扫描了整个网段的ip,扫描了1000个10.29.1.23 这个主机的端口,全是关闭的。

下面的 999个关闭只有一个打开。(原谅一下我的打码,毕竟是别人的隐私,嘿嘿)

2. TCP 扫描  

默认情况下Nmap会采用 TCP SYN 扫描。权限不足的情况下进行TCP连接扫描。主要扫描方式如下:

TCP 连接扫描  (-sT),和所有端口建立三次握手,比较慢,而且会被目标记录。权限不足时默认此方式。

SYN 扫描 -sS)使用SYN标志位的数据包进行端口探测,速度非常嗨皮,不会建立三次握手,隐蔽,高级权限下默认此方式。

TCP NULL (-sN) FIN、(-sF)、XMAS(-sX)扫描

TCP Maimon 扫描 (-sM)含有 FIN\ACK 标识,如果端口开放则丢弃数据包,如果关闭则回复 RST

TCP ACK 扫描(-sA)检测目标是否采用防火墙,并且能确定哪些端口能被防火墙屏蔽,只有一个ACK标识

TCP 窗口扫描(-sW)返回字段 ,开放为正值,否则为0.

TCP Idle扫描(-sI)采用这种技术后,通过指定的僵尸机发送扫描数据包,本机不与目标主机直接通信。如果对方网络里有IDS,IDS将认为发起扫描的是僵尸主机。

3.UDP扫描选项

UDP仅有一种扫描方式(-sU),虽然没有TCP方式的可靠度高但是不能轻视,毕竟UDP端口代表着可能会有价值的服务端程序。

UDP扫描最大的问题是性能问题,Linux内核限制1秒最多发送一次 ICMP Port UNreachable信息,按照这个速度,对一台主机的65536个UDP端口进行完整的扫描必定超过18个小时。

改善速度的主要方式:

(1)进行并发的UDP扫描

(2)优先扫描常用端口

(3)在防火墙后面扫描

(4)启用 --host-timeout 选项跳过响应过慢的主机

假如我们需要找到目标主机开放了哪些UDP 端口。仅扫描53(DNS)和161端口(SNMP)如下

  nmap  -sU 10.29.133 -p 53,161

4.目标端口选项

默认情况下,Nmap将从每个协议的常用端口中随机选择1000个端口进行扫描。其nmap-services 文件对端口命中率进行了排名。如需更改配置,可使用以下几个选项。

(1)-p 端口范围 -p 1-1024

(2)快速扫描  -F 仅将扫描100常用的端口

(3)-r 顺序扫描 从小到大顺序扫描

(4)-top-ports <1 or greater> 扫描nmap-services 里面排名前N的端口。

以NULL方式扫描目标主机的22 25 端口如下

nmap -sN -P 22,25 10.19.1.133   如图

捕获数据信息如下

5.输出选项

将扫描结果输出便于阅读

nmap 10.29.1.26 -oX ~/Desktop/test.xml

从上面结果看出 TCP协议下的 7800 端口是打开的

查看

HTML文件的可读性比XML要高,所以一般会将XML转换成HTML格式

xsltproc ~/Desktop/test.xml  -o text.html  

直接在桌面上点开就可以查看扫描结果如下

如果端口开的多了可以用这种方法,它可以保存你每次扫描完后的结果以免丢失或者让你再次扫描。

强力检测选项

nmap -A ip   检测目标主机下述信息(时间较长),包含以下信息:

检测服务端软件版本信息  nmap -sV ip

操作系统 系统识别     nmap -O ip

脚本扫描    -sC

Traceroute --traceroute  

6.脚本引擎

auth            使用暴力破解等技术找出目标系统的认证信息

default        启用 -sC或者 -A 执行。速度快,输出内容丰富,不会侵入目标系统,能泄露信息给第三方

discover      用于探索网络

dos              拒绝服务攻击

exploit         利用目标系统的安全漏洞(获取许可之后进行) 

external       可能泄露信息给第三方

instrusive     导致目标系统崩溃,或者耗尽目标系统所有资源

fuzzer           对目标系统进行测试

malware       检查目标系统上是否有恶意软件或者后门

safe               不会导致崩溃、拒绝服务且不利用漏洞

version        配合 -sV 选项,对目标的服务程序深入版本检测

vuln            检测目标系统的安全漏洞

在 kali 里,脚本位于/usr/share/nmap/scripts.共 430 多个脚本。

7.规避检测

-f (使用小数据包)避免对方识别出我们探测的数据包

-mtu 调整数据包大小,必须是8的倍数,否则报错

-D   诱饵  这个选项指定假ip,使用之后扫描的时候回掺杂其他的ip,以藏木于林的方法隐藏我方ip,也就是说对方的log还会记录本机的真实ip,你也可以使用RAD生成随机的假IP地址,或者用 RND: number 的参数生成<number>个ip。你所指定的诱饵主机应当在线,否则很容易击溃目标主机。另外过多的诱饵可能会造成网络拥挤,尤其是在扫描网络的时候,最好避免这种现象。

--source-port<portnumber> 或 -g (模拟源端口)如果防火墙只允许某些源端口的入站流量,这个选项就非常有用

--date-length  改变数据包的长度与,避免被识别。

--max-parallelism  限制Nmap的并发扫描的最大连接数

--scan-delay <time> 控制探测数据时间间隔。

猜你喜欢

转载自blog.csdn.net/qq_37367124/article/details/80157750