首页/新闻资讯/正文详情

PowerSploit PowerView 的 Find-InterestingFile 深度指南:按关键词递归搜索敏感文件的侦察利器

发布时间:2026/9/23 1:57:43 来源:云帆数科 栏目:资讯中心
PowerSploit PowerView 的 Find-InterestingFile 深度指南:按关键词递归搜索敏感文件的侦察利器
PowerSploit PowerView 的 Find-InterestingFile 深度指南按关键词递归搜索敏感文件的侦察利器【免费下载链接】PowerSploitPowerSploit - A PowerShell Post-Exploitation Framework项目地址: https://gitcode.com/gh_mirrors/po/PowerSploit导读Find-InterestingFile是 PowerSploit 框架的 Recon 模块PowerView 工具集中用于文件侦察的核心函数它能够在本地路径或 UNC 网络共享上递归搜索文件名匹配指定关键词如 password、sensitive、secret、admin 等的有趣文件并可结合时间戳、写权限与备用凭据等条件进一步收敛结果。读完本篇你将掌握该函数全部参数的含义与用法、三种预置参数集FileSpecification / OfficeDocs / FreshEXEs的差异、输出对象PowerView.FoundFile的结构以及其底层基于Get-ChildItem与WNetAddConnection2W的实现原理能够在渗透测试的后期利用Post-Exploitation阶段快速定位可窃取凭据、配置或敏感资料的候选文件。功能定位为何需要按文件名找敏感文件在内网渗透的侦察阶段攻击者或授权红队人员最常做的事情之一就是在文件服务器、备份目录、用户主目录中翻找包含明文口令、凭据、配置信息的文件。手动逐个目录翻看不现实而Find-InterestingFile恰好把这一过程自动化它递归遍历指定路径按一组预置的通配符规则匹配文件名把命中项连同所有者、时间戳、文件大小等元数据一并返回。从仓库定义看该函数由 Will Schroederharmj0y编写采用 BSD 3-Clause 许可声明的外部依赖为Add-RemoteConnection与Remove-RemoteConnection用于凭据映射远程共享。完整实现位于 Recon/PowerView.ps1并通过 Recon/Recon.psd1 导出为 Recon 模块命令Recon/README.md 中的功能索引将其概括为searches for files on the given path that match a series of specified criteria。加载方式Find-InterestingFile包含在 PowerView 中你可以直接导入整个 PowerView 脚本Import-Module .\Recon\PowerView.ps1或者加载 Recon 模块同时获得Get-HttpStatus、Invoke-ReverseDnsLookup等其余侦察工具Import-Module .\Recon\Recon.psd1导入后即可通过Get-Command Find-InterestingFile验证命令是否可用。三种语法集Parameter Sets根据官方文档 docs/Recon/Find-InterestingFile.md该函数共有三种语法集分别面向自定义关键词、Office 文档和近期 EXE三类场景。源码中通过[CmdletBinding(DefaultParameterSetName FileSpecification)]Recon/PowerView.ps1指定默认参数集为FileSpecification。FileSpecification默认Find-InterestingFile [[-Path] String[]] [-Include String[]] [-LastAccessTime DateTime] [-LastWriteTime DateTime] [-CreationTime DateTime] [-ExcludeFolders] [-ExcludeHidden] [-CheckWriteAccess] [-Credential PSCredential]OfficeDocsFind-InterestingFile [[-Path] String[]] [-OfficeDocs] [-CheckWriteAccess] [-Credential PSCredential]FreshEXEsFind-InterestingFile [[-Path] String[]] [-FreshEXEs] [-CheckWriteAccess] [-Credential PSCredential]注意OfficeDocs与FreshEXEs是互斥的快捷开关一旦使用便不再接受-Include和三个时间参数它们只属于FileSpecification参数集而-CheckWriteAccess与-Credential在所有参数集中都可用。参数详解以下参数信息继承自官方文档并对照源码逐一核实。-Path要递归搜索的 UNC/本地路径。Type: String[] Parameter Sets: (All) Required: False Position: 1 Default value: .\ Accept pipeline input: True (ByPropertyName, ByValue) Accept wildcard characters: False源码中定义$Path .\Recon/PowerView.ps1默认搜索当前目录。支持传数组或通过管道输入多个路径函数会逐个处理。-Include仅返回文件名匹配指定字符串数组的文件/文件夹例如(*.doc*, *.xls*, *.ppt*)。别名为SearchTerms、Terms。Type: String[] Parameter Sets: FileSpecification Required: False Position: Named Default value: (*password*, *sensitive*, *admin*, *login*, *secret*, unattend*.xml, *.vmdk, *creds*, *credential*, *.config) Accept pipeline input: False Accept wildcard characters: False该默认数组在 Recon/PowerView.ps1 中与文档完全一致它直接作为Get-ChildItem -Include的参数使用因此通配符语法遵循 PowerShell 的文件匹配规则。-LastAccessTime只返回LastAccessTime大于该日期值的文件。Type: DateTime Parameter Sets: FileSpecification Required: False Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False-LastWriteTime只返回LastWriteTime大于该日期值的文件。Type: DateTime Parameter Sets: FileSpecification Required: False Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False-CreationTime只返回CreationTime大于该日期值的文件。Type: DateTime Parameter Sets: FileSpecification Required: False Position: Named Default value: None Accept pipeline input: False Accept wildcard characters: False-OfficeDocs开关参数。搜索 Office 文档*.doc*、*.xls*、*.ppt*。Type: SwitchParameter Parameter Sets: OfficeDocs Required: False Position: Named Default value: False Accept pipeline input: False Accept wildcard characters: False源码中对应的展开规则为(*.doc, *.docx, *.xls, *.xlsx, *.ppt, *.pptx)Recon/PowerView.ps1。-FreshEXEs开关参数。查找最近 7 天内被访问过的.EXE文件。Type: SwitchParameter Parameter Sets: FreshEXEs Required: False Position: Named Default value: False Accept pipeline input: False Accept wildcard characters: False源码实现为$LastAccessTime (Get-Date).AddDays(-7).ToString(MM/dd/yyyy)并将Include设为(*.exe)Recon/PowerView.ps1。注意它复用的是 LastAccessTime 过滤路径。-ExcludeFolders开关参数。从搜索结果中排除文件夹。Type: SwitchParameter Parameter Sets: FileSpecification Required: False Position: Named Default value: False Accept pipeline input: False Accept wildcard characters: False-ExcludeHidden开关参数。从搜索结果中排除隐藏文件和文件夹。默认情况下隐藏项包含在结果中。Type: SwitchParameter Parameter Sets: FileSpecification Required: False Position: Named Default value: False Accept pipeline input: False Accept wildcard characters: False源码通过$SearcherArguments[Force] -not $PSBoundParameters[ExcludeHidden]Recon/PowerView.ps1实现未指定-ExcludeHidden时Force为$True让Get-ChildItem强制显示隐藏项。-CheckWriteAccess开关参数。只返回当前用户具有写权限的文件。所有参数集均可用。Type: SwitchParameter Parameter Sets: (All) Required: False Position: Named Default value: False Accept pipeline input: False Accept wildcard characters: False源码中通过内部辅助函数Test-Write实现见下文实现解析。-Credential用于连接远程系统进行文件枚举的备用凭据[Management.Automation.PSCredential]对象。Type: PSCredential Parameter Sets: (All) Required: False Position: Named Default value: [Management.Automation.PSCredential]::Empty Accept pipeline input: False Accept wildcard characters: False当-Path是 UNC 路径匹配\\主机\共享形式且传入了凭据时函数会先用Add-RemoteConnection临时挂载该主机的IPC$枚举结束后再用Remove-RemoteConnection清理详见下文实现解析。输出对象PowerView.FoundFileFind-InterestingFile的输出类型为PowerView.FoundFile文档 OUTPUTS 章节由源码[OutputType(PowerView.FoundFile)]与$FoundFile.PSObject.TypeNames.Insert(0, PowerView.FoundFile)Recon/PowerView.ps1共同确认。每个命中文件输出一个对象包含以下属性属性来源Path文件完整路径FullNameOwner通过Get-Acl $_.FullName取得的文件所有者LastAccessTime上次访问时间LastWriteTime上次写入时间CreationTime创建时间Length文件大小字节字段构建逻辑位于 Recon/PowerView.ps1。该对象可直接通过Where-Object、Sort-Object或管道进一步处理例如筛选大文件或按路径排序。实战示例示例 1搜索本地备份目录默认关键词Find-InterestingFile -Path C:\Backup\返回本地路径C:\Backup\下文件名匹配默认搜索词集合的所有文件包括隐藏项。示例 2远程共享 访问时间过滤Find-InterestingFile -Path \\WINDOWS7\Users\ -LastAccessTime (Get-Date).AddDays(-7)返回远程路径\\WINDOWS7\Users\下命中默认搜索词、且最近 7 天内被访问过的文件。示例 3备用凭据枚举远程共享$SecPassword ConvertTo-SecureString Password123! -AsPlainText -Force $Cred New-Object System.Management.Automation.PSCredential(TESTLAB\dfm.a, $SecPassword) Find-InterestingFile -Credential $Cred -Path \\PRIMARY.testlab.local\C$\Temp\先用明文口令构造PSCredential再以该凭据枚举远程主机的C$\Temp\。由于路径是 UNC 且传入了凭据函数会自动挂载IPC$并在结束后卸载。扩展组合示例以下组合体现了各参数的实际搭配价值# 只找可写的配置文件便于进一步写入/篡改 Find-InterestingFile -Path \\FILESRV\Share\ -Include (*.config, *.ini, *.xml) -CheckWriteAccess # 找最近一周修改过的 Office 文档 Find-InterestingFile -Path D:\Docs\ -OfficeDocs -LastWriteTime (Get-Date).AddDays(-7) # 找 7 天内被访问过的可执行文件 Find-InterestingFile -Path C:\Program Files\ -FreshEXEs -ExcludeFolders # 排除隐藏项并排除文件夹只保留文件结果 Find-InterestingFile -Path \\SERVER\C$\ -ExcludeHidden -ExcludeFolders -Credential $Cred # 管道传入多个路径 C:\Backup\, D:\Temp\ | Find-InterestingFile -Include (*pass*, *key*)源码级实现解析整体流程函数的执行体分为BEGIN、PROCESS、END三个阶段Recon/PowerView.ps1BEGIN 阶段——构造搜索参数并准备辅助函数建立$SearcherArguments哈希表固定设置Recurse $True递归与ErrorAction SilentlyContinue静默跳过无权限目录避免刷屏报错并放入Include关键词数组Recon/PowerView.ps1。若指定-OfficeDocs覆盖Include为 Office 扩展名集合若指定-FreshEXEs覆盖为*.exe并设置 7 天前的 LastAccessTimeRecon/PowerView.ps1。通过Force参数决定是否显示隐藏文件。定义内部函数Test-WriteRecon/PowerView.ps1它尝试用[IO.File]::OpenWrite($Path)以写模式打开文件成功则返回$True抛异常则返回$False——这就是-CheckWriteAccess的判定依据。需要注意的是该检查会真实地尝试获取写句柄对目标文件会产生轻微副作用。PROCESS 阶段——按路径逐个枚举与过滤对每个目标路径若其为 UNC 路径正则\\\\.*\\.*匹配且传入了-Credential则解析出主机名并通过$MappedComputers哈希表去重对未挂载过的主机调用Add-RemoteConnection -ComputerName $HostComputer -Credential $Credential挂载IPC$Recon/PowerView.ps1。执行Get-ChildItem SearcherArguments参数展开获得全部命中项然后对每一项依次判定-ExcludeFolders$_.PSIsContainer为真则跳过写 Verbose 日志Excluding: ...-LastAccessTimeLastAccessTime小于阈值则跳过-LastWriteTimeLastWriteTime小于阈值则跳过-CreationTimeCreationTime小于阈值则跳过-CheckWriteAccessTest-Write失败则跳过。全部通过后构建PowerView.FoundFile对象并输出。END 阶段——清理远程映射遍历$MappedComputers.Keys对每个主机调用Remove-RemoteConnection卸载之前挂载的IPC$连接Recon/PowerView.ps1保证侦察结束后不残留凭据映射。底层依赖Add-RemoteConnection / Remove-RemoteConnection当使用-Credential时真正承担网络连接任务的是 PowerView 的这两个辅助函数Recon/PowerView.ps1Add-RemoteConnection基于 PSReflect 动态调用 Win32 APIWNetAddConnection2W通过$Mpr::WNetAddConnection2W使用CONNECT_TEMPORARY 4标志建立临时不保存连接从而在不改动系统持久网络映射的前提下用备用凭据访问远程资源调用失败会抛出包含 Win32 错误信息的异常。Remove-RemoteConnection调用WNetCancelConnection2销毁对应连接。正因为挂载→枚举→卸载被封装在同一函数内即使脚本异常中断正常路径下的映射也会在 END 阶段被清理。默认关键词清单的覆盖逻辑默认搜索词覆盖了常见的敏感文件命名模式口令/凭据类*password*、*creds*、*credential*敏感/管理类*sensitive*、*secret*、*admin*、*login*系统/配置类unattend*.xml无人值守安装应答文件常含明文口令、*.config、*.vmdk虚拟机磁盘镜像这一默认集合并未涵盖所有场景例如.kdbx、.ppk、id_rsa等因此实战中强烈建议结合-Include按目标环境自定义关键词。与 Find-InterestingDomainShareFile 的联动Find-InterestingFile不只是独立命令它还是 PowerView 中另一个侦察函数Find-InterestingDomainShareFile的核心引擎。后者会先通过Get-DomainComputer枚举域内主机、Get-NetShare列出共享然后对每个共享调用Find-InterestingFile递归搜刮有趣文件见 docs/Recon/Find-InterestingDomainShareFile.md 中use Find-InterestingFile on each的描述及其依赖声明。因此掌握Find-InterestingFile的参数细节也就掌握了域共享文件搜刮链路的底层能力。测试与已知边界测试覆盖仓库的测试文件 Tests/Recon.tests.ps1 中为Find-InterestingFile保留了Describe块但注释为#TODO: implement即目前没有自动化测试实现——这一点在评估该函数可靠性时值得留意。静默容错Get-ChildItem使用ErrorAction SilentlyContinue无权限访问的目录会被静默跳过不会中断整个搜索但也意味着结果可能不完整应视为尽力而为的枚举。写权限检查的代价-CheckWriteAccess会对每个候选文件执行一次打开写句柄的操作在共享上枚举大量文件时会有一定的性能开销且可能触发文件系统审计日志。环境要求这是面向 Windows 环境的 PowerShell 脚本依赖Get-Acl、WNetAddConnection2W等 Windows 特性需要在可访问目标路径本地或内网共享的 Windows 主机上运行使用-Credential需要具备相应的域/本地凭据权限。合规提示PowerSploit 是一个后渗透利用Post-Exploitation框架Find-InterestingFile设计用于在已获授权的渗透测试、红队演练或安全评估中搜索敏感文件。请务必在取得书面授权的前提下使用并注意其输出可能包含高敏数据明文口令、凭据文件等妥善保管扫描结果。参考路径速查官方文档docs/Recon/Find-InterestingFile.md函数实现Recon/PowerView.ps1依赖函数远程连接Recon/PowerView.ps1模块导出声明Recon/Recon.psd1功能索引Recon/README.md测试占位Tests/Recon.tests.ps1联动函数文档docs/Recon/Find-InterestingDomainShareFile.md【免费下载链接】PowerSploitPowerSploit - A PowerShell Post-Exploitation Framework项目地址: https://gitcode.com/gh_mirrors/po/PowerSploit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Gel CLI `gel extension uninstall` 命令详解:扩展卸载与生命周期管理
Gel CLI `gel extension uninstall` 命令详解:扩展卸载与生命周期管理

