Python渗透测试之tcp几种端口扫描的讲解

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介:

tcp数据包格式: 

TCP是传输层的协议,它的数据包格式如下:


1、源端口号 
2、目标端口 
3、seq 用于表示这个数据包携带的数据是这个数据流哪个位置的数据,用于数据排序 
4、ack 接受方向发送方确认已经收到的数据 
5、跟ip头部的4位首部长度一样(见本期上半节内容),最少值为5(20字节,即选项处没数据),最大15(60字节,即选项处数据为40字节) 
6、保留位,wirshake抓包没发现此字段,但是发现它与标志字段合并了 
7、6位标标志字段: 

(源自百度百科) 
8、可以看作tcp的缓冲区,根据mss大小,用于确定一次性发送分组的个数 
9、校验和,与IP校验和字段是一样的(见本期内容上半节讲解) 
10、当标志位设置了URG时,表示这个紧急指针有效,表示紧急指针开始的数据才是正常数据 
11、选项字段 
12、数据 
此处没有总长度字段是因为可通过ip头部总长度减去ip头部得到tcp总长度,而udp有总长度字段是为了32位对齐

TCP建立连接:
表现形式为三次握手,客户机发送SYN标志位的数据包,对方返回SYN,ACK标志位的字段,客户机收到包后返回ACK确认包,在这三次握手后就建立起tcp连接了:


3次握手实例:


端口: 
每一个端口对应一个服务,有时我们可以根据端口知道后面运行着什么服务,例如端口22开放表示开放着ssh服务。

SYN扫描:
SYN扫描又称半开扫描,发送一个‘标志位’为S的TCP数据包到目标服务器的某个端口,如果端口开放,就会返回一个标志位为SYN,ACK的TCP数据包,如果端口关闭就返回标志位为RST的数据包。


SYN扫描速度比较快,但容易被防火墙过滤,且丢包无法被发现

FIN扫描:
本机发送一个标志位为F的TCP数据包到目标服务器的某个端口,如果端口开放,就不会做出回应,如果端口关闭就返回标志位为RST的TCP数据包。


FIN扫描速度快,且不易被过滤,难以被发现,但是对windows系统无效,无论端口是否开放,windows都返回RST包。

NULL扫描:
与FIN扫描类似,本机发送一个标志位为空的TCP数据包到目标服务器的某个端口,如果端口开放,就不会做出回应,如果端口关闭就返回标志位为RST的TCP数据包。
NULL扫描速度快,且不易被过滤,难以被发现,但是对windows系统无效


XMAS扫描: 
XMAS扫描,又称圣诞树扫描,因为它像圣诞树一样挂了很多标志位,本机发送一个标志位为“FIN,URG,PSH”的TCP数据包到目标服务器的某个端口,如果端口开放,就不会做出回应,如果端口关闭就返回标志位为RST的TCP数据包。

XMAS扫描速度快,且不易被过滤,难以被发现,但是对windows系统无效。

脚本效果展示(以SYN扫描为例):
我ubuntu(192.168.1.113)的TCP对外只开了22端口(ssh服务)


现在我运行我的脚本(先扫描小范围端口,以便用wireshark抓包进行分析)


下面我以FIN扫描1-250端口来查看效果(FIN,NULL,XMAS扫描当没有数据包返回时都进行了再次两次重传进行验证)


脚本代码片段展示:



原文发布时间为:2017-03-08
本文作者:exploit
本文来自云栖社区合作伙伴“ Python中文社区”,了解相关信息可以关注“ Python中文社区”微信公众号
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
26天前
|
Python
Python编程--使用NMAP端口扫描
Python编程--使用NMAP端口扫描
16 1
|
26天前
|
网络安全 Python
Python编程--目标IP地址段主机指定端口状态扫描
Python编程--目标IP地址段主机指定端口状态扫描
40 1
|
2月前
|
Linux Python
用python扫描linux开放的端口(3种方式)
这篇文章介绍了三种使用Python实现Linux端口扫描的方法,包括基础版端口扫描、全端口扫描和多线程扫描技术。
53 15
|
17天前
|
运维 安全 网络协议
Python 网络编程:端口检测与IP解析
本文介绍了使用Python进行网络编程的两个重要技能:检查端口状态和根据IP地址解析主机名。通过`socket`库实现端口扫描和主机名解析的功能,并提供了详细的示例代码。文章最后还展示了如何整合这两部分代码,实现一个简单的命令行端口扫描器,适用于网络故障排查和安全审计。
19 0
|
26天前
|
网络协议 Python
Python创建一个TCP服务器
Python创建一个TCP服务器
17 0
|
26天前
|
安全 Linux Shell
Kali渗透测试-远程控制:6200端口变成“后门”
Kali渗透测试-远程控制:6200端口变成“后门”
35 0
|
26天前
|
缓存 网络协议 Linux
Python渗透测试之ARP毒化和协议应用
Python渗透测试之ARP毒化和协议应用
25 0
|
26天前
|
安全 网络安全 数据安全/隐私保护
Python渗透测试之流量分析:流量嗅探工具编程
Python渗透测试之流量分析:流量嗅探工具编程
19 0
|
2月前
|
监控 网络协议 数据库连接
Python3 监控端口:使用 socket 库
Python3 监控端口:使用 socket 库
33 0
|
2月前
|
监控 网络协议 数据库连接
Python3 监控端口:使用 socket 库
Python3 监控端口:使用 socket 库
38 0