红队技巧-内网下的凭据解密

  • A+
所属分类:安全文章

  点击蓝字关注我哦


1.前言

        今天这篇文章就不说Windows 明文hash的获取,着重写一些常规运维软件的密码获取,例如navicat,vnc,xshell,xftp,WinSCP,SecureCRT,vcenter 等连接密码获取,毕竟在内网中,密码复用是很常见的人为安全问题,收集更多的密码,做一个nice的字典,然后跑一波,瞎猫总会碰上死耗子的。



实操

2.1 xshell

        在实战中,xshell遇到的很多,大型运维现场,多半就有xshell的身影,虽然xshell有些可能直接就等进去,或者保存了密码的,可以直接点击登陆,但是还是得收集一波密码不是,xshell的保存的密码是用星号代替了的,所以在某一方面,也可以直接用星号查看器去获取登陆密码。

Xshell目前主要有Xshell5和Xshell6,xshell7 三个版本,session文件分别保存在如下位置

1.xshell 5:%userprofile%DocumentsNetSarangXshellSessions

2.xshell 6: %userprofile%DocumentsNetSarang Computer6XshellSessions

3.xshell7: C:UsersAnonymousDocumentsNetSarang Computer7XshellSessions

红队技巧-内网下的凭据解密

Xftp 一样的,只是把路径中xshell改成xftp就行。

2.1.1 Xshell加密步骤

1.生成密钥:

根据会话文件的版本,密钥由不同的算法生成:

红队技巧-内网下的凭据解密

1.1 对于会话文件版本 < 5.1

Xshell 和 Xftp 都使用 MD5 算法来生成用于 RC4 密码的密钥,且Xshell 使用 16 字节长的 ASCII 字符串 MD5 摘要"[email protected]#h$e%l^l&"作为 RC4 密码密钥,Xftp 使用 16 字节长的 ASCII 字符串的 MD5 摘要"[email protected]#c$e%l^l&"作为 RC4 密码密钥。

1.2 对于会话文件版本 == 5.1 或 5.2

XShell 和 XFtp 都使用 SHA-256 算法来生成密钥,密钥是当前操作系统帐户的 SID 字符串的 32 字节长的 SHA-256 摘要。

1.3 对于会话文件版本 > 5.2

这种情况与前一种(版本 5.1 或 5.2)类似,密钥是当前操作系统帐户名称(区分大小写)和当前操作系统帐户的 SID 字符串组合的 SHA-256 摘要。例如,如果您当前的操作系统帐户的名称和 SID 是(注意是当前登陆用户哈) Administrator S-1-5-21-917267712-1342860078-1792151419-512 密钥是字符串的 32 字节长 SHA-256 摘要"AdministratorS-1-5-21-917267712-1342860078-1792151419-512"

1.4 对于用户设置了主密码的情况

密钥是用户设置的主密钥的 SHA-256 摘要。


2. 计算原始密码的 SHA-256 摘要

此步骤将仅针对会话文件版本 >= 5.1 执行,且这个 32 字节长的数据将被视为校验和并附加到加密的密码中。

3. 初始化密码

Xmanager 使用生成的密钥来初始化 RC4 密码。

4. 加密密码

Xmanager 使用初始化的 RC4 密码加密原始密码

5. 将校验和附加到加密密码

6. 将最终结果转换为 Base64 格式

github 方面工具: 

https://github.com/HyperSine/how-does-Xmanager-encrypt-passwordhttps://github.com/dzxs/Xdecrypt

红队技巧-内网下的凭据解密

实战中可以把sessions文件拷贝出来,然后whoami /user获取用户名和SID,然后解密。

如果没解密成功,先考虑版本问题,再考虑是否设置了userkey,再考虑是否使用其他登陆方式验证,比如公钥,或者根本就没有保存。


2.2 SecureCRT

        在实战中,很多运维人员会将SSH的账号密码保存在SecureCRT上,当我们拿下这台主机后就可以同时获取到多台机器的权限,同时收集机器密码

注:如果SCRT启动的时候有启动密码,Config加密了,这个就无法破解了 利用方法有两种(现在版本都出到9.1了):

2.2.1 方法一解密:针对低版本(7.x及以下版本)

版本不同,保存的sessions 文件位置不同,默认安装的路径下,config配置文件目录为:

%APPDATA%VanDykeConfigSessions

红队技巧-内网下的凭据解密

将下载的ini文件拷贝到本地,利用脚本进行解密。

红队技巧-内网下的凭据解密

对于低版本,使用脚本:

https://raw.githubusercontent.com/Synacktiv/stuffz/master/VanDyke_SecureCRT_decrypt.py

红队技巧-内网下的凭据解密

2.2.2 方法二:针对高版本(例如8.x及以上)