数据库图数据库关系型数据库 【免费下载链接】edgedb Gel supercharges Postgres with a modern data model, graph queries, Auth & AI solutions, and much more. 项目地址: https://gitcode.com/gh_mirrors/ed/edgedb 点击查看 免费下载 gel extension unin… · 2026/9/23 1:57:36

基于YOLOv8的热轧带钢表面缺陷检测实践与部署指南
基于YOLOv8的热轧带钢表面缺陷检测实践与部署指南

简介:基于YOLOv8的热轧带钢表面缺陷检测完整实践包,面向深度学习初学者、工业质检算法工程师及智能制造相关研究者。针对横向裂缝、纵向裂缝、块状裂缝、龟裂、坑槽等多类缺陷,提供从数据集准备、模型训练、微调到推理评估的整套流程&#xf… · 2026/9/23 1:57:36

基于YOLOv5的桥梁裂缝检测识别工程实战与调参详解
基于YOLOv5的桥梁裂缝检测识别工程实战与调参详解

简介:基于Python与Yolov5的路面桥梁裂缝检测识别项目,是一份面向毕业设计及深度学习目标检测学习的完整源码包,适用于混凝土桥梁、路面裂缝的自动检测与定位场景。压缩包共85个文件,核心包括23个Python源码和23个YAML模型配置&… · 2026/9/23 1:57:36

