网络安全项目实战(四)--报文检测

8. TCP/UDP 段

  • 目标
    • 了解 TCP 段头的组织结构
    • 了解 UDP 段头的组织结构
    • 掌握 TCP/UDP 段的解析方式

8.1. UDP 段格式

下图是UDP的段格式(该图出自[TCPIP])。

8.2. UDP头部


 //UDP头部,总长度8字节
 // /usr/include/linux/udp.h
struct udphdr {
    __be16    source;     //源端口号
    __be16    dest;       //目的端口号
    __be16    len;        udp数据长度
    __sum16    check;     // //16位udp检验和
};

8.3. TCP段格式

TCP的段格式如下图所示(该图出自[TCPIP])

 

  • 和UDP协议一样也有源端口号和目的端口号,通讯的双方由IP地址和端口号标识。
  • 32位序号、
  • 32位确认序号、
  • 4位首部长度和IP协议头类似,表示TCP协议头的长度,以4字节为单位,因此TCP协议头最长可以是4x15=60字节,如果没有选项字段,TCP协议头最短20字节。
  • 保留 6位, 新的版本下保留4位, 增加两位标志,介绍从略
  • URG、ACK、PSH、RST、SYN、FIN是六个控制位,
  • 16位窗口大小
  • 16位检验和将TCP协议头和数据都计算在内。
  • 紧急指针和各种选项的解释从略。

 

8.4. TCP头部

  //TCP头部,总长度20字节
  // /usr/inlcude/linux/tcp.h

struct tcphdr {
        __be16  source;         //源端口号
        __be16  dest;           //目的端口号
        __be32  seq;            //序列号
        __be32  ack_seq;        //确认号
#if defined(__LITTLE_ENDIAN_BITFIELD)
        __u16   res1:4,
                doff:4,
                fin:1,
                syn:1,
                rst:1,
                psh:1,
                ack:1,
                urg:1,
                ece:1,
                cwr:1;
#elif defined(__BIG_ENDIAN_BITFIELD)
        __u16   doff:4,     //tcp头部长度
                res1:4,     // 保留 4位
                cwr:1,
                ece:1,
                urg:1,
                ack:1,
                psh:1,
                rst:1,
                syn:1,
                fin:1;
#else
#error  "Adjust your <asm/byteorder.h> defines"
#endif  
        __be16  window;     //16位窗口大小
        __sum16 check;      //16位TCP检验和
        __be16  urg_ptr;    //16为紧急指针
};

9. SSH协议解析

  • 目标
    • 了解ssh协议
    • 了解ssh协议探测方法(简洁)

9.1. ssh协议

全称为Secure Shell,即很安全的shell,主要目的是用来取代传统的telnet和r系列命令(rlogin,rsh,rexec等)远程登录和远程执行命令的工具,实现远程登录和远程执行命令加密,防止由于网络监听而出现的密码泄露,从而对系统构成威胁。(telnet协议采用明文传送密码,数据传送过程中也不加密)

  ssh协议目前有ssh1 和ssh2,其实现在我们主要使用的也是openssh。ssh不仅在登录过程中对密码进行加密传送,而且在登录后执行的命令的数据也进行加密,这样即使别人在网络上监听并截获了你的数据包,他也看不到其中的内容。

在网络安全防护中, “信息系统具备防窃听”, 这条要求的本质就是要用密文传输的ssh替代明文传输的telnet....

9.2. ssh完整流程实例分析

通过ssh远程控制的一个完整个过程来讲,ssh的过程可分为以下3部分:

  • 版本协商
  • 算法协商与密钥交换
这其中第二部分是ssh最为核心的过程,该过程决定了以后通信所要使用的密钥,下面按顺序对每个部分对比着数据包进行详细的讲解并给出实现的过程。

9.2.1. 版本协商

在建立连接后,客户端与服务器分别向对方发送自己ssh的版本信息(这里的数据格式不同于其他包,只有一行版本号),以\r\n结束。版本的格式如下:

                     SSH-ssh协议版本-详细版本\r\n 

 

在图中, 橙色部分,为tcp建立链接的三次握手

9.2.2. 算法协商与密钥交换

先看图

 

算法协商:第158,Key Exchange init开始,分别为双发向对法发送的自己在不同密码需求上支持的算法。

  • 加密通信(可能含有2、3部分)

9.2.3. 加密通信

上图, 从 Client: Encrypted packet 开始, 开始进行加密的通信

9.3. 拓展内容

9.3.1. 关于ssh相关的几个概念

在介绍ssh协议之前,有几个涉及到的基本概念首先需要介绍,它们对于理解ssh协议本身有非常重要和关键的作用。

加密

