被动式SSH
被动式SSH是一个开源框架,由扫描器和服务器组成,用于存储和查找每个主机(IPv4/IPv6/洋葱地址)的SSH密钥和指纹。
密钥材料以及指纹和主机信息存储在一个快速查找数据库中。该系统提供了SSH密钥的历史视图,同时还可以查看在不同IP地址上重复使用的常见密钥材料。
相关论文:用于网络威胁情报的SSH密钥材料的主动和被动收集。
特点
- 简单的SSH扫描器
- 将密钥材料存储在Redis数据库中的服务器
- 简单的REST API,可通过SSH指纹(包括hassh)或主机(IPv4、IPv6或洋葱地址)进行查找
- SSH横幅和SSH指纹的统计信息
服务器要求
- Python >= 3.6
- Redis > 5.0
- tornado
扫描器要求
- Python >= 3.6
- D4 paramiko
- pysocks(扫描Tor隐藏服务时需要)
安装
./install.sh
- 安装Redis和所有Python依赖项。
- 所有Python 3代码将安装在虚拟环境(PSSHENV)中。
Tor代理
SSH扫描器可以与Tor代理一起使用,以扫描主机或隐藏服务。
如果要扫描Tor隐藏服务,别忘了安装Tor代理:sudo apt-get install tor -y
运行
启动Redis和tornado服务器:
./LAUNCH -l
手动扫描
包含一个SSH扫描器,用于扫描小型网络或内部基础设施。
. ./PSSHENV/bin/activate
cd bin/
# 扫描一个主机
./ssh_scan.py -t <host: 10.0.0.12>
# 扫描网络范围
./ssh_scan.py -r <network range: 10.0.0.0/8>
API
提供API以查询被动式SSH服务器。
默认情况下,被动式SSH的tornado服务器运行在8500端口。
curl http://localhost:8500/banners
端点
/stats
返回服务器统计信息:
- SSH横幅数量
- 扫描的主机数量:
- ip
- onion
- 按类型统计的指纹数量
/banners
返回按得分排序的所有横幅
/banner/hosts/<banner>
按横幅获取主机:
- 横幅
- 主机列表
/keys/types
返回所有密钥类型列表
/host/ssh/<host>
返回主机SSH元数据:
- 首次发现时间
- 最后发现时间
- 端口
- 横幅列表
- 指纹列表
/host/history/<host>
返回主机的SSH历史记录
/fingerprints
返回按得分排序的所有指纹
/fingerprint/all/<fingerprint>
按指纹获取主机:
- 首次发现时间
- 最后发现时间
- 密钥类型
- 密钥base64编码
- 指纹
- 主机列表
/fingerprint/type/<key_type>/<fingerprint>
按密钥类型和指纹获取主机:
- 首次发现时间
- 最后发现时间
- 密钥类型
- 密钥base64编码
- 指纹
- 主机列表
/hasshs
返回按得分排序的所有hassh
/hassh/hosts/<hassh>
按hassh获取主机:
- hassh
- 主机列表
- kexinit
现有的被动式SSH数据库
许可证
该软件是根据GNU Affero通用公共许可证第3版发布的自由软件/开源软件。
引用
如果您想引用本工作,可以使用以下格式:用于网络威胁情报的SSH密钥材料的主动和被动收集
@article{dulaunoy2022active,
title={Active and Passive Collection of SSH key material for cyber threat intelligence},
author={Dulaunoy, Alexandre and Huynen, Jean-Louis and Thirion, Aurelien},
journal={Digital Threats: Research and Practice (DTRAP)},
volume={3},
number={3},
pages={1--5},
year={2022},
publisher={ACM New York, NY}
}