如何扫描udp端口_udp端口扫描实现原理

hacker|
152

什么叫udp扫描啊

高级UDP扫描技术

在UDP实现的扫描中,多是了利用和ICMP进行的组合进行,这在ICMP中以及提及了。还有一些特殊的就是UDP回馈,比如SQL SERVER,对其1434端口发送‘x02’或者‘x03’就能够探测得到其连接端口。

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

参考:

采用tcp syn扫描的方法进行端口扫描,存在哪些优点和缺点

呵呵,我来简单回答一下吧!

首先你搞错了一个问题,就是没有syn扫描这种东西,只有tcp扫描和udp扫描。而tcp扫描一般是使用tcp的syn数据包来进行的,也就是不严格地说,你说的这两个是同一个东西,呵呵!

所以我在这里详细地解释一下tcp扫描和udp扫描以及它们的区别,希望能对你有所帮助。

tcp端口扫描是通过syn数据包进行的,用于扫描目标机器的端口上是否存在程序监听,通常意义上,普通个人机器上的某个端口如果有程序监听的话,那么它一般是系统漏洞。由于tcp是一个有连接的可靠协议,所以要使用三次握手来建立连接,三次握手的报文分别是(syn)、(ack

syn)和(ack)。进行端口扫描时,首先向对方主机的某一端口发送(syn)报文,如果对方这一端口上有程序在监听(或者说存在漏洞),则回复(syn

ack)报文,否则回复(rst)报文。据此就可以判断对方端口上是否有程序在监听了,或者是否存在漏洞了。

udp端口扫描是通过普通数据包进行的,也是用于扫描对方端口上是否有程序在运行,就像上面所说的,如果普通个人机器上存在这样的端口,那一般也是系统漏洞。但对于udp来说,不存在监听这个概念,因为它是无连接不可靠的协议,发送数据包过去以后,通常也不会有任何的对等回应。因此,udp端口扫描主要是检测是否存在icmp端口不可达数据包。若该数据包出现,则说明对方这一端口上没有程序在监听,或者说该端口不存在漏洞,否则就说明该端口上有程序在监听,或者说存在漏洞。

呵呵,现在可以总结一下他们的区别了,主要是以下几点:

1.

tcp是有连接的协议,而udp是无连接的;

2.

tcp扫描检测(ack

syn)或者是(rst)报文,而udp检测icmp端口不可达报文;

3.

tcp协议是可靠但低效的,可以有效进行端口扫描,范围广,效率低,可以应用于任何网络中;udp协议时不可靠但高效的,范围小,效率高,一般应用于局域网内部,随着网络规模的增大,udp端口扫描的结果准确度会越来越差,极端情况是,如果对internet使用udp端口扫描,所得到的结果一定不准确。

呵呵,回答完毕,希望能对你有所帮助!

渗透测试之端口扫描

端口扫描:端口对应网络服务及应用端程序

服务端程序的漏洞通过端口攻入

发现开放的端口

更具体的攻击面

UDP端口扫描:

如果收到ICMP端口不可达,表示端口关闭

如果没有收到回包,则证明端口是开放的

和三层扫描IP刚好相反

Scapy端口开发扫描

命令:sr1(IP(dst="192.168.45.129")/UDP(dport=53),timeout=1,verbose=1)

nmap -sU 192.168.45.129

TCP扫描:基于连接的协议

三次握手:基于正常的三次握手发现目标是否在线

隐蔽扫描:发送不完整的数据包,不建立完整的连接,如ACK包,SYN包,不会在应用层访问,

僵尸扫描:不和目标系统产生交互,极为隐蔽

全连接扫描:建立完整的三次握手

所有的TCP扫描方式都是基于三次握手的变化来判断目标系统端口状态

隐蔽扫描:发送SYN数据包,如果收到对方发来的ACK数据包,证明其在线,不与其建立完整的三次握手连接,在应用层日志内不记录扫描行为,十分隐蔽,网络层审计会被发现迹象

僵尸扫描:是一种极其隐蔽的扫描方式,实施条件苛刻,对于扫描发起方和被扫描方之间,必须是需要实现地址伪造,必须是僵尸机(指的是闲置系统,并且系统使用递增的IPID)早期的win xp,win 2000都是递增的IPID,如今的LINUX,WINDOWS都是随机产生的IPID

1,扫描者向僵尸机发送SYN+ACY,僵尸机判断未进行三次握手,所以返回RST包,在RST数据包内有一个IPID,值记为X,那么扫描者就会知道被扫描者的IPID

2,扫描者向目标服务器发送SYN数据包,并且伪装源地址为僵尸机,如果目标服务器端口开放,那么就会向僵尸机发送SYN+ACK数据包,那么僵尸机也会发送RST数据包,那么其IPID就是X+1(因为僵尸机足够空闲,这个就为其收到的第二个数据包)

3,扫描者再向僵尸机发送SYN+ACK,那么僵尸机再次发送RST数据包,IPID为X+2,如果扫描者收到僵尸机的IPID为X+2,那么就可以判断目标服务器端口开放

使用scapy发送数据包:首先开启三台虚拟机,

kali虚拟机:192.168.45.128

Linux虚拟机:192.168.45.129

windows虚拟机:192.168.45.132

发送SYN数据包:

通过抓包可以查看kali给linux发送syn数据包

linux虚拟机返回Kali虚拟机SYN+ACK数据包

