端口探测技术总结

基于TCP的探测

== 关于三次握手(Three-way Handshake) ==

向处于开放或关闭状态的端口发送不同字段设置的探测请求包时,被探测端口的回应如下表所示:

closed port open port
SYN 包 丢弃并返回一个RST包 回复SYN或ACK
SYN关闭的包 丢弃不回复 丢弃不回复
RST包 丢弃不回复 丢弃不回复
ACK包 丢弃并回复一个RST包 丢弃并回复一个RST
FIN包 丢弃并回复一个RST 丢弃不回复

TCP全连接(Full Tcp Connection)

在不需要特殊权限的情况下,使用connect()函数发起连接请求,开放端口成功建立连接,关闭端口返回-1.

特点:已被发现,日志会记录TCP全连接的序列。检测程序( Courtney,Gabriel,Tcp Wrappers)可阻止特定主机发起的全连接。

半开放连接-half-open scanning(TCP SYN Scanning)

分别介绍被探测端口处于开放和关闭状态下的情景:

  • open port:被探测端口回复SYN或ACK包,探测方得知端口开放后回复一个RST包,以终止刚刚建立的连接过程。
  • closed port:被探测方丢弃并回复RST包。

优点:半开放连接依然会被日志记录,但记录频率比全连接要低

缺点:需要自定义构建整个IP数据包,需要super-user或特权组权限才能构造自定义包

隐形扫描(Stealth Scanning)

此类探测不进行三次握手中的任意一环,因此隐藏性较半开放探测更高

缺点:此类扫描只能针对UNIX及部分操作系统,由于Windows95和NT在端口开放和关闭时都返回RST包。

FIN scanning

  • open port:直接丢弃不予以回应
  • closed port:丢弃并回复一个RST包
    优点:绕过只针对SYN的包过滤器

Xmas scanning

是对于FIN scanning 的改进:将FIN、PSH、URG全部置为1

优点:可绕过FIN flag过滤器

NULL scanning

是对于FIN scanning的改进:将FIN、PSH、URG全部置为0

优点:可绕过FIN falg过滤器

间接扫描(dump host scan)

通过傀儡主机进行对目标主机端口的扫描,从而隐藏发起扫描的真实主机

傀儡主机需要满足:在扫描方扫描期间,傀儡机不可以向其他主机发送数据包。

探测流程如下:

  1. 扫描方向傀儡机发送ICMP echo请求,监视傀儡机回复报文序列的递增情况。由于傀儡机只与扫描主机之间发送数据包,故常态下,报文序列递增1.
  2. 扫描方以傀儡机的IP向目标主机端口发送SYN请求包。当目标端口关闭时,目标主机回复给傀儡机相同数量的RST包,傀儡机将收到的RST包全部丢弃且不予以回复,当扫描方再对傀儡机发送ICMP echo时,傀儡机回复的报文序列依然相较于上一个报文增加1;当目标端口开放时,目标主机将会给傀儡机回复SYN|ACK报文,傀儡机收到回复报文后,会给目标主机回复相同数量的RST报文(消耗傀儡机序号),当扫描机再向傀儡机发送ICMP echo时,收到的回复报文序列将不会只增1.

碎片化扫描(fragmented packets scanning)

将TCP首部划分为几个小报文,从而进一步提升SYN、FIN、Xmas和Null 扫描的匿名性。

诱饵扫描(Decoy scanning)

同时发送多个探测数据包,其中只有一个数据包具有真实的地址,其余数据包都含有虚假地址。使得目标主机无法区分哪个是真实的探测包。

作为发送虚假探测包的主机需要是开放且可达的,否则会使得目标主机收到洪泛攻击(SYN flooded)

由于某些"扫描检测器"的反应是拒绝访问尝试端口扫描的主机,因此,可能会导致目标主机遭受非自愿的Dos攻击(目标主机失去于诱饵主机的正常通信)。

合作扫描(Coordinated Scanning)

天南海北的(物理隔绝)的IP针对同一目标进行合作扫描。

特点:隐藏性(弱化单个IP的特征,难以通过常规手段检测探测包);高效性(更短的时间、使得防御方难以追踪且难以通过禁IP的方法阻止探测);获取更多的数据(获取单个探测IP难以获得的数据,例如,发现更短的路由数据,获取潜在的后门。)

基于UDP的探测

攻击者发送0比特UDP探测包。若收到ICMP port unreachable,表明端口关闭;若没收到任何回复,往往表明端口开放(当然,可能是报文丢失的情况)。

Ident Scanning

通过Identification protocol 检索指定端口上运行进程的用户名。步骤如下:

  • 对指定端口建立连接,若端口开放,进行下一步
  • 向目标主机的113端口的ident(the Identification Protocol 进程)发送给ident request

代理扫描(Proxy Scanning)

通常,两个主机之间会开放21和20端口作为ftp文件传输协议端口,但这很容易被滥用,例如,ftp代理扫描(ftp proxy scanning):

  • 扫描主机S将通过代理主机F,建立于目标主机T之间的连接
  • S与F建立ftp连接,使用PORT命令指定T上的某个端口作为被动端口
  • S通过LIST命令向T上的端口进行代理数据的传输
  • 如果T上的端口开放,则发送成功;否则,S返回425
  • S持续重复上述步骤,知道扫描到S上的开放端口

其他扫描技术

Ping scanning

目的:通过探测大量端口发现主机是否存活。

  • ICMP pings
  • TCP pings:首先,发送没有被过滤的特定标志位TCP分片报文;其次,非root用户的扫描方,可以使用connect()函数进行连接建立;最后,发送ACK报文,若收到RST回复,表明开放。

指纹匹配

根据端口响应数据包进行指纹提取,与指纹库的操作系统特征进行匹配,从而达到识别特定的操作系统的目的。

参考

De Vivo M, Carrasco E, Isern G, et al. A review of port scanning techniques[J]. ACM SIGCOMM Computer Communication Review, 1999, 29(2): 41-48.

总结尚浅,望各位读者补充指正!

相关推荐
黑客老陈41 分钟前
面试经验分享 | 杭州某安全大厂渗透测试岗二面
服务器·网络·经验分享·安全·oracle·面试·职场和发展
云计算DevOps-韩老师1 小时前
【网络云计算】2024第50周-每日【2024/12/14】小测-理论和实操-写5个Bash Shell脚本的if语句和交换机路由器的知识
linux·运维·服务器·网络·kubernetes·云计算·bash
阿甘知识库1 小时前
建站经验:服务器同步与数据库备份的终极解决方案
运维·服务器·数据库·备份·同步·宝塔面板
Hacker_Nightrain1 小时前
服务器相关命令
运维·服务器·eureka
Secondogli1 小时前
关于三握四挥
服务器·网络·http
sdszoe49222 小时前
Windows server 服务器网络安全管理之防火墙出站规则设置
运维·服务器·web安全
ThisIsClark2 小时前
【后端面试总结】进程间通信的方法
服务器·网络·面试
waicsdn_haha2 小时前
最新 VirtualBox 虚拟机安装 Ubuntu 教程【附安装包】
linux·运维·服务器·ubuntu·微软·win10·virtualbox
小红卒2 小时前
计算机网络技术基础:6.数据传输方式
网络·计算机网络
小c君tt3 小时前
ARINC429和CAN
运维·服务器·网络