直接就把当前的session配置文件拷贝到本地的config目录下就行,拿着就能用,或者直接运维的机器之间连也行的。

2.3 winscp:
WinSCP默认安装在C:Program Files (x86)WinSCP,其用户凭证可以保存在注册表或者配置文件中,配置文件在C:Program Files (x86)WinSCPWinSCP.ini或在C:UsersUSERNAMEAppDataLocalVirtualStoreProgram Files (x86)WinSCPWinSCP.ini,看安装的形式,如果为所有用户的话,就在系统目录Program Files (x86),如果只为当前用户安装的话,就在用户目录下。

红队技巧-内网下的凭据解密

默认是保存在注册表中:

红队技巧-内网下的凭据解密

可以更改为存储到指定文件。
这样如果最开始运维人员没有设置,默认存储在系统注册表,我们一样可以通过注册表键值来获取加密后的密码
1. Windows 注册表,去到[HKEY_CURRENT_USERSoftwareMartin PrikrylWinSCP 2Sessions] 这个目录下,获取到hostusername,以及加密的密码。

红队技巧-内网下的凭据解密

reg query "HKEY_CURRENT_USERSoftwareMartin PrikrylWinSCP 2Sessions"reg query "HKEY_CURRENT_USERSoftwareMartin PrikrylWinSCP 2Sessionsip"

红队技巧-内网下的凭据解密


2.工具解密:

https://github.com/anoopengineer/winscppasswd
winscppasswd.exe <主机> <用户名> < encrypted_password >

密码就解出来了

红队技巧-内网下的凭据解密

当然也可以,我们这时候可以设置一下存储路径,保存信息到文件,都不需要重启winscp就能获取到会话信息了。

红队技巧-内网下的凭据解密

把文件拷贝到本地,然后用解密工具:

https://bitbucket.org/knarf/winscppwd/downloads/winscppwd.exe

红队技巧-内网下的凭据解密


2.4 Navicat 保存的密码提取

Navicat 永远的神,这是实战最常见的一款数据库管理软件。提取过程:

1.从注册表中查询host/username/pwd

reg query HKEY_CURRENT_USERSoftwarePremiumSoftNavicatServers /s /v hostreg query HKEY_CURRENT_USERSoftwarePremiumSoftNavicatServers /s /v usernamereg query HKEY_CURRENT_USERSoftwarePremiumSoftNavicatServers /s /v pwd

2.然后直接工具一把锁哈

https://github.com/HyperSine/how-does-navicat-encrypt-password

红队技巧-内网下的凭据解密

navicat也可以把连接记录导出为ncx文件

红队技巧-内网下的凭据解密

然后一把锁哈,在梭哈的过程中,编码有点问题,调一下就好了,突然发现作者这样好麻烦,不如直接写成一个文件,非要整两个文件,代码都是重复的,也可以写一个批量跑的。


2.5 提取vnc 客户端的密码

因为受版本影响,自动 VNC 密码恢复工具时常不起作用,因为在不同版本下保存在计算机上的 DES 加密密码的位置也不一样。所以这里更推荐手工解密。

2.5.1 找到加密的 VNC 密码

大多数 VNC 加密密码保存在注册表中,而只有 UltraVNC 保存在 INI 文件中。

RealVNC

HKEY_LOCAL_MACHINESOFTWARERealVNCvncserver Value: Password

TightVNC

HKEY_CURRENT_USERSoftwareTightVNCServer Value: Password or PasswordViewOnly

TigerVNC

HKEY_LOCAL_USERSoftwareTigerVNCWinVNC4 Value: Password

UltraVNC

C:Program FilesUltraVNCultravnc.ini Value: passwd or passwd2


现在高版本的RealVNC也不会把密码保存在注册表了,最省事的就是直接把连接配置导出来,一样的,拿到加密的vnc密码。

红队技巧-内网下的凭据解密

然后拿出来解密

红队技巧-内网下的凭据解密


2.6 teamview 抓密码

在网上,之前的2018年的主要是通过去内存找特征字符,适用于12版本,但是我测了现在最新版的不行了,会找不到。

红队技巧-内网下的凭据解密

用了另一个工具,只能抓到当前的teamview的id 及密码,因为现在是在连接之后,才会舒服密码验证。

红队技巧-内网下的凭据解密

其他的就不想说了,什么浏览器凭据获取。。。。。。

推荐一个工具网站:

https://www.nirsoft.net/password_recovery_tools.html


2.7.1 导出Firefox浏览器保存的密码

在线的的工具:

WebBrowserPassView.exe:

https://www.nirsoft.net/utils/web_browser_password.html

解密流程:

1.读取密钥文件(key4.db或key3.db),获得key和iv

