TCP,三次握手,四次挥手,以及常见端口扫描方式原理概述

TCP三次握手

为什么要进行 三次握手呢,两次不行吗?

答:为了安全性。两次握手会造成什么后果呢,发起连接请求,但是没有“确认回复”。缺少确认机制。例如:A给B发送,你好我们做朋友吧,B回答,嗯好的。这个时候如果没有第三个包,则B不知道A是否收到了B发来的消息。

后果就是容易造成TCP漏洞攻击。原理上变得不安全。

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

 如上图所述,大致为这样

客户端发出SYN请求,这个SYN是标志字段被置位为1,然后随机生产一个序列号seq:x

(所以这个报文是,标志位:SYN 序列号:seq:x)

服务端收到后回复并双向请求,以对方的seq加1作为ack字段的value,然后发出SYN,

(所以这个报文是:标志位:ACK、SYN 序列号:Y 确认号(ack):x+1)

客户端收到后再次进行一次回复,确认号为服务端的seq加1,自己的也要加1

(所以这个报文是:标志位:ACK 序列号:x+1,回复确认号(ack):y+1)

四次挥手

四次挥手基本原理都差不多,总体概括,客户端发送FIN,服务端收到后,发送确认以及FIN,客户端发送收到。

总结:各种字段的主要作用:

SYN:连接发起请求

ACK:回复作用

Seq:排序作用,避免乱序

FIN:断开连接作用。

网络安全中对TCP-端口扫描都有哪些?----------针对TCP端口扫描

3.3.2.1. 全扫描

扫描主机尝试使用三次握手与目标主机的某个端口建立正规的连接,若成功建立连接,则端口处于开放状态,反之处于关闭状态。

全扫描实现简单,且以较低的权限就可以进行该操作。但是在流量日志中会有大量明显的记录。

3.3.2.2. 半扫描

半扫描也称SYN扫描,在半扫描中,仅发送SYN数据段,如果应答为RST,则端口处于关闭状态,若应答为SYN/ACK,则端口处于监听状态。不过这种方式需要较高的权限,而且现在的大部分防火墙已经开始对这种扫描方式做处理。

3.3.2.3. FIN扫描

FIN扫描是向目标发送一个FIN数据包,如果是开放的端口,会返回RST数据包,关闭的端口则不会返回数据包,可以通过这种方式来判断端口是否打开。

这种方式并不在TCP三次握手的状态中,所以不会被记录,相对SYN扫描要更隐蔽一些。

 其他扫描方式

  • FTP (21/TCP)

    • 默认用户名密码 
    • 暴力破解密码
    • VSFTP某版本后门
  • SSH (22/TCP)

    • 部分版本SSH存在漏洞可枚举用户名
    • 暴力破解密码
  • Telent (23/TCP)

    • 暴力破解密码
    • 嗅探抓取明文密码
  • SMTP (25/TCP)

    • 无认证时可伪造发件人
  • DNS (53/UDP & 53/TCP)

    • 域传送漏洞
    • DNS劫持
    • DNS缓存投毒
    • DNS欺骗
    • SPF / DMARC Check
    • DDoS

      • DNS Query Flood
      • DNS 反弹
    • DNS 隧道
  • DHCP 67/68

    • 劫持/欺骗
  • TFTP (69/TCP)
  • HTTP (80/TCP)
  • Kerberos (88/TCP)

    • 主要用于监听KDC的票据请求
    • 用于进行黄金票据和白银票据的伪造
  • POP3 (110/TCP & 995/TCP)

    • 爆破
  • RPC (135/TCP)

    • wmic 服务利用
  • NetBIOS (137/UDP & 138/UDP)

    • 未授权访问
    • 弱口令
  • NetBIOS / Samba (139/TCP)

    • 未授权访问
    • 弱口令
  • IMAP (143/TCP & 993/TCP)
  • SNMP (161/TCP & 161/UDP)

    • Public 弱口令
  • LDAP (389/TCP)

    • 用于域上的权限验证服务
    • 匿名访问
    • 注入
  • HTTPS (443/TCP)
  • SMB (445/TCP)

    • Windows 协议簇,主要功能为文件共享服务
  • Linux Rexec (512/TCP & 513/TCP & 514/TCP)

    • 弱口令
  • Rsync (873/TCP)

    • 未授权访问
  • RPC (1025/TCP)

    • NFS匿名访问
  • Java RMI (1090/TCP & 1099/TCP)

    • 反序列化远程命令执行漏洞
  • MSSQL (1433/TCP)

    • 弱密码
    • 差异备份 GetShell
    • SA 提权
  • Oracle (1521/TCP)

    • 弱密码
  • NFS (2049/TCP)

    • 权限设置不当
  • ZooKeeper (2171/TCP & 2375/TCP)

    • 无身份认证
  • Docker Remote API (2375/TCP)

    • 未限制IP / 未启用TLS身份认证
  • MySQL (3306/TCP)

    • 弱密码
    • 日志写WebShell
    • UDF提权
    • MOF提权
  • RDP / Terminal Services (3389/TCP)

    • 弱密码
  • Postgres (5432/TCP)

    • 弱密码
    • 执行系统命令
  • VNC (5900/TCP)

    • 弱密码
  • CouchDB (5984/TCP)

    • 未授权访问
  • WinRM (5985/TCP)

    • Windows对WS-Management的实现
    • 在Vista上需要手动启动,在Windows Server 2008中服务是默认开启的
  • Redis (6379/TCP)

    • 无密码或弱密码
    • 绝对路径写 WebShell
    • 计划任务反弹 Shell
    • 写 SSH 公钥
    • 主从复制 RCE
    • Windows 写启动项
  • Kubernetes API Server (6443/TCP && 10250/TCP

  • JDWP (8000/TCP)

    • 远程命令执行
  • ActiveMQ (8061/TCP)
  • Jenkin (8080/TCP)

    • 未授权访问
  • Elasticsearch (9200/TCP)

    • 代码执行
  • Memcached (11211/TCP & 11211/UDP)

    • 未授权访问
  • RabbitMQ (15672/TCP & 15692/TCP & 25672/TCP)
  • MongoDB (27017/TCP)

    • 无密码或弱密码
  • Hadoop (50070/TCP & 50075/TCP)

    • 未授权访问

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Speed、li_yunkai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值