Estações
Hostname, IP, MAC, usuário e versão identificam os computadores gerenciados.
DADOS / REDE / CÓDIGO EXPLICADO
Veja exatamente o que o ProxyEdu acessa, armazena e comunica.
VISÃO GERAL
O ProxyEdu opera na infraestrutura administrada pela escola. Somente licenciamento, atualizações e a navegação solicitada usam serviços externos.
Hostname, IP, MAC, usuário e versão identificam os computadores gerenciados.
Domínios podem ser registrados conforme a política definida pela instituição.
Não são armazenados no histórico de navegação.
Não são coletados pela implementação analisada.
Licenciamento e atualizações usam conexões HTTPS próprias.
Permanece no Server da instituição por padrão.
Comportamento sustentado por código ou configuração do build indicado; isso não significa que já esteja na release pública.
Depende de uma opção da instituição; o padrão é informado quando confirmado.
Resultado obtido ao inspecionar arquivos locais da release, como hash e assinatura.
Medida de implantação ou segurança; não é uma garantia automática do produto.
O ProxyEdu é instalado em computadores Windows administrados pela instituição. O Client roda nas estações; o Server mantém o proxy, o painel e o banco local; o Updater executa atualizações autorizadas. Regras, estações, auditoria e histórico configurado ficam, por padrão, no Server da instituição.
Serviços locais de Client e Server.
C:\ProgramData\ProxyEduBanco, certificados, logs, backups e atualizações.
HTTPS para licenciamento e releases; navegação segue aos sites solicitados.
A CA local e o proxy HTTPS colocam o Server no caminho do tráfego TLS.
O produto aplica políticas de acesso e registra atividade conforme configuração. Ele não é antivírus, EDR, DLP, proteção de endpoint, cofre de credenciais nem garantia de conformidade. Também não protege uma instalação cujo Server, Windows ou administrador autorizado esteja comprometido.
Escopo: esta documentação descreve o comportamento da versão analisada. Ela não constitui certificação de segurança, auditoria independente nem garantia de ausência de vulnerabilidades.
Atualização de hardening: o build candidato adiciona propriedade verificável de certificados, snapshot protegido e restauração do WinINet, preservação do WinHTTP e validação criptográfica do pacote do Server. O código passou por 474 testes automatizados e build Release. A validação de instalação, upgrade e desinstalação em VM ainda está pendente; esses controles não devem ser presumidos na versão pública 2026.2.5.3.
| Porta padrão | Protocolo | Direção | Escopo | Finalidade | Configurável |
|---|---|---|---|---|---|
50505/UDP | Broadcast | Client ⇄ Server | Rede local | Descoberta v2 assinada ou v1 legado. | Sim |
5000/TCP | HTTP, HTTP/2 e WebSocket/SignalR | Client ⇄ Server | Rede local | Registro, heartbeat, saúde, certificado, controle e atualização. | Porta no modelo de settings; listener atual fixado em 5000. |
5443/TCP | HTTPS | Administrador → Server | Somente localhost | Painel administrativo com certificado local. | Sim; pode ser desativado. |
8888/TCP | Proxy HTTP/HTTPS | Aplicativos → Server → site | Local e externo | Encaminhar tráfego e aplicar políticas. | Sim |
CONFIRMADO O Server escuta HTTP em todas as interfaces na porta 5000. O painel HTTPS escuta somente em loopback. Login administrativo remoto por HTTP é recusado, mas arquivos estáticos e rotas anônimas específicas continuam acessíveis conforme os controles de cada rota.
“Client → Server” abaixo inclui o serviço Client e, quando indicado, o tráfego dos aplicativos que usam o proxy. “Não localizado” significa que a análise estática não encontrou rotina correspondente; não é prova matemática de ausência em qualquer dependência ou versão futura.
| Dado | Client/estação → Server | Server → serviço externo | Armazenado | Finalidade | Retenção |
|---|---|---|---|---|---|
| Hostname | Sim: registro e heartbeat | Não localizado | Sim, banco local | Identificar a estação | Sem prazo automático localizado; até gestão administrativa/banco |
| IP local | Sim: corpo e conexão | Não como campo da API de licença; IP público é metadado normal da conexão | Sim, estação e logs associados | Presença, associação e rede | Sem prazo geral; logs seguem retenção própria |
| MAC | Sim: registro e heartbeat | Não localizado | Sim, banco local | Compatibilidade e reconciliação de identidade | Sem prazo automático localizado |
| Usuário Windows | Sim, no registro como name | Não localizado | Sim, registro da estação | Nome visível da estação no painel | Sem prazo automático localizado |
| Identidade da instalação | Sim: header assinado e operações de atualização | A identidade do Server, não a do Client, vai ao licenciamento | Sim | Autenticação, continuidade e seats | Sem prazo automático localizado |
| Versão e sistema | Client: versão; registro: versão do Windows | Versão do Server na ativação; consultas ao GitHub carregam User-Agent | Sim, versão do Client e sistema da estação | Compatibilidade e atualização | Sem prazo automático localizado |
| Grupo | Sim, registro inicial default | Não localizado | Sim | Aplicar políticas por turma/grupo | Até alteração ou remoção administrativa |
| Domínio | Derivado do tráfego que passa pelo proxy | Sim, para o próprio site solicitado como parte da navegação | Configurável: desativado, bloqueados ou todos | Filtragem, atividade e histórico | 30 dias por padrão; 1–3650 dias configuráveis |
| URL completa | Processada em memória pelo proxy quando disponível | Encaminhada ao site solicitado conforme o protocolo | Não no histórico: reduzida a domínio | Encaminhamento e avaliação de regra | Não aplicável à persistência de navegação |
| Método HTTP | Observado pelo proxy | Encaminhado ao site solicitado | Sim, quando o evento de navegação é persistido | Operação e auditoria de acesso | Mesma retenção do histórico |
| Status e tamanho da resposta | Observados no retorno | Originados pelo site solicitado | Sim, status; tamanho quando informado | Resultado e métricas locais | Mesma retenção do histórico |
| Cookies, senhas e corpos | Podem atravessar o processo durante a intermediação TLS | Encaminhados ao site escolhido pelo usuário | Nenhuma rotina de persistência foi localizada | Somente trânsito necessário à navegação | Não aplicável à persistência localizada |
| Screenshot, teclado, webcam, áudio | Nenhuma rotina localizada | Nenhuma rotina localizada | Nenhuma rotina localizada | Não faz parte da implementação analisada | Não aplicável |
| Arquivos pessoais | Nenhuma enumeração/coleta localizada; o Client lê apenas seus arquivos operacionais e de atualização | Nenhuma rotina localizada | Nenhuma coleta localizada | Não faz parte da implementação analisada | Não aplicável |
| Chave/ID da licença | Inserida pelo administrador no Server | Sim, API de licenciamento HTTPS | Documento e estado de licença em cache local | Ativação e validação comercial | Sem prazo automático localizado |
Acesso aos dados: o histórico de navegação é restrito ao perfil Administrador. Dados de estações podem ser vistos por Administrador e Professor; outras áreas usam perfis Administrador, Professor, Auditor ou Somente leitura conforme a rota. Ações sensíveis selecionadas geram auditoria local.
É distribuído para Windows 64-bit e instalado como serviço automático. A instalação exige privilégios administrativos.
Cria chave ECDSA P-256 de máquina, não exportável, no provedor CNG do Windows; o ID é SHA-256 da chave pública.
Usa endereço configurado ou descoberta na rede local, com suporte a resposta assinada e opções de compatibilidade para instalações existentes.
Antes da primeira alteração, captura por SID o proxy manual, PAC e autodetecção dos perfis carregados. O snapshot é versionado, protegido por ACL administrativa e DPAPI de máquina; se a proteção ou a persistência falhar, o Client recusa a alteração. Durante a operação, aplica e reconcilia o endpoint ProxyEdu.
Baixa a CA do Server, valida período e finalidade de CA e instala em LocalMachine ou CurrentUser. O thumbprint pode ser fixado, mas vem vazio por padrão. Instalações feitas pela revisão candidata gravam marcador de propriedade protegido, com thumbprint, data e versão, sem chave privada.
Informa periodicamente o estado da estação e mantém um canal autenticado para comandos administrativos autorizados.
O padrão é fail-open: após falhas de readiness, procura desabilitar o proxy. O fail-closed existe como configuração, mas não é o padrão.
Monitora a parada do serviço e tenta reiniciá-lo; registra eventos em C:\ProgramData\ProxyEdu\security.log.
Os pacotes versionados exigem SHA-256, assinatura RSA-PSS do pacote e dos manifestos, produto e versão esperados, hashes internos e bloqueio de downgrade. O motor transacional usa journal e rollback. A atualização automática do Server permanece desativada até a primeira release de migração ser validada em instalação real.
ESCOPO O ProxyEdu gerencia somente WinINet. A revisão candidata removeu do instalador e do desinstalador o reset cego de WinHTTP; uma configuração WinHTTP preexistente deve permanecer intacta. A confirmação desse comportamento em Windows real ainda faz parte do gate de VM.
| Operação | Campos principais | Frequência | Transporte | Proteção |
|---|---|---|---|---|
| Descoberta | Identificação do protocolo; a resposta informa o Server e os parâmetros necessários à conexão | Quando necessário | Rede local | Suporta resposta assinada e modo de compatibilidade |
| Registro | IP, hostname, usuário Windows, sistema, MAC, grupo e versão | Na conexão ou reconexão | Canal local Client–Server | Chamadas modernas usam identidade criptográfica da instalação |
| Presença | IP, horário, ID de instalação, versão, hostname e MAC | Periodicamente | Canal local Client–Server | Assinado nos Clients modernos |
| Saúde | Consulta sem corpo de dados pessoais | Periodicamente | Canal local Client–Server | Resposta operacional do serviço |
| Controle | Token temporário e metadados da conexão | Durante a operação | Canal local persistente | Token emitido após autenticação do Client |
| Atualização | ID, versões, máquina, atualização, etapa, percentual, erro e rollback | Periodicamente e durante atualizações | Canal local Client–Server | Requisição autenticada; pacote validado criptograficamente |
new {
ip = GetLocalIp(),
timestamp = DateTime.UtcNow,
installationId = InstallationIdentity.Value,
clientVersion = InstallationIdentity.Version,
hostname = Environment.MachineName,
macAddress = ClientNetworkIdentity.GetMacAddress()
}
X-ProxyEdu-InstallationId: <SHA-256 da chave pública>
X-ProxyEdu-Timestamp: <Unix time>
X-ProxyEdu-Nonce: <aleatório de 16 bytes>
X-ProxyEdu-Signature: <assinatura ECDSA do método, rota, tempo, nonce e corpo>
Esses headers autenticam integridade e origem da requisição quando a identidade assinada é exigida. Eles não cifram hostname, usuário, IP, MAC ou os demais campos enviados por HTTP.
Para aplicar políticas a HTTPS, o ProxyEdu usa uma autoridade certificadora local. O Server mantém a chave da CA e pode gerar certificados de sessão para os destinos acessados. O certificado raiz é confiado apenas nos equipamentos onde a instituição instala o Client.
Quando a inspeção HTTPS está habilitada, o Server ocupa uma posição de alta confiança na comunicação TLS. A ausência de armazenamento de determinado dado não significa que o Server seja tecnicamente incapaz de processá-lo durante o encaminhamento.
CONFIRMADO O código do proxy consulta a URL, o método, o status e o tamanho da resposta. Ele usa a URL para avaliar regras e atualiza a atividade com o domínio.
ANÁLISE ESTÁTICA Não foram localizadas chamadas que leiam e persistam corpos de requisição/resposta, cookies, senhas ou formulários. Esses dados ainda podem atravessar memória, buffers e conexões do processo durante o encaminhamento.
RECOMENDAÇÃO Restrinja acesso físico e administrativo ao Server, use criptografia de disco, proteja backups e a pasta de certificados e instale a CA somente em endpoints autorizados.
A função NavigationPrivacy.ToDomain remove o prefixo CONNECT:, interpreta a URL, extrai o hostname IDN, converte para minúsculas, remove o prefixo www., rejeita host vazio ou acima de 253 caracteres e descarta caminho, query e fragmento.
https://www.exemplo.com/pasta/login?token=valor#secao→exemplo.comvar domain = ToDomain(string.IsNullOrWhiteSpace(log.Domain)
? log.Url
: log.Domain);
log.Domain = domain;
log.Url = domain;
A retenção padrão é 30 dias e aceita valores de 1 a 3650 dias. A limpeza ocorre ao iniciar o Server e depois a cada hora; remove tanto registros persistidos quanto itens pendentes na fila. O relatório da limpeza é mantido no banco.
Backups: a retenção do banco ativo não apaga cópias já existentes. Backups podem preservar estações, histórico, auditoria, configurações e material operacional além do prazo do banco original, conforme a política da instituição.
A busca no código não localizou SDK ou endpoint de analytics, publicidade, crash reporting ou telemetria externa. RuntimeDiagnostics mantém métricas agregadas locais e declara não incluir URLs, headers ou corpos.
| Destino confirmado | Protocolo | Dados enviados | Finalidade | Frequência | Pode ser desativado? |
|---|---|---|---|---|---|
pxeapi.bravintech.com | HTTPS | Request ID; chave ou ID da licença; ID, chave pública e prova do Server conforme operação; produto, versão e horário quando aplicável | Ativar, validar, obter Trial aprovado ou liberar ativação | Na ativação e em validações periódicas, com espera progressiva após falhas | Remover ou invalidar a URL impede a chamada, mas desabilita funções comerciais online |
api.github.com | HTTPS | Owner/repositório na URL, User-Agent e metadados normais da conexão; token apenas se configurado no cache de Client | Consultar releases do Server e sincronizar pacote de Client | Na inicialização quando habilitado e em sincronizações periódicas autorizadas | Verificação no startup e integração com GitHub são configuráveis separadamente |
| URLs de assets retornadas pelo GitHub | HTTPS | Requisição de download e metadados normais da conexão | Baixar instalador/pacotes oficiais | Sob demanda ou durante sincronização autorizada | Sim, desabilitando atualização/sincronização |
| Sites solicitados pelos usuários | HTTP/HTTPS | Tráfego necessário à navegação, conforme aplicação e site | Entregar o acesso liberado | Durante a navegação | Depende da política e do uso; não é telemetria do produto |
DNS: o código usa a resolução normal do sistema operacional para hostnames e serviços HTTPS. Não foi localizado resolvedor DNS próprio nem domínio fixo de telemetria. Consultas DNS efetivas devem ser confirmadas em execução, pois dependem do Windows, rede e destinos acessados.
| Controle | O que protege | O que não protege |
|---|---|---|
| ECDSA P-256 do Client | Autenticidade e integridade das chamadas modernas | Confidencialidade; Clients legados no modo Compatibility |
| Timestamp e nonce persistido | Repetição de uma requisição assinada capturada | Leitura do tráfego ou comprometimento da chave local |
| HTTPS do painel em localhost | Credenciais e sessão administrativas no computador Server | Canal Client–Server da porta 5000 |
| Cookie HttpOnly, Secure, SameSite Strict; CSRF | Roubo via script comum e requisições forjadas | Malware local, administrador comprometido ou falha XSS inédita |
| Expiração de sessão e inatividade | Limita a duração da sessão; reinício do Server elimina sessões em memória | Uso dentro da janela por quem possui a sessão |
| Perfis e auditoria | Separa Administrador, Professor, Auditor e Somente leitura; registra ações selecionadas | Não registra toda ação possível nem impede abuso de um administrador |
| Limitação de tentativas de login | Reduz tentativas repetidas de autenticação | Ataques distribuídos, credencial já roubada ou acesso local privilegiado |
| Senhas protegidas com derivação criptográfica e salt | Senhas armazenadas não ficam em texto claro | Senha fraca ou banco + ataque offline prolongado |
| Distribuição da CA restrita à rede local | Reduz download externo e abuso da rota | Não substitui provisionamento e validação administrados |
| Assinatura RSA-PSS dos pacotes Client e Server | Integridade, procedência, produto, versão, manifestos e conteúdo interno; rejeita downgrade | Não substitui Authenticode do instalador nem protege uma chave privada de release comprometida |
| Gate Authenticode da release | O fluxo recusa assinatura ausente, inválida, autoassinada, sem timestamp ou com thumbprint inesperado; o hash é calculado depois da assinatura | A produção ainda depende da aquisição de certificado público e validação em VM limpa |
| Marcador de propriedade da CA e do HTTPS local | Permite remover somente certificado compatível com o thumbprint exato registrado; certificados de mesmo nome sem marcador são preservados | Instalações antigas sem marcador são preservadas e exigem decisão administrativa |
| Snapshot WinINet com ACL + DPAPI LocalMachine | Preserva valores e tipos originais por SID e condiciona a restauração ao estado ainda pertencer ao ProxyEdu | Perfil descarregado não é carregado à força; permanece pendente e interrompe a desinstalação |
| DPAPI de máquina para senha da CA | Evita senha do PFX em texto claro quando não configurada externamente | Administrador ou máquina Windows comprometida |
Nota técnica: a derivação de senhas usa PBKDF2-SHA256 com salt individual e 100 mil iterações na versão analisada.
BUILD CANDIDATO O comportamento abaixo descreve o build de hardening analisado em 27/08/2026. A versão pública anterior não deve ser presumida equivalente.
| Item | Preservar dados (padrão) | Remoção completa (opt-in) | Observação |
|---|---|---|---|
| Serviços e processos | Remove Client e Server | Remove Client e Server | A restauração do WinINet ocorre antes da remoção do helper |
| Proxy WinINet | Restaura o snapshot dos SIDs conhecidos e acessíveis | Mesmo comportamento | Perfil pendente ou snapshot inválido cancela a desinstalação para manter caminho de recuperação |
| WinHTTP | Preserva | Preserva | Não faz parte do escopo gerenciado pelo ProxyEdu |
| Firewall | Remove regras nomeadas do ProxyEdu | Remove regras nomeadas do ProxyEdu | Não representa auditoria de regras renomeadas/manuais |
| Binários | Remove diretórios instalados | Remove diretórios instalados | Arquivo em uso pode exigir nova tentativa |
| CA confiada | Remove somente CA vinculada ao marcador e thumbprint exato | Mesmo comportamento | Sem marcador, marcador inválido ou certificado incompatível: preserva e registra |
| Certificado HTTPS local do painel | Preserva | Remove somente dos stores My e TrustedPeople pelo marcador e thumbprint exato | Falha cancela a exclusão dos dados para preservar a evidência de propriedade |
| Banco, logs, backups e material criptográfico local | Preserva C:\ProgramData\ProxyEdu | Remove após confirmação explícita e verificações de certificado | Upgrade, reparo e desinstalação comum nunca apagam a pasta por padrão |
| Chaves CNG de identidade | Remoção não confirmada | Remoção não confirmada | Verificar por procedimento administrativo específico |
| Reinicialização | Não é exigida explicitamente | Não é exigida explicitamente | Pode ser necessária se arquivos ou serviços permanecerem em uso; confirmar em teste |
RECOMENDAÇÃO Antes de remover, faça inventário e backup aprovado. Depois, confirme serviços, WinINet, WinHTTP, CA, certificado HTTPS, diretórios, firewall e chaves. Use remoção completa somente quando a exclusão permanente de banco, backups e material criptográfico for realmente desejada.
Execute primeiro em VM ou VLAN de laboratório, com dados fictícios e snapshot recuperável. Os comandos abaixo são de leitura, exceto onde indicado explicitamente.
Get-FileHash .\ProxyEdu-Setup-v2026.2.5.3.exe -Algorithm SHA256
Get-AuthenticodeSignature .\ProxyEdu-Setup-v2026.2.5.3.exe |
Select-Object Status, StatusMessage, SignerCertificate
Get-Service ProxyEduClient, ProxyEduServer -ErrorAction SilentlyContinue
Get-NetTCPConnection -State Listen |
Where-Object LocalPort -in 5000,5443,8888
Get-NetUDPEndpoint |
Where-Object LocalPort -eq 50505
Get-ItemProperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings' |
Select-Object ProxyEnable, ProxyServer, ProxyOverride, AutoConfigURL
netsh winhttp show proxy
Get-ChildItem Cert:\LocalMachine\Root,Cert:\CurrentUser\Root |
Where-Object Subject -Like '*ProxyEdu*' |
Select-Object Subject, Issuer, Thumbprint, NotAfter
Get-Content 'C:\ProgramData\ProxyEdu\state\owned-root-ca.json' -ErrorAction SilentlyContinue
Get-Content 'C:\ProgramData\ProxyEdu\state\owned-dashboard-https.json' -ErrorAction SilentlyContinue
Get-ChildItem 'C:\ProgramData\ProxyEdu' -Force -Recurse |
Select-Object FullName, Length, LastWriteTime
Esse diretório pode conter dados pessoais, banco, backups e material criptográfico. Não publique a saída completa.
tcp.port == 5000 || tcp.port == 8888 || udp.port == 50505.Directory.Build.propsa806d70328e76aa5bc787e78bb419ae1c9e9bb73b00b0f11146c750e4bbcfaadc79b47d12d08900de08b2e7622becb2f7c18f121282a5cf85d7813d0f1d78a8385a61e9906c91a6917fe99c5abad177eb4536252f2521033789c45054e4ab711Validação candidata: os pacotes Client e Server foram verificados por assinatura RSA-PSS e manifesto; o pacote do Server contém o Updater. O instalador compilou, a auditoria de dependências não encontrou vulnerabilidades conhecidas e os testes automatizados cobriram adulteração de pacotes, propriedade de certificados, snapshot/restauração WinINet e rollback. Isso não substitui instalação, upgrade, desinstalação e atualização entre versões em VM.
Componentes inspecionados: Client, Server, Shared, Updater, instalador NSIS, scripts de instalação/desinstalação, configurações e artefatos locais da release.
Limites da evidência: a análise do build candidato foi conduzida em ambiente interno e não é reproduzível apenas com o repositório público. Os hashes da release pública comprovam identidade dos arquivos analisados, não autoria ou segurança. Não houve pentest, auditoria externa, análise dinâmica completa nem comparação reprodutível entre fonte e binário.
O ProxyEdu é software proprietário. Os exemplos publicados são representativos e reduzidos para demonstrar estruturas de dados e controles, sem divulgar código completo, credenciais, chaves privadas, tokens, detalhes de infraestrutura ou propriedade intelectual desnecessária à avaliação.
Se o comportamento observado divergir desta documentação, registre versão, horário, destino e evidência sem dados reais de alunos. Vulnerabilidades devem ser enviadas de forma privada pelo GitHub Security Advisories, não por issue pública.