gaugustoo/log-analysis-security

GitHub: gaugustoo/log-analysis-security

一款基于 Python 的 SOC 日志监控工具,通过分析身份验证日志在自定义时间窗口内实时识别暴力破解攻击并推送 Telegram 告警。

Stars: 0 | Forks: 0

# 🛡️ SOC 日志监控器与 Security Parser 一个使用 **Python** 开发的专业日志分析器,专注于安全运营(SOC)。该工具通过监控和分析结构化的身份验证日志文件,实时识别、拦截并针对**暴力破解**攻击尝试发出告警。 ## 🚀 功能特性 * **动态时间分析:** 基于自定义的时间窗口识别可疑的访问行为。 * **命令行界面:** 允许直接通过终端配置尝试阈值、时间窗口和输入文件。 * **SOC 集成:** 直接向 Telegram 的事件响应频道实时触发严重告警和推送通知。 * **凭证安全:** 实施良好的 SecOps 实践,使用环境变量(`.env`)来隐藏 API 密钥和 token。 ## 🛠️ 技术与依赖库 * **Python 3.x** * **Requests**(用于与 Telegram API 通信) * **Python-Dotenv**(安全管理环境变量) * **Argparse**(使用原生 CLI 构建命令行界面) ## 🔧 配置与安装 1. **克隆仓库:** git clone [https://github.com/gaugustoo/log-analysis-security.git](https://github.com/gaugustoo/log-analysis-security.git) cd log-analysis-security ======= from collections import defaultdict from datetime import datetime, timedelta # 设置 LIMITE_TENTATIVAS = 3 JANELA_TEMPO_MINUTOS = 2 def carregar_logs(arquivo): logs = [] try: with open(arquivo, "r", encoding="utf-8") as f: for linha in f: logs.append(linha.strip()) except FileNotFoundError: print("Arquivo de log não encontrado!") return logs def analisar_logs(logs): tentativas = defaultdict(list) ``` print("\nIniciando analise profissional de logs...\n") for log in logs: try: # Formato esperado: # 2026-04-01 10:01:00 - Erro de login - user2 - 192.168.1.10 partes = log.split(" - ") data_str = partes[0] evento = partes[1] usuario = partes[2] ip = partes[3] data = datetime.strptime(data_str, "%Y-%m-%d %H:%M:%S") if "Erro de login" in evento: chave = f"{usuario} | {ip}" tentativas[chave].append(data) except Exception as e: print(f"Erro ao processar log: {log}") gerar_alertas(tentativas) ``` def gerar_alertas(tentativas): print("\nRELATORIO DE SEGURANCA:\n") ``` for chave, datas in tentativas.items(): datas.sort() for i in range(len(datas)): contador = 1 for j in range(i + 1, len(datas)): diferenca = datas[j] - datas[i] if diferenca <= timedelta(minutes=JANELA_TEMPO_MINUTOS): contador += 1 else: break if contador >= LIMITE_TENTATIVAS: print(f"ALERTA: Possivel ataque detectado!") print(f"Alvo: {chave}") print(f"Tentativas: {contador}") print(f"Periodo: {datas[i]} ate {datas[j-1]}") print("-" * 50) break ``` if __name__ == "__main__": arquivo = "logs.txt" logs = carregar_logs(arquivo) analisar_logs(logs)
标签:Python, 免杀技术, 字符串匹配, 安全运营, 扫描框架, 无后门, 暴力破解检测, 红队行动, 自动化告警