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

專 欄

exploit,Python中文社区专栏作者,Python渗透测试与安全爱好者。希望与作者交流或者对文章有任何疑问的可以与作者联系:

QQ:1585173691

Email:best_exploit@163.com

github:github.com/webYFDT❈

在上半节内容中我们了解了IP协议的基础,本节我们将进入TCP的讲解并给出自己写的一个python脚本。好了话不多说,开始我们的主题吧!

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扫描当没有数据包返回时都进行了再次两次重传进行验证)

脚本代码片段展示:

好了,本期内容讲解完毕,完整代码可在作者的github主页里找到(第一期的主机存活扫描及arp欺骗工具的代码都在里面,地址:https://github.com/webYFDT/python_scan),并且已上传至Python中文社区小密圈,欢迎下载本文源码研究。

原文发布于微信公众号 - Python中文社区(python-china)

原文发表时间:2017-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏QQ空间开发团队的专栏

安卓 App 热补丁动态修复技术介绍

当一个App发布之后,突然发现了一个严重bug需要进行紧急修复,这时候公司各方就会忙得焦头烂额:重新打包App、测试、向各个应用市场和渠道换包、提示用户升级、用...

1.4K00
来自专栏开发与安全

linux网络编程之TCP/IP基础(三):IP数据报格式和IP地址路由

一、IP数据报格式 IP数据报格式如下: ? 注:需要注意的是网络数据包以大端字节序传输,当然头部也得是大端字节序,也就是说: The most signifi...

31870
来自专栏技术达人

NAT穿透技术详解

传统的C/S结构是每个客户端均知道中心化的SERVER,由客户端主动与SERVER进行通信。

48240
来自专栏互联网杂技

前端进阶-让你升级的网络知识

在正文之前,我想问大家一个问题: 问:亲,你有基础吗? 答: 有啊,你说前端吗? 不就是HTML,JS,CSS 吗? so easy~ 问: oh-my-zsh...

39480
来自专栏子勰随笔

关于终端设备的设备唯一性的那些事之MAC地址

40130
来自专栏小李刀刀的专栏

前端构建工具 Gulp.js 上手实例

在软件开发中使用自动化构建工具的好处是显而易见的。通过工具自动化运行大量单调乏味、重复性的任务,比如图像压缩、文件合并、代码压缩、单元测试等等,可以为开发者节约...

46470
来自专栏任浩强的运维生涯

优化内核参数提高服务器的并发处理能力

PS:在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题。要提高Linux系统下的负载能力,可以使...

53380
来自专栏双十二技术哥

Android性能优化(十一)之正确的异步姿势

在前面的性能优化系列文章中,我曾多次说过:异步不是灵丹妙药,不正确的异步方式不仅不能较好的完成异步任务,反而会加剧卡顿。Android开发中我们使用异步来进行耗...

14420
来自专栏高性能服务器开发

服务器开发中网络数据分析与故障排查经验漫谈

一、 操作系统提供的网络接口 为了能更好的排查网络通信问题,我们需要熟悉操作系统提供的以下网络接口函数,列表如下: 接口函数名称接口函数描述接口函数签名soc...

37450
来自专栏Golang语言社区

Golang进阶——TCP网络编程详解

介绍 Golang是谷歌设计开发的语言,在Golang的设计之初就把高并发的性能作为Golang的主要特性之一,也是面向大规模后端服务程序。在服务器端网络通信是...

75970

扫码关注云+社区

领取腾讯云代金券