PowerView内网搜寻敏感信息
本文介绍几个PowerView非常实用的内网收集敏感信息的几个工具方法
Invoke-ShareFinder
从共享文件中挖掘敏感信息是红队非常常用的收集信息手法,从中或许可以找到密码本、员工目录、薪酬信息、网络架构等信息,这些大多是由于共享文件权限设置不合理导致的。PowerView有些非常实用的功能(Invoke-Netview和Invoke-Sharefinder)可以帮我快速找到我们当前用户可以访问的共享目录。
Invoke-ShareFinder最新的版本可以与Invoke-FileFinder配合使用
PS C:\> Invoke-ShareFinder -Ping -CheckShareAccess -Verbose | Out-File -Encoding ascii found_shares.txt
这个命令会先ping AD所有的机器对象,确定机器可达以后开始枚举,检查所有发现的共享目录的读权限,然后把结果输出到found_shares.txt文件。-Verbose 参数会给输出结果打上一些状态标记,输出类似于这样:
\\WIN2K8.company.com\MSBuild - test
\\WIN2K8.company.com\NETLOGON - Logon server share
\\WIN2K8.company.com\SYSVOL - Logon server share
\\WIN2K8.company.com\test -
\\WIN2K8.company.com\Users - User share
\\WINDOWS7.company.com\secret - don't look here
...snip...
我会把原始输出文件保存一份,然后去到输出文件中把那些不怎么感兴趣的文件名全干掉,然后把剩下的结果直接输入给Invoke-FileFinder
PS C:> Invoke-FileFinder -ShareList .\found_shares.txt -OutFile found_files.csv
这条命令把前一步输出的共享目录位置输入并进行递归查找,过滤那些文件名包含‘pass’, ‘sensitive’, ‘admin’, ‘secret’, ‘login’, ‘unattend.xml’, ‘.vmdk’, ‘creds’, or ‘credential*’的文件,结果会输出到指定文件,包含文件的路径,所有者,最后访问时间,大小,如果想搜索其他字段可以这样
PS C:> Invoke-FileFinder -ShareList .\found_shares.txt -OutFile found_files.csv -Terms payroll,CEO,…
这样会替换掉默认的查找字段。如果你不希望使用枚举的共享目录,而是直接执行Invoke-FileFinder,那么搜索范围会是整个AD域中活跃的机器的所有可达的共享目录,不包含C(可以用过 -IncludeC 和-IncludeAdmin参数包含)。
PS C:> Invoke-FileFinder -OutFile all_files.csv -Verbose
Find-InterestingDomainShareFile
Find-InterestingDomainShareFile使用起来似乎比前面两个命令更方便高效一些,可以指定也可以自动遍历目标主机的共享文件目录,并根据关键字找到感兴趣的文件
Find-InterestingDomainShareFile -Include @('*password*','*login*') -ExcludedShares @('*.png','*.gif','*.html')
get interesting share file
Get-ADDefaultDomainPasswordPolicy
可以用来查询域密码策略,这在前期信息收集过程中非常有用,可以查看账号密码锁定阈值,密码最小长度等,可以给渗透前的密码破解提供非常有价值的信息
上图可以看到密码锁定阈值为5,窗口为30分钟,这就告诉我们在用password spray的时候频率要控制在30分钟内失败不能超过5次
Get-DomainUser
获取所有域用户信息
Get-DomainUser -Domain gsc.test.com -Server blrad04-dc
Get-ObjectAcl
查询有DC Replication权限的用户
Get-ObjectAcl "dc=gsc,dc=test,dc=com" -ResolveGUIDs -Server blrad03-dc | ? {($_.ActiveDirectoryRights -match 'GenericAll') -or ($_.ObjectAceType -match 'Replication-Get')}
Get-DomainComputer
获取所有域电脑信息 Get-DomainComputer
Get-DomainGroup
获取所有组信息 Get-DomainGroup -GroupScope NotGlobal -Properties name
Get-DomainGPOUserLocalGroupMapping
获取用户可以远程登录的机器Get-DomainGPOUserLocalGroupMapping -Identity <USER> -Domain <DOMAIN> -LocalGroup RDP
<user> = cnb\test , <Domain> = cnb.test.com
参考
工具作者提供的一些示例:https://gist.github.com/HarmJ0y/184f9822b195c52dd50c379ed3117993