ssh暴力攻击可以说是一种非常好的字典来源, 所以我做了个工具当诱饵来收集字典.
既然是诱饵, 那就叫baithook吧
呃, 我修改openssh的源码, 然后打包了docker镜像, 在这篇文章记录一下用法.
首先放上github的链接, 仓库里是构建用的脚本.
然后是docker hub的链接.
快速上手
可以用如下命令
docker -run -p 2222:22 -itd catium/baithook:latest
直接拉取打包好的镜像运行.
一定得保证容器的
22
端口通过某种方式转发到公网了才会有攻击源上钩.
原理
修改了openssh源码里面验证身份的函数, 然后把尝试的用户名和密码都写进文件, 然后拒绝所有连接.
拒绝连接是为了防止万一真的被被攻破了就寄了…
就算寄了也很难实施容器逃逸吧
收获
容器运行后, 在sshd第一次被尝试连接的时候会在容器根目录生成
/dict.txt
和
/addr.txt
, 分别是攻击的字典和攻击源ip地址, 攻击源地址可以加入宿主机黑名单什么的.
运行一段时间后文件可能会很大, 建议定期归档.
我挂了一晚上就收了好几千组, 不过质量不是特别高, 有一些重复的, 回头可以写个脚本去重.
拓扑
建议:
把容器的
22
端口转发到宿主机
2222
端口, 宿主机ssh server仍然使用
22
端口.
把宿主机
2222
端口转发至公网
22
端口, 作为诱饵露出.
令宿主机
22
端口仅对安全的网络开放, 比如内网.
构建
如果您希望再修改点什么, 可以修改github仓库下载下来压缩包的
build.sh
文件.
里面定义了编译后的安装目录, 还有要基于哪个版本的openssh修改.
现在的构建方式是, 从镜像站拉某个版本的openssh源码包, 解压之后用预先修改过关键函数的文件替换源码同名文件, 然后编译安装.
构建后会生成一个目录以及一个
/run.sh
, 在容器直接把
/run.sh
作为启动进程就行.
已知的问题: 在Ubuntu环境下可能会缺少libcrypto库而无法编译, 编译出来也不能正常运行. 最好在CentOS环境编译.
已修复, 查看
版权归原作者 Catium2006 所有, 如有侵权,请联系我们删除。