当前位置: 首页 > news >正文

RDP登录事件详细溯源分析脚本(兼容Windows PowerShell版本)

脚本功能详解

  1. RDP登录事件提取
    从Windows安全日志中筛选事件ID 4624(成功登录)且登录类型为10(远程交互/RDP)的事件
    提取关键信息:时间、账户名、源IP、认证方式、进程名和会话ID
  2. IP情报分析
    地理位置查询:使用ip-api.com 免费API获取国家、城市、ISP等信息
    WHOIS查询:模拟查询IP注册信息(需配置有效API密钥)
    威胁情报检查:模拟查询AbuseIPDB等威胁情报源(需配置有效API密钥)
  3. 网络警察方法模拟
    证据链构建:完整记录所有登录事件的时间线和上下文
    ISP协作:通过WHOIS信息识别网络服务提供商
    威胁评分:基于公开威胁情报评估风险等级
    调查流程:提供标准网络犯罪调查流程参考
  4. HTML报告生成
    专业排版的可视化报告
    颜色编码的风险等级标识
    地理分布可视化(需实际部署时添加Leaflet.js )
    调查建议和后续步骤
    实际应用注意事项
    API密钥配置:脚本中的WHOIS和威胁情报查询需要有效API密钥才能工作

法律合规:

在真实环境中查询IP注册信息需遵守相关法律法规
非执法机构可能无法获取完整的注册用户信息
数据隐私:

处理包含个人数据的日志时需遵守GDPR等数据保护法规
报告应妥善保管,防止敏感信息泄露
扩展功能:

可添加VT(VirusTotal)等更多威胁情报源查询
可集成企业内部的SIEM系统数据
可添加自动化的威胁响应动作(如防火墙封锁)

