使用wireshark分析ssh口令登录细节

《ssh工具,开发者必须有所了解》这篇文章中,概念性介绍了ssh知识,可对大多数人来说,会使用ssh工具才更有用,比如对我来说,成功登录ssh服务器后,才有动力继续了解其他ssh功能。

ssh登录通常有两种方式,分别是口令验证和密钥对验证,口令登录非常简单,运行 ssh root@localhost,然后输入正确口令后就能成功登录。

可你知道背后的细节吗?这也是我写这篇文章的目的,ssh协议和tls协议一样,都组合了很多密码学算法,用于解决网络安全问题,掌握ssh协议的原理对于理解密码学很有帮助,密码学算法有很多,比如AES对称密钥算法,公开密钥算法(DH密钥协商算法,RSA非对称加密算法),MAC算法,Hash算法,如果你大概了解这些算法,理解ssh协议会相对简单一点,否则可能会比较吃力。

了解ssh协议另外一个好处就是,遇到问题的时候就不会慌乱,也能够更安全的使用ssh。

本文先介绍相对简单的ssh口令登录,在介绍之前,先了解ssh协议的三个子协议:

  • transport layer:传输层协议运行在 TCP/IP 协议之上,负责密钥交换和服务器验证,保证数据通道具备加密性和完整性
  • user authentication layer:服务器验证客户端,有口令登录和密钥对两种验证方式,需要注意的是客户端验证是 client-driven,由客户端选择验证具体的验证方式。
  • connection layer:这个协议能够构建加密通道,从而提供给其他应用层协议使用。

这三个协议中,最后一个相对复杂,本文主要讲解前二个协议。

ssh口令登录主要分为两个阶段,第一阶段是协商出一个会话密钥,在客户端和服务器端之间构建一条安全的通道。第二个阶段在这条通道上验证客户端登录权限。

ssh服务器默认绑定在22端口,监听客户端的请求,在启动的时候会生成一个密钥对(公钥和私钥),一般是RSA算法密钥对,在第一阶段会将公钥发送给ssh客户端,主要让客户端确认ssh服务器端的身份,除了这个作用,我目前没有看到这个密钥对还有其他作用。

为什么说“目前”呢?因为我并没有看 ssh rfc 文档,是通过 wireshark 抓包了解 ssh 协议的,从概念性上猜测ssh协议原理。

先上一张图,看看ssh登录产生了那些包,大家可以wireshark抓包,然后过滤出ssh包(不看 tcp 包):

1-openssh-kl-1.png

其中红线就是ssh登录的第一阶段,该阶段一般输入 ssh root@localhost 就能产生。

另外蓝色就是ssh登录的第二阶段,输入口令后就会产生这些包。

接下去我们先介绍第一个阶段发生了什么:

1:客户端首先发送一个连接请求(序号4),告诉服务器端它目前支持的ssh版本号。

2:服务器端也响应ssh版本号,双方一般协商出的版本号是 ssh v2

3:客户端初始化连接(序号9),进行密钥交换,告诉客户端其支持的各类算法,如下图:

1-openssh-kl-2.png

4:然后服务器端也告诉客户端其支持的各类算法(序号10),最后协商出一致的算法,并发送服务器公开密钥对的公钥。

5:如果第一次ssh登录,ssh客户端会提示用户确认服务器公开密钥对公钥的指纹(即公钥的md5值),当然这个在网络包中是体现不出来的。

如果你第一次ssh登录,会出现下图:

1-openssh-kl-6.png

如果你确认该指纹就是你想连接ssh服务器的,那么就会将公钥保存到 ~/.ssh/known_hosts 文件中,下一次你再登录的时候,ssh客户端发现指纹和ssh服务器发送的指纹是一致的,就不会再让你确认了。

指纹非常重要,后面我会再说。

6:客户端接下去就是要发送 DH 算法密钥对的公钥了(序号13),注意这个密钥对和服务器公开密钥对不是一回事

不管是客户端还是服务器端,各自保留自己的 DH 密钥对的私钥,并将自己的 DH 密钥对的公钥发送给对方,这样双方就会协商出最终的会话密钥(用于对称加密)。

DH 算法就不多描述了,有兴趣可以看看我的书《深入浅出HTTPS:从原理到实战》,这个算法非常安全,黑客仅仅通过截获网络和机器也是破解不了的,因为各种的私钥都在内存中,也不会通过网络传输。

具体如下图:

1-openssh-kl-3.png

7:服务器发送 DH 算法密钥对的公钥(序号15),双方协商出只有他们才知道的会话密钥。

8:客户端发送一个 New Keys 数据包(序号16),表示双方构建了一个加密通道。

上述就是ssh登录的第一阶段,第二阶段中产生的数据都会用会话密钥进行加密了。

第二阶段相对很简单,就是客户端决定验证方式,如果是口令验证,就是将口令加密发送给服务器,如果服务器确认了,就成功登录,具体如下图:

1-openssh-kl-5.png

最后一个问题,这种方式登录安全吗?相对是安全的,因为口令并不是明文传输的。

但这种方式会遇到中间人攻击,还记得那个指纹吗?其实很少人会去确认这个指纹是不是属于“真实ssh服务器”的,一大串数字,还要你手动根据服务器发送的公钥计算指纹,然后再比较,真的很考验人。

如果你不确认,可能真的会有风险,想想看,如果在连接的时候,某个黑客截获了你的数据包,然后发送了他密钥对的公钥,而你没有确认指纹,那么后续所有的ssh数据包都是和黑客在通讯,他就会成功知道服务器口令了。

危险在于,你以为在和“真实ssh服务器”在通信,可实际上是和黑客在通信,有什么好的解决办法吗?如果是口令登录,确实没有,所以后面我会介绍另外一种登录验证方式。

欢迎关注我的公众号
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354