IL-15 ELISA试剂盒在肿瘤免疫治疗中的关键应用与优化
IL-15 ELISA试剂盒在肿瘤免疫治疗中的关键应用与优化

1. IL-15 Surpass ELISA试剂盒的技术定位与核心价值IL-15 Surpass ELISA试剂盒是专门针对白细胞介素15(Interleukin-15)检测开发的高灵敏度免疫分析工具。作为细胞因子检测领域的专业解决方案,其核心价值体现在三个方面:首先&… · 2026/9/23 6:37:27

3个技巧搞定leave过去分词,告别高频面试题翻车
3个技巧搞定leave过去分词,告别高频面试题翻车

3个技巧搞定leave过去分词,告别高频面试题翻车 版本升级后 API 全变了?别慌,这就像你刚学会用 Python 2 写脚本,突然被扔进 Python 3 的环境, print… · 2026/9/23 6:37:09

2026最新中国神仙体系:破解项目烂尾的底层逻辑
2026最新中国神仙体系:破解项目烂尾的底层逻辑

2026最新中国神仙体系:破解项目烂尾的底层逻辑 看了一堆教程还是不会写项目?这是不是你的真实写照?2026最新的技术栈更新飞快,但很多开发者依然卡在从“Demo”到“生产环境”的最后一公里。… · 2026/9/23 6:37:03