<#
.SYNOPSIS 
RDP登录事件详细溯源分析脚本(兼容Windows PowerShell版本).DESCRIPTION 
此脚本兼容Windows PowerShell 5.1,分析本机安全日志中的真实RDP登录事件,
提取详细信息并进行网络定位,结果导出为HTML报告。.NOTES 
文件名: RDP_Login_Forensics_Compatible.ps1  
更新日期: 2025年11月13日 
版本: 1.3 
#># 初始化报告路径 
$reportPath = "$env:USERPROFILE\Desktop\RDP_Login_Forensics_Compatible_$(Get-Date -Format 'yyyyMMdd_HHmmss').html"# HTML报告头部 
$htmlHeader = @"
<!DOCTYPE html>
<html>
<head><title>RDP登录事件溯源报告(兼容版) - $env:COMPUTERNAME</title><style>body { font-family: 'Segoe UI', Arial, sans-serif; margin: 20px; color: #333; }h1 { color: #2b579a; border-bottom: 1px solid #2b579a; padding-bottom: 10px; }h2 { color: #3a6ea5; margin-top: 25px; }table { border-collapse: collapse; width: 100%; margin-bottom: 20px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }th { background-color: #2b579a; color: white; padding: 12px; text-align: left; }td { padding: 10px; border: 1px solid #ddd; }tr:nth-child(even) { background-color: #f2f2f2; }.critical { background-color: #ffdddd; }.warning { background-color: #fff3cd; }.info { background-color: #d4edda; }.ip-info { background-color: #e7f3fe; margin-bottom: 20px; padding: 15px; border-left: 5px solid #2b579a; }.timestamp { color: #6c757d; font-size: 0.9em; }.no-data { color: #dc3545; font-weight: bold; }</style>
</head>
<body><h1>RDP登录事件溯源分析报告(兼容版)</h1><p class="timestamp">报告生成时间: $(Get-Date -Format "yyyy-MM-dd HH:mm:ss")</p><p>计算机名称: $env:COMPUTERNAME</p>
"@ # 1. 查询真实RDP登录事件 
function Get-RdpEvents {try {$events = Get-WinEvent -FilterHashtable @{LogName='Security'ID=4624 StartTime=(Get-Date).AddDays(-30)} -MaxEvents 100 -ErrorAction Stop | Where-Object {$_.Properties[8].Value -eq 10  # 登录类型10 = 远程交互(RDP)} | Select-Object @{Name='TimeCreated'Expression={$_.TimeCreated}}, @{Name='Account'Expression={$_.Properties[5].Value}}, @{Name='SourceIP'Expression={$_.Properties[18].Value}}, @{Name='LogonType'Expression={$_.Properties[8].Value}}, @{Name='AuthenticationPackage'Expression={$_.Properties[10].Value}}, @{Name='ProcessName'Expression={$_.Properties[17].Value}}, @{Name='SessionID'Expression={$_.Properties[3].Value}}return $events }catch {Write-Warning "查询安全日志时出错: $_"return @()}
}$rdpEvents = Get-RdpEvents # 2. IP情报收集函数(兼容旧版PowerShell)
function Get-IPInformation {param ([string]$ip )$result = @{IP = $ip Country = "未知"Region = "未知"City = "未知"ISP = "未知"Organization = "未知"ASN = "未知"ThreatLevel = "信息"}if ($ip -eq "::1" -or $ip -eq "127.0.0.1" -or $ip -match '^(10\.|172\.(1[6-9]|2[0-9]|3[0-1])\.|192\.168\.)') {$result.Country = "本地网络"$result.Region = "内部地址"$result.ISP = "内部网络"return [PSCustomObject]$result }try {$geoResponse = Invoke-RestMethod -Uri "http://ip-api.com/json/$ip"  -ErrorAction Stop Start-Sleep -Milliseconds 100 if ($geoResponse -and $geoResponse.status  -eq "success") {$result.Country = if ($geoResponse.country)  { $geoResponse.country  } else { "未知" }$result.Region = if ($geoResponse.regionName)  { $geoResponse.regionName  } else { "未知" }$result.City = if ($geoResponse.city)  { $geoResponse.city  } else { "未知" }$result.ISP = if ($geoResponse.isp)  { $geoResponse.isp  } else { "未知" }$result.Organization = if ($geoResponse.org)  { $geoResponse.org  } else { "未知" }$result.ASN = if ($geoResponse.as)  { $geoResponse.as  } else { "未知" }}}catch {Write-Warning "IP查询失败: $_"}return [PSCustomObject]$result 
}# 3. 处理IP信息 
$ipAnalysisResults = @()
if ($rdpEvents) {foreach ($event in $rdpEvents) {$ip = $event.SourceIP if (-not $ip -or $ip -eq "-") { continue }$ipAnalysisResults += Get-IPInformation -ip $ip }
}# 4. 生成HTML报告内容 
$htmlBody = @"<h2>RDP登录事件概览</h2>
"@ if ($rdpEvents) {$htmlBody += @"<p>共发现 $($rdpEvents.Count) 条真实RDP登录事件</p><table><tr><th>时间</th><th>账户</th><th>来源IP</th><th>认证方式</th><th>进程名</th><th>会话ID</th></tr>
"@ foreach ($event in $rdpEvents) {$htmlBody += @"<tr><td>$($event.TimeCreated)</td><td>$($event.Account)</td><td>$($event.SourceIP)</td><td>$($event.AuthenticationPackage)</td><td>$($event.ProcessName)</td><td>$($event.SessionID)</td></tr>
"@ }$htmlBody += @"</table>
"@ 
} else {$htmlBody += @"<p class="no-data">未在安全日志中找到RDP登录事件</p><p>可能原因:<ul><li>系统未启用远程桌面服务</li><li>过去30天内无远程登录记录</li><li>当前账户无权限访问安全日志</li></ul></p>
"@ 
}if ($ipAnalysisResults) {$htmlBody += @"<h2>IP地址分析</h2><p>以下是对发现的来源IP地址的基础分析:</p>
"@ foreach ($result in $ipAnalysisResults) {$threatClass = switch ($result.ThreatLevel) {"高危" { "critical" }"中危" { "warning" }"低危" { "info" }default { "" }}$htmlBody += @"<div class="ip-info"><h3>IP地址: $($result.IP)</h3><table class="$threatClass"><tr><th>地理位置</th><td>$($result.City), $($result.Region), $($result.Country)</td></tr><tr><th>网络提供商</th><td>$($result.ISP) (AS$($result.ASN))</td></tr><tr><th>注册组织</th><td>$($result.Organization)</td></tr></table></div>
"@ }
}$htmlBody += @"<h2>后续行动建议</h2><ul><li>使用<strong>PowerShell 7+</strong>版本可获得更完整的威胁情报分析</li><li>配置防火墙规则限制RDP端口(默认3389)的访问来源</li><li>启用<strong>网络级别认证(NLA)</strong>提高安全性</li><li>定期审计<strong>安全日志</strong>中的异常登录活动</li></ul>
"@ # HTML报告尾部 
$htmlFooter = @"<footer style="margin-top: 30px; padding-top: 10px; border-top: 1px solid #ddd; color: #666;"><p>报告生成工具: RDP登录溯源分析脚本(兼容版) v1.3</p><p>生成于: $(Get-Date -Format "yyyy年M月d日 HH:mm") 农历乙巳年九月廿四</p></footer>
</body>
</html>
"@ # 合并并输出HTML报告 
$htmlContent = $htmlHeader + $htmlBody + $htmlFooter 
$htmlContent | Out-File -FilePath $reportPath -Encoding UTF8 # 打开生成的报告 
try {Start-Process $reportPath Write-Host "RDP登录溯源报告(兼容版)已生成: $reportPath" -ForegroundColor Green 
}
catch {Write-Host "报告已生成到桌面但无法自动打开,请手动访问。" -ForegroundColor Yellow 
}
http://www.dtcms.com/a/607069.html

相关文章:

  • 贪心算法实验1
  • 怎样做一个网站电子商务平台的类型
  • 好的网站建设公司哪家好北京优化推广公司
  • 易语言模块反编译与破解技术解析 | 深入理解反编译的原理与应用
  • 网站开发是哪个营销方案策划书
  • 用ps做一份网站小程序在线制作模板
  • Vite 7 + React 19 升级清单
  • 微网站怎么建设wordpress餐饮
  • 中国建设银行社保卡网站wordpress看板猫
  • 动易网站中添加邮箱seo推广主要做什么
  • 网站建设教程吧百度收录入口提交
  • 密度估计与人群计数的深度学习方法综述
  • 坪地网站建设游戏网页设计
  • Spring Data JAP中Pageable对象如何从1开始分页,而不是从0开始
  • 勇闯前后端:Java 基础语法 + ATM 同步实现
  • 城市建设网站鹤岗市云集网站哪个公司做的
  • 为什么用wp做网站健身会所网站模板
  • 不同架构下readdir() 返回值中 struct dirent.d_type 的取值差异与解决方法
  • 衡水做网站建设公司网站建设发展趋势
  • 2025 济南专业化科技孵化器申报攻略:中承信安专业测试服务助力企业通关
  • 浙江省建设协会网站首页济南网络推广seo
  • linux系统学习(11、shell编程)
  • SAP FICO应付暂估款账龄分析表
  • 牡丹园网站建设p2p网站开发维护
  • 做网站系统学校淮滨网站建设
  • wordpress模版做网站宁波网络营销服务
  • C语言编译器哪个好学 | 学习C语言编译器的入门指南与推荐
  • 【036】阳乐音乐厅购票平台
  • Katalon Studio 最佳实践:提升自动化测试效率的实用指南
  • Vue项目实战《尚医通》,登录模块表单自定义校验规则,笔记29