JustinAzoff/ssh-auth-logger

GitHub: JustinAzoff/ssh-auth-logger

一个轻量级的 Go 语言 SSH 认证日志蜜罐,通过结构化 JSON 日志记录凭据和攻击信息,支持大规模网络部署。

Stars: 25 | Forks: 11

# SSH Auth Logger 一个低/零交互的 SSH 认证日志蜜罐 ## 有趣的功能 ### 结构化日志 ssh-auth-logger 将所有认证尝试记录为 JSON,便于其他工具读取。不再有丑陋的 [OpenSSH 日志解析漏洞](http://dcid.me/texts/attacking-log-analysis-tools.html)。 ### “随机”主机密钥 ssh-auth-logger 使用 HMAC 对目标 IP 地址和密钥进行哈希处理,从而为每个响应的 IP 地址生成一致的“随机”密钥。这意味着您可以在 /16 网段上运行 ssh-auth-logger,每个 IP 地址都会显示不同的主机密钥。同时也支持随机的 sshd 版本报告。 ## 示例日志条目 这通常记录在一行中 ``` { "client_version": "SSH-2.0-libssh2_1.4.3", "destinationServicename": "sshd", "dpt": "2222", "dst": "192.168.1.2", "duser": "root", "level": "info", "msg": "Request with password", "password": "P@ssword1", "product": "ssh-auth-logger", "server_version": "SSH-2.0-dropbear_2019.78", "server_key_type":"ssh-rsa", "spt": "38624", "src": "192.168.1.4", "time": "2017-11-17T19:16:37-05:00" } ``` ## 如何使用 ``` go install github.com/JustinAzoff/ssh-auth-logger@latest export SSHD_BIND=:2222 ~/go/bin/ssh-auth-logger ``` ## 注意 直接绑定到 22 端口: ``` sudo setcap cap_net_bind_service=+ep ~/go/bin/ssh-auth-logger ``` ## 使用 Docker 运行 在主机上绑定到 2222 端口 ``` docker run -t -i --rm -p 2222:22 justinazoff/ssh-auth-logger ``` Docker compose 示例: ``` # 创建隔离网络 networks: isolated_net: driver: bridge services: ssh-auth-logger: image: justinazoff/ssh-auth-logger:latest container_name: ssh-auth-logger environment: # Following are default values # - SSHD_RATE=120 # 比特每秒,模拟极慢的连接 # - SSHD_BIND=:22 # 监听的端口和接口 # - SSHD_KEY_KEY="Take me to your leader" # 这是一个密钥,用于为给定的主机 IP 地址生成确定性哈希值 # - SSHD_MAX_AUTH_TRIES=6 # 允许的最小认证尝试次数 # - SSHD_RSA_BITS=3072 # 如果使用 'rsa',你也可以设置 RSA 密钥大小,2048, 3072, 4096 (非常罕见) # - SSHD_PROFILE_SCOPE=host # 可以是 'remote_ip' (每个远程 IP 获得自己的 Profile,模拟针对攻击者的行为),或其他值为 'host' (同一本地主机始终获得相同的 Profile,例如绑定到 0.0.0.0:22 将始终选择相同的 Profile)。 # - SSHD_SEND_BANNER=false # 在密码提示之前发送 SSH 登录标语 # - SSHD_LOG_CLEAR_PASSWORD=true # 以明文或 Base64 编码记录密码 # - SSHD_LOGS_FILTER="" # 允许字段的逗号分隔列表。'msg', 'level' 和 'time' 不能被移除。可能的组合包括:"duser,src,spt,dst,dpt,client_version,server_version,password,keytype,fingerprint,server_key_type,destinationServicename,product" - TZ=Europe/Berlin # You can set Time Zone to see logs with your local time volumes: # Mount log file if needed - /var/docker/ssh-auth-logger/log:/var/log ports: - 2222:22 # SSH Auth Logger networks: # Use isolated docker network, so that other containers will be not reachable from it - isolated_net restart: unless-stopped deploy: resources: limits: cpus: '0.50' memory: 100M healthcheck: # Will test if port is still open AND log file was not vanished by host machine log rotate test: wget -v localhost$$SSHD_BIND --no-verbose --tries=1 --spider && test -s /var/log/ssh-auth-logger.log || exit 1 interval: 5m00s timeout: 5s retries: 2 start_period: 5s logging: driver: json-file options: max-size: 10m ```
标签:BOF, Docker, ETW劫持, EVTX分析, EVTX分析, Go, JSON, Ruby工具, SSH, 主机密钥, 低交互, 凭据窃取检测, 威胁情报, 安全防御评估, 开发者工具, 日志审计, 日志记录, 欺骗防御, 端口监听, 红队行动, 网络安全, 蜜罐, 规避防御, 认证监控, 证书利用, 请求拦截, 隐私保护, 零交互