技术实战专栏:从原理到生产环境的深度解析
技术实战专栏:从原理到生产环境的深度解析

1. 专栏定位与核心价值这个专栏不是快餐式的技术速成手册,而是一位在技术一线摸爬滚打多年的实践者,将踩过的坑、验证过的方案、深夜调试得出的经验,用系统化的方式呈现的技术手记。不同于官方文档的"应该怎么做",这里更… · 2026/9/23 6:37:03

OpenReplay 消息二进制协议与 MOBS 代码生成器:从 Schema DSL 到多语言产物的完整指南
OpenReplay 消息二进制协议与 MOBS 代码生成器:从 Schema DSL 到多语言产物的完整指南

OpenReplay 消息二进制协议与 MOBS 代码生成器:从 Schema DSL 到多语言产物的完整指南 【免费下载链接】openreplay Session replay, cobrowsing and product analytics you can self-host. Best for reproducing issues and iterating on your product. 项目地址… · 2026/9/23 6:36:57

微信提示音修改实战:3步搞定性能优化与自定义逻辑
微信提示音修改实战:3步搞定性能优化与自定义逻辑

微信提示音修改实战:3步搞定性能优化与自定义逻辑 很多开发者背熟了 AudioContext 的 API,却卡在“为什么我在真机上没声音”或者“为什么切换提示音时卡死”的泥潭里。这不仅是语法问题,更是工程落地的性能优化难题。微信提示音修改看… · 2026/9/23 6:36:57

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码