信息收集类型
可以收集的信息包括但不限于:
- 操作系统版本、内核、架构
- 是否在虚拟化环境中,已安装的程序、补丁
- 网络配置及连接
- 防火墙设置
- 用户信息、历史记录(浏览器、登陆密码)
- 共享信息、敏感文件、缓存信息、服务等
系统信息
常用命令:
systeminfo
功能:显示有关计算机及其操作系统的详细配置信息,包括操作系统配置,安全信息,产品ID和硬件属性(如RAM,磁盘空间和网卡)
systeminfo /fo:csv
输出为csv格式,默认为list格式显示有关计算机及其操作系统的详细配置信息,包括操作系统配置,安全信息,产品ID和硬件属性(如RAM,磁盘空间和网卡)
用户及用户组信息
whoami
显示当前登录到本地系统的用户的用户,组和权限信息。如果没有参数使用,whoami将显示当前的域和用户名
whoami /user 查看当前用户的用户名和sid
whoami /groups 查看当前用户所属的用户组
whoami /priv 查看当前用户的权限
net user
添加或修改用户帐户或显示用户帐户信息。
net user 查看本机用户
net user“admin"查看admin用户的详细信息
有的时候管理员会删除system32下的net.exe,这时候可以尝试一下net1.exe(net有点权限他都有而且功能要比net多)。
net localgroup
添加,显示或修改本地组
net localgroup“administrators"查看administrators组的信息及成员
net accounts
更新用户帐户数据库并修改所有帐户的密码和登录要求。可以用来查看密码策略等信息
最近登录信息
query user
- 查看其它在线用户
- 查看管理员登录时间
- 查看管理员登录类型
网络信息
ipconfig
显示所有当前TCP/IP网络配置值并刷新动态主机配置协议(DHCP)和域名系统(DNS)设置。在不带参数的情况下使用,ipconfig显示所有适配器的IP地址,子网掩码和默认网关。
ipconfig
ipconfig/all
ipconfig/displaydns 显示DNS客户端解析程序缓存的内容,其中包括从本地主机文件预加载的条目和计算机解析的名称查询的任何最近获取的资源记录。
route
显示并修改本地IP路由表中的条目
route print -4 查看ipv4路由信息
arp
显示和修改地址解析协议(ARP)缓存中的条目,该缓存包含一个或多个用于存储IP地址及其解析的以太网或令牌环物理地址的表。
arp -a 显示arp缓存
netstat
显示活动的TCP连接,计算机侦听的端口,以太网统计信息,IP路由表,IPv4统计信息以及IPv6统计信息。
netstat -ano 显示活动的tcp、udp连接及它们对应的pid,地址与端口用数字表示
netstat -p tcp 显示tcp连接
net share
管理共享资源。在不带参数的情况下使用,net share显示关于在本地计算机上共享的所有资源的信息
net share 查看共享信息
net share c$ 查看c$共享的信息
net use
将计算机连接到共享资源或将计算机与共享资源断开连接,或显示有关计算机连接的信息。该命令还控制持久的网络连接。没有参数的情况下,net use检索一个网络连接列表
敏感文件
密码管理器:
cmdkey /l
Host文件
- Hosts文件全名域名解析文件,用来建立一个主机名到ip地址的映射。它的功能是对dns做一个补充,用户可以通过控制这个文件的内容来控制某些域名的解析。
- 一般来说,客户端解析域名,首先会查看dns缓存,如果没有的话,查询hosts文件中的记录,如果还是没有,再去向远程dns服务器查询。通过分析hosts文件,我们可以找到一些主机信息。
- Windows下hosts文件的位置:C:\Windows\System32\drivers\etc\hosts
回收站
- 回收站里可能会有一些有用的文件。
- 我们可以通过以下命令进入回收站文件夹:cd C:\$RECYCLE.BIN
- 这个文件夹及子文件夹是隐藏文件夹,如果我们直接使用dir命令而不加参数的话,是看不到文件夹中有什么的内容的。我们可以使用/ah参数(a显示具有指定属性的文件,h代表隐藏文件)来查看:dir /ah
这些文件夹以sid命名,如果我们要查看某一用户的回收站,就需要进入以他的sid命名的文件夹。
查看当前用户sid的命令是whoami/user,获取到sid后进入相应的文件夹
以$I开头文件保存了路径信息,$R开头的文件则是文件本身。
Type不同的文件,我们可以看到,$I开头的文件大概是这样的:
?楷事 C:\Users\z[老Desktop\README.txt
$R开头的文件则是下面这样,是这个文件本身的内容:
FOCA,Final version.December 2015
凭证收集
收集本机凭据是信息收集的一个非常重要的环节。通常我们可以收集的凭据包括但不限于:Windows hash(NTLM、LM),浏览器密码、cookie,远程桌面密码,VPN密码,WLAN密码,IIS服务器密码,FTP服务器密码等等。
Windows账户密码
- Windows用户的密码加密后一般有两种形式:NTLM Hash和LM Hash(从windows Vista和2008开始,微软就取消了LMHash)
- 这些hash通常有两个存储的地方:对于本地用户,存储在SAM数据库中,对于域用户,则存储在域控制器的NTDS.dit数据库中。当用户登陆时,这些hash也可能贮存在内存中,能够被我们抓取到。
Windows Hash
test:1003:E52CAC67419A9A22664345140A852F61:67A54E1C9058FCA16498061B96863248:::
绿色部分是LM Hash红色部分是NTLM Hash
LM_HASH==AAD3B435B51404EEAAD3B435B51404EE:
空密码或者未使用LM_HASH
SAM
- SAM全称叫做安全帐户管理器(SAM),是Windows XP,Windows Vista,Windows 7,8.1和10中存储用户密码的数据库文件。
- 用户密码以散列格式存储在注册表配置单元中,既可以作为LM Hash,也可以作为NTLM Hash。这个文件可以在%SystemRoot%/system32/config/SAM中找到,并且挂载在HKLM/SAM上。
- 为了提高SAM数据库的安全性,防止脱机软件破解,Microsoft在Windows NT4.0中引入了SYSKEY函数。启用SYSKEY时,SAM文件的磁盘上副本将被部分加密,以便存储在SAM中的所有本地帐户的密码哈希值都使用密钥(通常也称为“SYSKEY”)加密。
UAC
- 使用windows vista及以上操作系统的人都是接触过UAC的。举个例子:当我们右键某个可执行文件,选择以管理员身份运行,就会弹出一个对话框,依据当前用户权限的不同,可能是要求我们输入管理员凭据,也可能是询问我们是否允许该程序进行更改。这其实就是UAC。
- UAC设计的目的就是通过合理地分配权限来保护数据和系统资源的安全。
- UAC的一个作用就是帮助用户在不切换帐户的情况下既能选择在管理员权限下工作,又能选择在非管理员权限下工作。一般来说,用户以非管理员权限执行操作,只有在必要的时候,通过uac来暂时地提升权限。
离线凭证收集
提取SAM数据库hash
(1)使用reg命令保存注册表键
reg save hklm\sam c:\sam.hive
reg save hklm\system c:\system.hive
(2)使用Invoke-NinjaCopy
powershell -exec bypass
Import-Module .\invoke-ninjacopy.ps1
Invoke-NinjaCopy -Path C:\Windows\System32\config\SAM -LocalDestination .\sam.hive
Invoke-NinjaCopy -Path C:\Windows\System32\config\SYSTEM -LocalDestination .\system.hive
Saminside
使用Saminside离线提取sam数据库需要两个文件:sam与system
Cain
使用cain离线提取sam数据库需要两个文件:一个是数据库文件,另一个文件里保存了解密所需的syskey
离线提取lsass进程
Vista及以上的系统可以打开任务管理器,选择显示所有用户的进程,找到1sass进程后右键创建转储文件
procdump.exe
procdump.exe -ma lsass.exe lsass.dmp
取到内存转储文件后,就可以使用mimikatz来提取密码。这里需要注意的是运行mimikatz平台架构要与进行转储的系统兼容。命令如下:
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords
mimikatz
- Mimikatz项目地址:https://github.com/gentilkiwi/mimikatz
- 功能:抓取lsass进程中的密码,提取sam数据库中的密码,提取chrome凭据,提取证书,支持pass-the-hash、pass-the-ticket等攻击方式,功能非常强大
Powershell版Mimikatz
- 项目地址:https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Invoke-Mimikatz.ps1
- 可以通过powershell下载执行来运行
Windows访问令牌
windows登录过程
令牌(Access Tokens)是Windows操作系统安全性的一个概念。当用户登时,系统创建一个访问令牌,里面包含登录进程返回的SID和由本地安全策略配给用户和用户的安全组的特权列表。以该用户身份运行的的所有进程都拥有该令牌的一个拷贝。系统使用令牌控制用户可以访问哪些安全对象,并控制用户执行相关系统操作的能力。
访问令牌
- 1.用户账户的安全标识(SID)
- 2.用户所属组的SID
- 3.识别当前登录会话的登录SID
- 4.用户或者用户组所保存的权限列表
- 5.所有者SID
- 6.主组SID
- 7.默认的DACL( 自主访问控制列表)
- 8.访问令牌的来源
- 9.令牌是一个主令牌还是模拟令牌
- 10.限制的SID可选列表
- 11.当前模拟级别
- 12.其他统计
安全标识符(SID)
S - 1 - 5 - 21-3073775604-629373004-2559016625 - 1001
S - SID版本号 - 颁发机构ID - 域或本地ID - 账户和组ID
Token
Windows有两种类型的Token:
- Delegation token(授权令牌):用于交互会话登录(例如本地用户直接登录、远程桌面登录)
- Impersonation token(模拟令牌):用于非交互登录(利用net use访问共享文件夹)
- 两种token只在系统重启后清除
- 具有Delegation token的用户在注销后,该Token将变成Impersonation token,依旧有效
令牌窃取
- Token是一个用户的身份标识,窃取了Token就伪装了成了该用户
- 窃取Token需要SYSTEM权限
本机的SYSTEM无所不能,但在工作组或者域环境中窃取令牌的用处较大