加密的意思是将一段数据经过处理之后,输出为一段外人无法或者很难破译的数据,除了指定的人可以解密之外。 一般来说,加密的输入还会有一个key,这个key作为加密的参数, 而在解密的时候也会用一个相关联(有可能是相同)的key作为输入。

简单的说: 密文 = 明文 + key

对称加密

所谓的对称加密,是说加密方和解密方用的都是同一个key,这个key对于加密方和解密方来说是保密的,第三方是不能知道的。在第三方不知道私钥的情况下,是很难将加密的数据解密的。一般来说是加密方先产生私钥,然后通过一个安全的途径来告知解密方这个key。

非对称加密

非对称加密,是说解密的一方首先生成一对密钥,一个私钥一个公钥,私钥不会泄漏出去,而公钥则是可以任意的对外发布的。用公钥进行加密的数据,只能用私钥才能解密。加密方首先从解密方获取公钥,然后利用这个公钥进行加密,把数据发送给解密方。解密方利用私钥进行解密。如果解密的数据在传输的过程中被第三方截获,也不用担心,因为第三方没有私钥,没有办法进行解密。

非对称加密的问题还包括获取了公钥之后,加密方如何保证公钥来自于确定的一方,而不是某个冒充的机器。假设公钥不是来自我们信任的机器,那么就算我们用非对称加密也没有用,因为加密之后的数据是发送给了冒充的机器,该机器就可以利用它产生的私钥进行解密了。所以非对称加密里面比较重要的一步是身份认证。

需要说明一下,一般的对称加密都会比非对称加密快,所以大数据量的加密一般都会使用对称加密,而非对称加密会作为身份验证和交换对称加密秘钥的一个手段。

数据一致性/完整性

数据一致性说得是如何保证一段数据在传输的过程中没有遗漏、破坏或者修改过。一般来说,目前流行的做法是对数据进行hash,得到的hash值和数据一起传输,然后在收到数据的时候也对数据进行hash,将得到的hash值和传输过来的hash值进行比对,如果是不一样的,说明数据已经被修改过;如果是一样的,则说明极有可能是完整的。

目前流行的hash算法有MD5和SHA-1算法。

9.3.2. 参考

  • RFC4251

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/246169.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Arris VAP2500 list_mac_address未授权RCE漏洞复现

0x01 产品简介 Arris VAP2500是美国Arris集团公司的一款无线接入器产品。 0x02 漏洞概述 Arris VAP2500 list_mac_address接口处命令执行漏洞,未授权的攻击者可通过该漏洞在服务器端任意执行代码,写入后门,获取服务器权限,进而控制整个web服务器。 0x03 复现环境 FOFA…

SpringSecurity6从入门到上天系列第八篇:SpringSecurity当中的默认登录页面是如何产生的?

&#x1f609;&#x1f609; 欢迎加入我们的学习交流群呀&#xff01; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring等等很多应用和源码级别的高质量视频和笔记资料&#xff0c;你想学的我们这里都…

Axure中动态面板使用及轮播图多种登录方式左侧导航栏之案列

&#x1f3ac; 艳艳耶✌️&#xff1a;个人主页 &#x1f525; 个人专栏 &#xff1a;《产品经理如何画泳道图&流程图》 ⛺️ 越努力 &#xff0c;越幸运 目录 一、轮播图简介 1、什么是轮播图 2、轮播图有什么作用 3、轮播图有什么特点 4、轮播图适应范围 5、…

pytorch文本分类(二):引入pytorch处理文本数据

pytorch文本数据处理 目录 pytorch文本数据处理1. Pytorch背景2. 数据分割3. 数据加载Dataset代码分析字典的用途代码修改的目的 Dataloader 4. 练习 原学习任务链接 相关数据链接&#xff1a;https://pan.baidu.com/s/1iwE3LdRv3uAkGGI2fF9BjA?pwdro0v 提取码&#xff1a;ro…

日志框架Log4j、JUL、JCL、Slf4j、Logback、Log4j2

为什么程序需要记录日志 我们不可能实时的24小时对系统进行人工监控&#xff0c;那么如果程序出现异常错误时要如何排查呢&#xff1f;并且系统在运行时做了哪些事情我们又从何得知呢&#xff1f;这个时候日志这个概念就出现了&#xff0c;日志的出现对系统监控和异常分析起着…

wordpress 修改社交图标

要去掉标记的图标&#xff0c;死活找不到在那里配置。后来找到了&#xff0c;下图&#xff08;wordpress 小白&#xff0c;特此记录&#xff09;

java --- lambda表达式

1、先爽用一下lambda lambda表达式很大一个作业就是简化匿名内部类 public class case1 {public static void main(String[] args) {Integer[] arr {2,5,1,0,9,7,4};Integer[] arr2 {2,5,1,0,9,7,4};//使用匿名内部类作为比较器Arrays.sort(arr, new Comparator<Integer…

Java 实现汉字转拼音带单调

代码 import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.HanyuPinyinToneType; import net.sourceforge.pinyin4j.format.HanyuPinyinVCharType; import net.sourcefo…

【VRTK】【VR开发】【Unity】15-远程抓取

课程配套学习资源下载 https://download.csdn.net/download/weixin_41697242/88485426?spm=1001.2014.3001.5503 【背景】 之前的篇章介绍了如何实现直接抓取,本篇介绍另一种抓取方式-远程抓取。 【远程抓取的先决条件】 要让远程抓取起作用,需要先设置oculus提供的手部…

定时限电流继电器 JL-8D/2X112A5 AC220V 0.1~9.9S 0.1~9.9A 导轨

系列型号 JL-8D/3X1定时限电流继电器&#xff1b;JL-8D/3X111A2定时限电流继电器&#xff1b; JL-8D/3X121A2定时限电流继电器&#xff1b;JL-8D/3X211A2定时限电流继电器&#xff1b; JL-8D/3X221A2定时限电流继电器&#xff1b;JL-8D/3X2定时限电流继电器&#xff1b; JL…

天翼云盘秒变硬盘分享

https://cloud.189.cn/web/share?codeAvUnqaj6NNza&#xff08;访问码&#xff1a;wf4r&#xff09;y 以下介绍为作者开发的单机版软件&#xff0c;可用于Windows环境中将天翼云盘挂载为本地硬盘&#xff0c;确实可以达到本地硬盘的使用感知&#xff0c;对于多终端数据副本一…

Tomcat的结构和部署

目录 什么是tomcat&#xff1f; Tomcat 核心的组件三个 什么是 servlet&#xff1f; 什么是 JSP? Tomcat 功能组件结构&#xff1a; Container 结构分析&#xff1a; Tomcat 请求过程&#xff1a; 具体部署Tomcat 将安装包移动到opt目录下 配置systemd控制 验证访…

2 - Electron 核心概念

Electron 核心概念 主进程 通过Node.js、Electron提供的API与系统底层打交道启动项目时运行的 main.js 脚本就是我们说的主进程。在主进程运行的脚本可以以创建 Web 页面的形式展示 GUI。主进程只有一个 渲染进程 每个 Electron 的页面都在运行着自己的进程&#xff0c;这样…

每天五分钟计算机视觉:GoogLeNet的核心模型结构——Inception

本文重点 当构建卷积神经网络的时候,我们需要判断我们的过滤器的大小,这往往也作为一个超参数需要我们进行选择。过滤器的大小究竟是 11,33 还是 55,或者要不要添加池化层,这些都需要我们进行选择。而本文介绍的Inception网络的作用就是代替你来决定,把它变成参数的一部…

软件设计师——软件工程(二)

&#x1f4d1;前言 本文主要是【软件工程】——软件设计师——软件工程的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…

ZLMediaKit 编译以及测试(Centos 7.9 环境)

文章目录 一、前言二、编译器1、获取代码2、编译器2.1 编译器版本要求2.2 安装编译器 3、安装cmake4、依赖库4.1 依赖库列表4.2 安装依赖库4.2.1 安装libssl-dev和libsdl-dev4.2.2 安装 ffmpeg-devel依赖和ffmpeg依赖 三、构建和编译项目&#xff08;启用WebRTC功能&#xff09…

pytorch:to()、device()、cuda()将Tensor或模型移动到指定的设备上

将Tensor或模型移动到指定的设备上&#xff1a;tensor.to(‘cuda:0’) 最开始读取数据时的tensor变量copy一份到device所指定的GPU上去&#xff0c;之后的运算都在GPU上进行在做高维特征运算的时候&#xff0c;采用GPU无疑是比用CPU效率更高&#xff0c;如果两个数据中一个加了…

智慧城市/一网统管建设:人员危险行为检测算法,为城市安全保驾护航

随着人们压力的不断增加&#xff0c;经常会看见在日常生活中由于小摩擦造成的大事故。如何在事故发生时进行及时告警&#xff0c;又如何在事故发生后进行证据搜索与事件溯源&#xff1f;旭帆科技智能视频监控人员危险行为/事件检测算法可以给出答案。 全程监控&#xff0c;有源…

智能优化算法应用:基于探路者算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于探路者算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于探路者算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.探路者算法4.实验参数设定5.算法结果6.参考文…

人工智能导论习题集(5)

第四章&#xff1a;搜索策略 题1题2 题1 题2 参考文献&#xff1a;https://blog.csdn.net/m0_64372178/article/details/134890561