PoisonXploIT/Auditing_with_PowerShell
GitHub: PoisonXploIT/Auditing_with_PowerShell
一款基于PowerShell的一键式Windows企业安全审计脚本,涵盖十大审计模块,自动收集系统信息并检测妥协指标,输出多格式结构化报告。
Stars: 2 | Forks: 0
  
# 使用说明 - 完整企业审计
## 描述
一键执行完整企业安全审计的高级 PowerShell 脚本。它收集关键的系统信息,检测妥协指标 (IOCs),并以多种格式生成报告。
## 快速执行 (一键)
### 方法 1: 双击 (推荐)
1. 找到文件 `Auditoria_Empresarial_Completa.ps1`
2. 在文件上**右键单击**
3. 选择 **“使用 PowerShell 运行”**
4. 如果出现安全警告,请按 **“S”** 继续
### 方法 2: 从 PowerShell
```
# 导航到脚本所在文件夹
cd C:\ruta\del\script
# 执行脚本
.\Advanced PowerShell script.ps1
```
### 方法 3: 远程执行 (适用于多台服务器)
```
# 在远程服务器上执行
Invoke-Command -ComputerName SERVIDOR01 -FilePath ".\Auditoria_Empresarial_Completa.ps1"
# 在多台服务器上执行
$servers = Get-Content "servidores.txt"
$servers | ForEach-Object {
Invoke-Command -ComputerName $_ -FilePath ".\Advanced Powershell Script.ps1"
}
```
## 系统要求
### 必备要求
- **操作系统:** Windows 10, Windows 11, Windows Server 2016/2019/2022
- **PowerShell:** 版本 5.1 或更高
- **磁盘空间:** 至少 500 MB 可用空间 (用于存放结果)
### 推荐权限
| 权限级别 | 可获取的信息 |
|---------------------|------------------------|
| **普通用户** | 当前进程
网络连接
可访问的文件
安全事件 (受限)
系统配置 | | **管理员** | **以上所有 +**
完整安全事件
系统配置
审计日志
驱动和内核
所有用户的信息 | **建议:** 以**管理员**身份运行以进行完整审计。 ## 脚本分析什么内容? 该脚本执行涵盖所有关键区域的 **10 个审计模块**: ### 1.系统信息 - 操作系统和版本 - 硬件 (CPU, RAM, 磁盘) - 安装日期和最后一次重启 - 时区设置 ### 2. 用户和权限 - 本地用户及其配置 - 无密码账户 (严重) - 具有管理员权限的用户 - 特权组 (RDP, Backup Operators) - 已启用但未使用的账户 ### 3. 进程和服务 - 带有数字签名的运行中进程 - 无文件路径的进程 (非常可疑) - 所有进程的命令行 - 检测编码命令 (Base64) - 自动启动的服务 - 恶意模式 (Mimikatz, Invoke-Expression 等) ### 4. 网络和连接 - 活动的 TCP/UDP 连接 - 监听端口 (攻击面) - 到可疑端口的连接 (4444, 8080 等) - 具有外部连接的系统进程 (严重) - DNS 缓存 (访问过的域名) - 网络适配器配置 ### 5. 日志和安全事件 - 登录失败的尝试 (Event ID 4625) - 被锁定的账户 (Event ID 4740) - PowerShell 事件 (ScriptBlock Logging) - PowerShell 中的编码命令 - 关键的系统应用程序事件 ### 6. 文件和持久化 - 过去 24 小时内修改的文件 - 可疑的隐藏文件 - 注册表 Run Keys 中的持久化 - 活动的计划任务 - HOSTS 文件验证 - HOSTS 中的恶意重定向 ### 7. 安全配置 - PowerShell 执行策略 - 防火墙配置文件 (启用/禁用) - 活动的防火墙规则 - Windows Defender 状态 - 防病毒签名更新 - 网络共享 - UAC (User Account Control) 配置 ### 8. LOLBAS 检测 (Living Off the Land Binaries - 被恶意使用的合法二进制文件) - certutil, regsvr32, mshta, bitsadmin 的使用 - rundll32, wmic, 带有可疑参数的 PowerShell 的使用 - 检测规避技术 ### 9. 驱动和内核模块 - 系统中安装的驱动 - 无数字签名的驱动 (可能的 rootkits) - 供应商和版本信息 ### 10. 硬件和配置 - BIOS 信息 - 物理磁盘及其健康状态 - 分区和可用空间 - 网络适配器 (硬件) - 环境变量 ## 结果结构 完成后,脚本会创建一个具有以下结构的文件夹: ``` Auditoria_fecha RESUMEN_EJECUTIVO.txt ← LEER PRIMERO AMENAZAS_DETECTADAS.json/csv/txt auditoria.log 01_Sistema/ informacion_sistema.[json|csv|txt] 02_Usuarios/ usuarios_locales.* administradores_locales.* grupo_Remote_Desktop_Users.* 03_Procesos/ procesos_activos.* procesos_sin_ruta.* ← [!] REVISAR (SOSPECHOSO) procesos_con_comandos.* servicios.* 04_Red/ conexiones_tcp.* conexiones_establecidas.* ← [!] REVISAR conexiones externas puertos_escucha.* udp_endpoints.* dns_cache.* 05_Eventos/ logins_fallidos.* ← [!] REVISAR (Ataques de fuerza bruta) cuentas_bloqueadas.* powershell_scriptblock.* eventos_aplicacion.* eventos_sistema.* 06_Archivos/ archivos_modificados_24h.* archivos_ocultos_sospechosos.* ← [!] REVISAR persistencia_run_keys.* ← [!] REVISAR (Persistencia) tareas_programadas.* archivo_hosts.* 07_Configuracion/ powershell_execution_policy.* firewall_perfiles.* firewall_reglas.* windows_defender.* recursos_compartidos.* uac_configuracion.* 08_LOLBAS/ procesos_lolbas_activos.* ← [!] REVISAR eventos_lolbas.* 09_Drivers/ drivers_instalados.* drivers_sin_firma.* ← [!] REVISAR (Posibles rootkits) 10_Hardware/ bios_info.* discos_fisicos.* volumenes.* adaptadores_red_hardware.* variables_entorno.* ``` ### 导出格式 每个模块生成 **3 个文件**,包含相同的信息但格式不同: | 格式 | 扩展名 | 推荐用途 | |---------|-----------|-----------------| | **JSON** | `.json` | 自动分析
集成 SIEM
处理脚本 | | **CSV** | `.csv` | 在 Excel 中分析
过滤和排序
执行报告 | | **TXT** | `.txt` | 人工阅读
快速检查
文档记录 | ## 结果解读 ### 严重程度级别 脚本将威胁分为 4 个级别: | 级别 | 图标 | 含义 | 需要采取的行动 | |-------|-------|-------------|------------------| | **CRITICAL** | [CRITICO] | 已确认的严重威胁 | [!] **立即调查**
可能存在活动的妥协 | | **HIGH** | [ALTO] | 高优先级威胁 | [!] **24 小时内调查**
重大风险 | | **MEDIUM** | [MEDIO] | 中等威胁 |**1 周内调查**
不安全的配置 | | **LOW** | | 低优先级威胁 | [INFO] **记录文档**
建议审查 | ### 检测到的威胁示例 #### [CRITICO] 严重 (立即行动) - **具有外部连接的系统进程** - 示例:`svchost.exe` 连接到 IP 203.0.113.42 - **行动:** 调查进程,验证是否为恶意软件 - **编码的 PowerShell 命令** - 示例:`powershell.exe -enc`
- **行动:** 解码命令,分析 payload
- [OK] **Windows Defender 已禁用**
- **行动:** 验证是否被攻击者禁用
#### [ALTO] 高 (优先)
- **到可疑端口的连接**
- 示例:连接到端口 4444 (Metasploit)
- **行动:** 识别进程,验证 C2
- **无文件路径的进程**
- 示例:在内存中但没有磁盘文件的进程
- **行动:** 可能的 process injection 或 hollow
**无密码的用户**
- **行动:** 立即设置密码
#### [MEDIO] 中
- **隐藏的可执行文件**
- **带有脚本的 Run Key**
- **无限制的网络共享**
## 对检测到的威胁的响应
### 事件响应工作流
```
1. DETECCIÓN (Script ejecutado)
↓
2. TRIAJE (Revisar RESUMEN_EJECUTIVO.txt)
↓
3. ANÁLISIS (Revisar AMENAZAS_DETECTADAS.csv)
↓
4. CONTENCIÓN (Aislar sistema si es necesario)
↓
5. ERRADICACIÓN (Eliminar amenaza)
↓
6. RECUPERACIÓN (Restaurar configuración segura)
↓
7. LECCIONES APRENDIDAS (Documentar)
```
### 针对不同威胁类型的立即行动
#### 如果检测到:“到可疑端口的连接”
```
# 1. 识别进程
Get-NetTCPConnection -RemotePort 4444
# 2. 查看进程详情
Get-Process -Id | Select-Object *
# 3. 查看命令行
(Get-WmiObject Win32_Process -Filter "ProcessId=").CommandLine
# 4. 捕获进程内存(可选,需要 Procdump)
procdump.exe -ma proceso_sospechoso.dmp
# 5. 终止进程(如果确认为恶意)
Stop-Process -Id -Force
```
#### 如果检测到:“编码的 PowerShell 命令”
```
# 解码 Base64 命令
$encodedCommand = "BASE64_STRING_AQUI"
[System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($encodedCommand))
# 分析解码后的内容
# 如果是恶意的,检查来源和传播
```
#### 如果检测到:“无文件路径的进程”
```
# 高度可疑 - 可能是 process injection
# 1. 列出没有路径的进程
Get-Process | Where-Object { $_.Path -eq $null -and $_.Name -ne "Idle" -and $_.Name -ne "System" }
# 2. 查看父进程
$proc = Get-Process -Id
$parentPID = (Get-CimInstance Win32_Process -Filter "ProcessId=$($proc.Id)").ParentProcessId
Get-Process -Id $parentPID
# 3. 捕获内存用于取证分析
# 4. 考虑隔离系统
```
## 自动化和计划
### 使用计划任务运行定期审计
```
# 创建计划任务以每周执行审计
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
-Argument "-ExecutionPolicy Bypass -File C:\Auditoria\Auditoria_Empresarial_Completa.ps1"
$trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Monday -At 2:00AM
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount -RunLevel Highest
Register-ScheduledTask -TaskName "Auditoria_Seguridad_Semanal" `
-Action $action -Trigger $trigger -Principal $principal `
-Description "Auditoría de seguridad empresarial automática"
```
### 集成 SIEM (Splunk, ELK 等)
生成的 JSON 文件可以直接发送到 SIEM:
```
# 示例:将结果发送到 Splunk
$splunkUrl = "https://splunk.empresa.com:8088/services/collector"
$splunkToken = "YOUR-HEC-TOKEN"
Get-ChildItem -Path "Auditoria_*" -Filter "*.json" -Recurse | ForEach-Object {
$jsonContent = Get-Content $_.FullName -Raw
Invoke-RestMethod -Uri $splunkUrl -Method Post `
-Headers @{"Authorization" = "Splunk $splunkToken"} `
-Body $jsonContent
}
```
## 故障排除
### 问题:“脚本未运行 - 执行策略”
**解决方案:**
```
# 临时(仅限当前会话)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
# 永久(需要管理员权限)
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned
```
### 问题:“访问安全日志被拒绝”
**解决方案:**
- 以管理员身份运行 PowerShell
- 右键点击 PowerShell → “以管理员身份运行”
### 问题:“脚本运行时间过长”
**原因:**
- 具有大量文件的系统 (修改的文件模块)
- 许多活动的网络连接
**解决方案:**
- 正常:在标准系统上需要 5-10 分钟
- 如果超过 30 分钟,请检查磁盘/CPU 使用率
### 问题:“部分模块失败”
**解决方案:**
- 检查 `auditoria.log` 文件以查看具体错误
- 验证系统要求 (PowerShell 5.1+)
- 使用管理员权限运行
## 其他资源
### 参考文档
- [MITRE ATT&CK Framework](https://attack.mitre.org/)
- [LOLBAS Project](https://lolbas-project.github.io/)
- [CIS Benchmarks](https://www.cisecurity.org/cis-benchmarks/)
- [NIST Cybersecurity Framework](https://www.nist.gov/cyberframework)
### 补充工具
- **Sysinternals Suite** (Microsoft) - Autoruns, Procmon, TCPView
- **VirusTotal** - 文件哈希验证
- **CyberChef** - 混淆命令解码
- **Splunk/ELK** - 集中式日志分析
### 联系与支持
- Email: analista@sammideblas.com
## 法律注意事项
### 授权使用
**允许:**
- 在您组织的系统上进行审计
- 在明确许可的情况下分析系统
- 授权的安全评估
**禁止:**
- 未经授权扫描系统
- 在未经同意的情况下用于第三方系统
- 未经授权访问网络
**此脚本用于合法的安全目的。滥用可能违反法律。**
## 更新日志
### 版本 2.0 (2025-11-03)
- 高级 IOCs (Indicadores de Compromiso) 检测
- 多格式导出 (JSON, CSV, TXT)
- LOLBAS (Living Off the Land) 分析
- 编码命令检测
- 带有风险级别的执行摘要
- 10 个完整的审计模块
- 可视化进度条
- 健壮的错误处理
- 带有注释的详尽文档
## MIT 许可证
此脚本为 Sammi De Blas Kalloub 所有
**自由分发**
**有疑问?** 请联系您公司的网络安全团队
## 许可证
MIT 许可证 -- 详情请参阅 [LICENSE](LICENSE)。
网络连接
可访问的文件
安全事件 (受限)
系统配置 | | **管理员** | **以上所有 +**
完整安全事件
系统配置
审计日志
驱动和内核
所有用户的信息 | **建议:** 以**管理员**身份运行以进行完整审计。 ## 脚本分析什么内容? 该脚本执行涵盖所有关键区域的 **10 个审计模块**: ### 1.系统信息 - 操作系统和版本 - 硬件 (CPU, RAM, 磁盘) - 安装日期和最后一次重启 - 时区设置 ### 2. 用户和权限 - 本地用户及其配置 - 无密码账户 (严重) - 具有管理员权限的用户 - 特权组 (RDP, Backup Operators) - 已启用但未使用的账户 ### 3. 进程和服务 - 带有数字签名的运行中进程 - 无文件路径的进程 (非常可疑) - 所有进程的命令行 - 检测编码命令 (Base64) - 自动启动的服务 - 恶意模式 (Mimikatz, Invoke-Expression 等) ### 4. 网络和连接 - 活动的 TCP/UDP 连接 - 监听端口 (攻击面) - 到可疑端口的连接 (4444, 8080 等) - 具有外部连接的系统进程 (严重) - DNS 缓存 (访问过的域名) - 网络适配器配置 ### 5. 日志和安全事件 - 登录失败的尝试 (Event ID 4625) - 被锁定的账户 (Event ID 4740) - PowerShell 事件 (ScriptBlock Logging) - PowerShell 中的编码命令 - 关键的系统应用程序事件 ### 6. 文件和持久化 - 过去 24 小时内修改的文件 - 可疑的隐藏文件 - 注册表 Run Keys 中的持久化 - 活动的计划任务 - HOSTS 文件验证 - HOSTS 中的恶意重定向 ### 7. 安全配置 - PowerShell 执行策略 - 防火墙配置文件 (启用/禁用) - 活动的防火墙规则 - Windows Defender 状态 - 防病毒签名更新 - 网络共享 - UAC (User Account Control) 配置 ### 8. LOLBAS 检测 (Living Off the Land Binaries - 被恶意使用的合法二进制文件) - certutil, regsvr32, mshta, bitsadmin 的使用 - rundll32, wmic, 带有可疑参数的 PowerShell 的使用 - 检测规避技术 ### 9. 驱动和内核模块 - 系统中安装的驱动 - 无数字签名的驱动 (可能的 rootkits) - 供应商和版本信息 ### 10. 硬件和配置 - BIOS 信息 - 物理磁盘及其健康状态 - 分区和可用空间 - 网络适配器 (硬件) - 环境变量 ## 结果结构 完成后,脚本会创建一个具有以下结构的文件夹: ``` Auditoria_fecha RESUMEN_EJECUTIVO.txt ← LEER PRIMERO AMENAZAS_DETECTADAS.json/csv/txt auditoria.log 01_Sistema/ informacion_sistema.[json|csv|txt] 02_Usuarios/ usuarios_locales.* administradores_locales.* grupo_Remote_Desktop_Users.* 03_Procesos/ procesos_activos.* procesos_sin_ruta.* ← [!] REVISAR (SOSPECHOSO) procesos_con_comandos.* servicios.* 04_Red/ conexiones_tcp.* conexiones_establecidas.* ← [!] REVISAR conexiones externas puertos_escucha.* udp_endpoints.* dns_cache.* 05_Eventos/ logins_fallidos.* ← [!] REVISAR (Ataques de fuerza bruta) cuentas_bloqueadas.* powershell_scriptblock.* eventos_aplicacion.* eventos_sistema.* 06_Archivos/ archivos_modificados_24h.* archivos_ocultos_sospechosos.* ← [!] REVISAR persistencia_run_keys.* ← [!] REVISAR (Persistencia) tareas_programadas.* archivo_hosts.* 07_Configuracion/ powershell_execution_policy.* firewall_perfiles.* firewall_reglas.* windows_defender.* recursos_compartidos.* uac_configuracion.* 08_LOLBAS/ procesos_lolbas_activos.* ← [!] REVISAR eventos_lolbas.* 09_Drivers/ drivers_instalados.* drivers_sin_firma.* ← [!] REVISAR (Posibles rootkits) 10_Hardware/ bios_info.* discos_fisicos.* volumenes.* adaptadores_red_hardware.* variables_entorno.* ``` ### 导出格式 每个模块生成 **3 个文件**,包含相同的信息但格式不同: | 格式 | 扩展名 | 推荐用途 | |---------|-----------|-----------------| | **JSON** | `.json` | 自动分析
集成 SIEM
处理脚本 | | **CSV** | `.csv` | 在 Excel 中分析
过滤和排序
执行报告 | | **TXT** | `.txt` | 人工阅读
快速检查
文档记录 | ## 结果解读 ### 严重程度级别 脚本将威胁分为 4 个级别: | 级别 | 图标 | 含义 | 需要采取的行动 | |-------|-------|-------------|------------------| | **CRITICAL** | [CRITICO] | 已确认的严重威胁 | [!] **立即调查**
可能存在活动的妥协 | | **HIGH** | [ALTO] | 高优先级威胁 | [!] **24 小时内调查**
重大风险 | | **MEDIUM** | [MEDIO] | 中等威胁 |**1 周内调查**
不安全的配置 | | **LOW** | | 低优先级威胁 | [INFO] **记录文档**
建议审查 | ### 检测到的威胁示例 #### [CRITICO] 严重 (立即行动) - **具有外部连接的系统进程** - 示例:`svchost.exe` 连接到 IP 203.0.113.42 - **行动:** 调查进程,验证是否为恶意软件 - **编码的 PowerShell 命令** - 示例:`powershell.exe -enc
标签:AI合规, AMSI绕过, Conpot, Homebrew安装, HTML报告生成, IOC检测, Libemu, Mr. Robot, OpenCanary, PDF报告生成, PowerShell脚本, TTP检测, Windows安全, Windows 调试器, 一键审计, 企业安全, 多模态安全, 威胁检测, 安全合规, 库, 应急响应, 数字取证, 数据包嗅探, 无线安全, 服务器管理, 流量嗅探, 系统信息收集, 系统运维, 网络代理, 网络安全审计, 网络资产管理, 自动化脚本, 蓝军工具