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

简介:

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中文社区”微信公众号
相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
64 1
|
1月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
108 18
|
1月前
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
114 0
|
10月前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
211 61
|
10月前
|
安全 测试技术 网络安全
如何在Python Web开发中进行安全测试?
如何在Python Web开发中进行安全测试?
|
2月前
|
IDE 测试技术 API
python调试与测试
python调试与测试
|
2月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
5月前
|
JSON 测试技术 API
优化你的 REST Assured 测试:设置默认主机与端口、GET 请求与断言
REST Assured 是一个强大的 Java 库,用于简化 RESTful API 测试。本文详解了其核心功能:设置默认主机和端口以减少代码重复、发起 GET 请求并验证响应结果,以及通过断言确保接口行为符合预期。同时推荐 Apipost 工具,助力开发者提升 API 测试效率,实现更高效的接口管理与团队协作。掌握这些技巧,可显著优化测试流程与代码质量。
|
3月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
106 10
|
3月前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
176 0

推荐镜像

更多