kali系统并不知道使用者发送了SYN包,而其莫名其妙收到了SYN+ACK数据包,便会发RST包断开连接

也可以使用下列该命令查看收到的数据包的信息,收到对方相应的SYN+ACK数据包,scapy默认从本机的80端口往目标系统的20号端口发送,当然也可以修改

如果向目标系统发送一个 随机端口:

通过抓包的获得:1,kali向linux发送SYN数据包,目标端口23456,

2,Linux系统由自己的23456端口向kali系统的20号端口返回RST+ACK数据包,表示系统端口未开放会话结束

使用python脚本去进行scapy扫描

nmap做隐蔽端口扫描:

nmap -sS  192.168.45.129 -p 80,21,110,443 #扫描固定的端口

nmap -sS 192.168.45.129 -p 1-65535 --open  #扫描该IP地址下1-65535端口扫描,并只显示开放的端口

nmap -sS 192.168.45.129 -p --open  #参数--open表示只显示开放的端口

nmap -sS -iL iplist.txt -p 80

由抓包可知,nmap默认使用-sS扫描,发送SYN数据包,即nmap=nmap  -sS

hping3做隐蔽端口扫描:

hping3 192.168.45.129 --scan 80 -S  #参数--scan后面接单个端口或者多个端口.-S表示进行SYN扫描

hping3 192.168.45.129 --scan 80,21,25,443 -S

hping3 192.168.45.129 --scan 1-65535 -S

由抓包可得:

hping3 -c 100  -S  --spoof 192.168.45.200 -p ++1 192.168.45.129

参数-c表示发送数据包的数量

参数-S表示发送SYN数据包

--spoof:伪造源地址,后面接伪造的地址,

参数-p表示扫描的端口,++1表示每次端口号加1,那么就是发送SYN从端口1到端口100

最后面跟的是目标IP

通过抓包可以得知地址已伪造,但对于linux系统(192.168.45.129)来说,它收到了192.168.45.200的SYN数据包,那么就会给192.168.45.200回复SYN+ACK数据包,但该地址却是kali伪造的地址,那么要查看目标系统哪些端口开放,必须登陆地址为kali伪造的地址即(192.168.45.200)进行抓包

hping3和nmap扫描端口的区别:1,hping3结果清晰明了

  2,nmap首先对IP进行DNS反向解析,如果没成功,那么便会对其端口发送数据包,默认发送SYN数据包

hping3直接向目标系统的端口发送SYN数据包,并不进行DNS反向解析

全连接端口扫描:如果单独发送SYN数据包被被过滤,那么就使用全连接端口扫描,与目标建立三次握手连接,结果是最准确的,但容易被入侵检测系统发现

response=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="S"))

reply=sr1(IP(dst="192.168.45.129")/TCP(dport=80,flags="A",ack=(response[TCP].seq+1)))

抓包情况:首先kali向Linux发送SYN,Linux回复SYN+ACK给kali,但kali的系统内核不清楚kali曾给linux发送给SYN数据包,那么kali内核莫名其妙收到SYN+ACK包,那么便会返回RST请求断开数据包给Linux,三次握手中断,如今kali再给Linux发ACK确认数据包,Linux莫名其妙收到了ACK数据包,当然也会返回RST请求断开数据包,具体抓包如下:

那么只要kali内核在收到SYN+ACK数据包之后,不发RST数据包,那么就可以建立完整的TCP三次握手,判断目标主机端口是否开放

因为iptables存在于Linux内核中,通过iptables禁用内核发送RST数据包,那么就可以实现

使用nmap进行全连接端口扫描:(如果不指定端口,那么nmap默认会扫描1000个常用的端口,并不是1-1000号端口)

使用dmitry进行全连接端口扫描:

dmitry:功能简单,但功能简便

默认扫描150个最常用的端口

dmitry -p 192.168.45.129  #参数-p表示执行TCP端口扫描

dmitry -p 192.168.45.129 -o output  #参数-o表示把结果保存到一个文本文档中去

使用nc进行全连接端口扫描:

nc -nv -w 1 -z 192.168.45.129 1-100:      1-100表示扫描1-100号端口

参数-n表示不对Ip地址进行域名解析,只把其当IP来处理

参数-v表示显示详细信息

参数-w表示超时时间

-z表示打开用于扫描的模式

端口扫描原理及工具 - 安全工具篇

"端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部端口,不可见。例如计算机中的80端口、21端口、23端口等。

一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。

因此,一个开放的端口代表一个提供的服务,不同的服务具有不同的端口号, 因此要对服务进行测试,首先要确定是否开放对应端口号 。

TCP端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。

1、周知端口

周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。

2、动态端口

动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。

3、注册端口

端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户安装的程序。

1、使用Nmap工具查找ip的tcp端口

-O :获取操作系统版本信息

2、使用Nmap工具查找udp端口

-sU :表示udp scan , udp端口扫描

-Pn :不对目标进行ping探测(不判断主机是否在线)(直接扫描端口)

对于udp端口扫描比较慢,扫描完6万多个端口需要20分钟左右

3、使用Nmap工具获取端口Banner

只会返回有Banner信息的,没有则不会返回。

4、使用Nmap嗅探服务版本信息

如果没有返回banner信息的,也可以使用该方法尝试嗅探服务版本信息。

5、利用nmap对目标进行完整测试

在针对内容测试时,有授权的情况下,可以利用nmap对目标进行完整测试

0条大神的评论

发表评论