PowerShell通过多维度(大小、扩展名、路径、权限、修改时间)综合识别高危大文件:1.按大小+可疑后缀筛选;2.扫描异常路径中的超大文件;3.检查宽松权限+大体积组合;4.分析近期创建/修改的大文件行为特征。
powershell 可以高效识别文件服务器中潜在风险的“高危大文件”,关键不在于单纯看大小,而要结合文件类型、存放路径、访问权限和修改时间等维度综合判断。下面提供几种实用检查方式。
按大小和扩展名组合筛选可疑文件
大体积文件本身未必危险,但配合特定后缀(如 .exe、.ps1、.vbs、.scr、.bat)就需警惕。执行以下命令可快速定位:
- 查找大于100MB的脚本或可执行类文件:Get-ChildItem D:Shares -Recurse -File | Where-Object { $_.Length -gt 100MB -and ($_.Extension -in '.exe','.ps1','.vbs','.bat','.scr') } | Select-Object FullName,Length,LastWriteTime
- 可根据实际调整路径(
D:Shares)、阈值(100MB)和扩展名列表 - 建议避开系统目录(如
C:Windows),聚焦共享目录或用户上传区
检查异常存放位置的大型文件
某些路径本不该出现大文件,比如日志目录突然出现GB级二进制文件,或临时文件夹里有大量加密后缀(.lockbit、.phobos):
- 扫描常见高危路径中的超大文件:@("D: emp","D:inetpubwwwrootuploads","\servershareupload") | ForEach-Object { Get-ChildItem $_ -Recurse -File -ErrorAction SilentlyContinue | Where-Object {$_.Length -gt 50MB} }
- 若发现
.log目录下存在.zip或.7z文件,且大小突增,可能是攻击者打包窃取数据 - 注意排除备份文件(如
.bak、.vhd),可通过CreationTime和LastWriteTime判断是否为近期生成
识别权限宽松且体积异常的文件
高危文件往往伴随宽松的NTFS权限(如 Everyone 或 Authenticated Users 具有写入权),再叠加较大体积,风险显著升高:
- 列出所有大于200MB且对Everyone开放写权限的文件:Get-ChildItem D:Shares -Recurse -File | Where-Object {$_.Length -gt 200MB} | ForEach-Object { $acl = Get-Acl $_.FullName; if ($acl.Access | Where-Object {$_.IdentityReference -match 'Everyone|Authenticated Users' -and $_.FileSystemRights -match 'Write|FullControl'}) { $_ | Select-Object FullName,Length,@{Name='Owner';Expression={$acl.Owner}} } }
- 结果中若 Owner 显示为非管理员账户(如
NT AUTHORITYSYSTEM以外的普通用户),需重点核查 - 可进一步用
Get-SmbShare配合Get-SmbShareAccess检查共享级权限是否过度开放
结合修改时间和行为特征做辅助判断
单次批量创建或集中修改的大文件,常与勒索加密、横向移动或数据外泄相关:
- 查找过去24小时内创建/修改且大于50MB的文件:Get-ChildItem D:Shares -Recurse -File | Where-Object { $_.LastWriteTime -gt (Get-Date).AddHours(-24) -and $_.Length -gt 50MB } | Sort-Object LastWriteTime -Descending | Select-Object FullName,Length,LastWriteTime
- 若同一目录下多个文件
LastWriteTime精确到秒级一致,极可能是自动化工具所为 - 配合安全日志(Event ID 4663:句柄操作)可验证是否有异常进程访问这些文件


















