作为SOC分析师如何用PowerShell实现类似Get-ADUser的内部URL记录查询?
用PowerShell查询内部URL相关记录的实现方法
可以实现类似Get-ADUser拉取全属性的查询效果,内部URL的记录存储位置不同,对应查询方案如下:
场景1:查询IIS部署的内部URL访问全量日志
如果内部URL运行在Windows IIS服务上,可直接解析本地日志返回全字段:
- 先确认IIS日志存储路径,默认路径为
C:\inetpub\logs\LogFiles\W3SVC1,也可以执行以下命令查询自定义路径:Get-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/siteDefaults/logFile" -name "directory" - 替换命令中的
目标URL路径(如/api/user/login)后执行,即可返回该URL的所有访问记录全属性:
Get-ChildItem -Path "C:\inetpub\logs\LogFiles\W3SVC1" -Filter "*.log" | ForEach-Object { Get-Content $_.FullName | Select-String -Pattern "目标URL路径" | ConvertFrom-Csv -Header Date,Time,ServerIP,Method,UriStem,UriQuery,Port,ClientIP,UserAgent,Status,SubStatus,Win32Status,TimeTaken -Delimiter " " } | Select-Object *
返回字段包含访问时间、客户端IP、请求方法、状态码、响应耗时等全部日志维度。
场景2:查询内部URL的DNS解析全属性
如果需要查询内部域名的DNS注册、解析相关全量信息,可使用DNS服务模块命令:
- 前提:执行命令的设备已安装
DnsServer模块(域控制器或安装了RSAT-DNS管理工具的终端都支持) - 替换命令中的
内部域名前缀、内部域后缀、DNS服务器地址后执行:
Get-DnsServerResourceRecord -ZoneName "内部域后缀" -Name "内部域名前缀" -ComputerName "DNS服务器地址" | Select-Object *
返回字段包含记录类型、TTL值、对应解析IP、创建时间、修改时间等全部DNS属性。
场景3:查询终端本地缓存的内部URL访问记录
如果需要拉取单台终端用户访问过的内部URL全量历史,可直接读取浏览器历史数据库:
- 以Edge浏览器为例,先复制历史数据库文件避免占用,再执行查询,提前安装
PSSQLite模块即可:
Copy-Item "$env:LOCALAPPDATA\Microsoft\Edge\User Data\Default\History" -Destination "$env:TEMP\edge_history.db" -Force Invoke-SqliteQuery -DataSource "$env:TEMP\edge_history.db" -Query "SELECT * FROM urls WHERE url LIKE '%内部域名关键词%'" | Select-Object *
返回字段包含访问次数、首次/末次访问时间、页面标题等全量浏览属性。
提示:如果内部URL的访问记录存储在企业WAF、统一日志审计平台等第三方系统,直接用PowerShell调用对应系统的查询接口拉取全量返回值即可,字段规则参考对应系统的接口说明。
内容的提问来源于stack exchange,提问作者Julio portominobello
相关产品推荐
相关产品推荐

