tcp端口扫描与syn扫描
连接网络设备时,一般都会在网络设备端选取0-65535之间的一个端口进行连接,端口扫描是指:检查网络设备上0-65535号端口哪些端口是开启状态。如果黑客扫描到某网络设备的80端口是开启状态,那么很有可能是web服务,此时黑客会使用一些手段攻击web服务器,这样一来,端口扫描会增加服务器的安全负担,因此一般网络都会阻止端口扫描。当然端口扫描对于防御性渗透测试也非常有用。我们可以扫描自己的系统来确定哪些服务暴露给了网络,这样我们就能有针对性的对系统的配置进行检查。本节属于解释的是端口扫描的原理。
一、TCP扫描
使用socket创建套接字,利用三次握手协议来判断目标端口是否存活。
原理:
1、扫描端向目标端发送SYN请求建立连接 2、目标端收到请求后,回复ACK同意连接并同意发送SYN请求建立连接 3、扫描端收到后,发送ACK同意,此时三次握手完成,以此来判断端口是否存活

TCP扫描的python实现过程
importtime
importsocket out_time=1 deftcp_scan(ip,port):
try:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #建立socket连接,TCP协议
s.settimeout(out_time) #设置超时时间
c=s.connect_ex((ip,port)) #与目标端建立连接,成功但会 0
ifc==0:
print("%s:%sopen!"%(ip,port))
exceptExceptionase:
print(e)
s.close() s_time=time.time()
ip="10.32.1.238" #目标机ip
foriinrange(20,50): #扫描端口的范围
tcp_scan(ip,i)
e_time=time.time()
print(e_time-s_time)
二、SYN扫描
为针对TCP扫描,目前有种防御方式:若发现网络中的某台设备进行了端口扫描,会将其加入黑名单。实现这种防御的原理是:每次TCP连接后会将信息记录到日志中,当发现某IP多次连接设备的不同端口,就可以判断是TCP扫描,此时就可以将此IP加入黑名单。
为避免被TCP扫描抓到,诞生了SYN扫描,原理同样是利用了TCP三次握手。
原理:
1、扫描端向目标端发送SYN请求建立连接 2、目标端收到请求后,回复ACK同意连接并同意发送SYN请求建立连接 3、扫描端收到后,发送RST拒绝建立连接。
与TCP扫描不用的是,当扫描端收到ACK/SYN应答时,发送了一条拒绝建立连接的RST请求,此时三次握手建立失败,因此目标端就不会将其记录在日志中,但同时也扫描到了端口信息。与TCP扫描相比更加隐蔽。