2.读取记录文件(logins.json或signons.sqlite)的内容

3.如果未设置Master Password(支持为保存的密码添加额外的保护),使用key和iv对记录文件中的加密内容进行3DES-CBC解密,如果设置Master Password,还需要获得明文形式的Master Password,才能进行解密

2.7.1.1 最重要的两个文件:

火狐浏览器记录都保存在同一个文件中,文件位置为:%APPDATA%MozillaFirefoxProfilesxxxxxxxx.default(注:xxxxxxxx为8位随机字母和数字的组合)

不同版本的Firefox保存记录的文件名称不同,具体区别如下:

  1.Version大于等于32.0,保存记录的文件为logins.json

  2.Version大于等于3.5,小于32.0,保存记录的文件为signons.sqlite

定位logins.json或signons.sqlite文件的位置可通过cmd命令实现,内容如下:

dir %APPDATA%MozillaFirefoxProfiles*logins.json /s /bdir %APPDATA%MozillaFirefoxProfiles*signons.sqlite /s /b

红队技巧-内网下的凭据解密

红队技巧-内网下的凭据解密

其中encryptedUsername和encryptedPassword是加密的内容。

解密需要获得密钥文件(key和iv)并使用3DES-CBC解密:

1.如果Firefox的版本低于58.0,密钥文件为key3.db

2.如果Firefox为更高的版本,密钥文件为key4.db

红队技巧-内网下的凭据解密


2.7.1.2 实战情况下的对策:

未设置Master Password情况下

只需要获得记录文件(logins.json或signons.sqlite)和密钥文件(key4.db或key3.db),使用firepwd.py或者Firefox浏览器导入配置文件即可。

红队技巧-内网下的凭据解密

设置Master Password情况下

只需要加个-p参数 指定主密钥就OK了 python3 firepwd.py -p "abc123" -d mozilla_db

红队技巧-内网下的凭据解密

但是在实战中,多半是没有设置主密钥的,如果设置了,多半凉凉。


2.7.2 导出chrome 浏览器的密码和记录

导出chrom的在线的,直接用https://github.com/moonD4rk/HackBrowserData 就可以导出记录,cookie,密码。。。

离线的话,又得分情况来说了

2.7.2.1 版本不同解密方法不同:

1.当chrome<80.x版本时,使用dpapi进行解密就行(没有以v10或v11开头的ascil)

  此种解密方法需要离线,需要mastkey。

此方法参考:

https://cloud.tencent.com/developer/news/120840

2.当chrome>=80.x时使用的是AES-256-GCM的AEAD对称加密(可以直接看logon data 中加密字段的ascil 是否为v10和v11开头)

红队技巧-内网下的凭据解密

2.7.2.1.1 解密流程(有v10,v11开头的):

1.首先我们得清楚,在chrome中的敏感文件存储的位置

chrome的cookie存储的位置:

C:UsersusernameAppDataLocalGoogleChromeUser DataDefaultCookies

chrome的浏览器历史文件History存储的位置是

C:UsersusernameAppDataLocalGoogleChromeUser DataDefaultHistory 记录

chrome的登陆账号密码文件Login Data文件存储位置是

C:UsersusernameAppDataLocalGoogleChromeUser DataDefaultLogin Data

chrome中存储加密key的位置是

C:UsersusernameAppDataLocalGoogleChromeUser DataLocal State

其中Cookies、History、Login Data是SQLite3文件。

2.先获得加密key

红队技巧-内网下的凭据解密

os_crypt的encrypted_key的值中保存着需要用到的解密密钥。

使用网上的一个脚本解密

红队技巧-内网下的凭据解密

替换encryted_txt和encoded_key解密就行。

3.导出Edge浏览器密码

建议直接HackBrowserData,yyds

或者使用IE PassView 但是这个工具只支持低版本的IE(低版本的ie 卡得要死,应该没人用吧)

这个网站也有很多小工具

https://www.nirsoft.net/password_recovery_tools.html

yyds


红队技巧-内网下的凭据解密

END

红队技巧-内网下的凭据解密


红队技巧-内网下的凭据解密


看完记得点赞,关注哟,爱您!


请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!



关注此公众号,回复"Gamma"关键字免费领取一套网络安全视频以及相关书籍,公众号内还有收集的常用工具!

在看你就赞赞我!
红队技巧-内网下的凭据解密


红队技巧-内网下的凭据解密
红队技巧-内网下的凭据解密
红队技巧-内网下的凭据解密
扫码关注我们
红队技巧-内网下的凭据解密


扫码领hacker资料,常用工具,以及各种福利


红队技巧-内网下的凭据解密

转载是一种动力 分享是一种美德


本文始发于微信公众号(Gamma实验室):红队技巧-内网下的凭据解密

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: