0x00 引言
在云服务器使用场景越来越多的当下,目标在单个云服务商甚至多个云服务商购买多个云服务器组建内网的情况屡见不鲜,常规通过C段信息收集进行渗透的方式经常不适用。目标公网IP分布极为松散,可能出现在一个或者多个B段上面。如何在已有一个权限的情况下,将内网IP与公网IP进行对应,是笔者在渗透过程中遇到的一大难点。
0x01 SSH指纹
首次通过SSH连接一台服务器时,SSH服务返回其指纹信息,如果确认指纹信息无误,该指纹将保存到~/.ssh/know_hosts中, 服务器IP与指纹一一对应;第二次访问SSH服务时,SSH客户端将对比返回的指纹与~/.ssh/know_hosts是否一致,一致就顺利连接,否则警告可能遭遇到中间人攻击。
图中的 SHA256:5iKUxsMvL5eg****K6eRBQ3MEiu7X7HH0 即 ECDSA 指纹 Hash. 注意到这个值的特殊性,大概率是全球唯一值,因此若目标开放SSH服务到公网,这个值极有可能被网络空间搜索引擎抓取,从而可以利用这个Hash检索出其公网IP.
0x02 利用
获取Hash值,考虑到上述SSH命令获取方式需要交互式shell,在某些场合不太适用,因此可以用ssh-keyscan获取该值:
ssh-keyscan -t ECDSA -p 22 *.*.*.* | ssh-keygen -E sha256 -lf -