三、扫描工具
被称为扫描之王的nmap工具是一款极强的端口扫描工具,支持linux和windows系统,具体优势如下:
1、多种多样的参数,丰富的脚本库,满足用户的个人定制需求,其中脚本库还提供了很多强大的功能任你选择
2、强大的可移植性,基本上能在所有的主流系统上运行,而且代码是开源的
3、详细的文档说明,和强大的社区团队进行支持,方面新人上手
使用方法可参考:https://www.cnblogs.com/nmap/p/6232207.html
tcp端口扫描与syn扫描的更多相关文章
- 浅谈TCP扫描与SYN扫描与FIN扫描
下面就这三种方法来小小的探讨一下,不对的地方还请多多指教! 1:TCP扫描 相对来说是速度比较慢的一种,为什么会慢呢?因为这种方法在扫描的时候会从本地主机的一个端口向目标主机的一个端口发出一个连接请求 ...
- Python3实现TCP端口扫描
在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可以了解到目标主机都开放了哪些服务,甚至能根据服务猜测可能存在某些漏洞. TCP端 ...
- 小白日记10:kali渗透测试之端口扫描-UDP、TCP、僵尸扫描、隐蔽扫描
端口扫描 二三四层发现的目的只是为了准确发现所有活着主机IP,确定攻击面,端口扫描即发现攻击点,发现开放端口.端口对应网络服务及应用端程序,服务端程序的漏洞通过端口攻入.[所有的扫描结果,都不要完全相 ...
- TCP端口扫描
# TCP三次握手 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认: 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1 ...
- TCP端口扫描类型-隐蔽扫描和僵尸扫描
TCP扫描有三种类型:全连接扫描,隐蔽扫描,僵尸扫描.全连接扫描无须赘述. 隐蔽扫描:发送完SYN数据包以及收到SYN/ACK数据包后不再发送SCK数据包,由于没有建立完整的TCP连接,所以在目标主机 ...
- Socket2实现tcp端口扫描
主要的界面如下: 主要代码如下: //对于每一个线程,传过去的参数 typedef struct ThreadParamStruct { CString strIP; //要扫描的IP地址 UINT ...
- wireshark分析nmap和metasploit内置的syn扫描
syn扫描 syn扫描,根据三次握手,向端口发送syn包,如果对方回应SYN/ACK,则证明端口开放 首先是nmap 速度很快,0.67秒完成,看下wireshark的抓取 一次发送了大量的syn包 ...
- Python3实现TCP端口扫描器
本文来自 高海峰对 玄魂工作室 的投稿 作者:高海峰 QQ:543589796 在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可 ...
- TCP端口状态说明ESTABLISHED、TIME_WAIT、 CLOSE_WAIT
一. 首先说下tcp端口的几种状态: 1.LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态. 2.ESTABLISHED状态 ESTABLISHED的意思是建立连接.表示 ...
随机推荐
- python应用-猜数字
""" 猜数字游戏(电脑给数字人猜) Author:罗万财 Date:2017-6-3 """ from random import ran ...
- 在 iTunes Connect 中,无法找到“My Apps”选项
Cannot find "My Apps" option in iTunes Connect, to upload my app on the app-store:stackove ...
- xargs的用法
处理带有空格的文件名 #我们创建了3个日志文件, 且故意让文件名称中都含有空格 [roc@roclinux ~]$ ;i<;i++)); do touch "test ${i}.log ...
- fitnesse生成的FitNesseRoot路径问题
运行fitnesse命令的时候,会生成FitNesseRoot这个文件夹. 但是需要注意的是你在哪个路径下开启服务,就在当前路径下生成FitNesseRoot这个文件夹,而不是说你的fitnesse- ...
- 做个小插件(打开Part路径插件)
1 (CAIDAN.men) VERSION EDIT UG_GATEWAY_MAIN_MENUBAR AFTER UG_HELP CASCADE_BUTTON TOOLS LABEL 工具 END_ ...
- UFUN函数 UF_ATTR函数(UF_ATTR_read_value 函数用法)
//此函数的功能是输入tag值,返回与属性标题对应的属性值 static string read_attr(tag_t object_tag) { UF_initialize(); ]="零 ...
- ESA2GJK1DH1K微信小程序篇: 测试微信小程序扫描Air202上面的二维码绑定设备,并通过MQTT控制设备
前言 一,微信小程序篇小程序下载(该功能为小程序篇基础功能源码) 实现功能概要 微信小程序通过扫描GPRS上的二维码,绑定GPRS设备.然后使用小程序通过GPRS远程控制开发板上的继电器, 远程显示单 ...
- [后渗透]获取到 Meterpreter 之后的操作
sysinfo 列出受控主机的系统信息 ls 列出目标主机的文件和文件夹信息 use priv 加载特权提升扩展模块,来扩展meterpreter库 ps 显示所有运行进程以及关联的用户账户 gets ...
- 记住:永远不要在 MySQL 中使用 UTF-8
阅读本文大概需要 3.6 分钟. 译文:http://suo.im/4zBuvs 来自:http://ju.outofmemory.cn 最近我遇到了一个bug,我试着通过Rails在以“utf8”编 ...
- pm2 启动模式 fork 和 cluster 的区别
fork模式,单实例多进程,常用于多语言混编,比如php.python等,不支持端口复用,需要自己做应用的端口分配和负载均衡的子进程业务代码. 缺点就是单服务器实例容易由于异常会导致服务器实例崩溃. ...