
DECEIVE com Motor de Validação Integrada e Avaliativa (DECEIVE): Deixe um LLM fazer todo o trabalho difícil de honeypot!
O DECEIVE, a DECeption with Evaluative Integrated Validation Engine, é um sistema honeypot de alta interação e baixo esforço. Ao contrário da maioria dos honeypots de alta interação, o DECEIVE não fornece aos atacantes acesso a nenhum sistema real. Na verdade, a IA faz todo o trabalho de simular um sistema honeypot realista com base em um prompt de sistema configurável que descreve o tipo de sistema que você deseja simular. Ao contrário de muitos outros honeypots de alta interação, que exigem um esforço substancial para serem povoados com usuários, dados e aplicativos realistas, o backend de IA do DECEIVE fará tudo isso por você, automaticamente.
Esta versão do DECEIVE simula um servidor Linux por meio do protocolo SSH. Ela registra todas as entradas do usuário, as saídas retornadas pelo backend de LLM, bem como um resumo de cada sessão após seu término. Ela ainda informa se considera a sessão de um usuário benigna, suspeita ou claramente maliciosa.
⛔️⛔️ O DECEIVE é um projeto de prova de conceito. Não é de qualidade de produção. Experimente, aprenda com ele, mas tenha cautela ao implantá-lo em um ambiente de produção. ⛔️⛔️
O DECEIVE é desenvolvido principalmente no MacOS 15 (Sequoia), mas deve funcionar em qualquer sistema semelhante ao UNIX que possa executar Python3. Isso inclui outras versões do MacOS, Linux e até mesmo Windows (por meio do Windows Subsystem for Linux).
Você pode obter a versão mais recente usando o seguinte comando:
git clone https://github.com/splunk/DECEIVE
O restante destas instruções pressupõe que você alterou seu diretório atual para o repositório após a conclusão do clone.
O DECEIVE usa uv para gerenciamento de dependências Python e de ambiente virtual. Se você ainda não tem o uv instalado, instale-o com o instalador autônomo da Astral:
curl -LsSf https://astral.sh/uv/install.sh | sh
Em seguida, sincronize o ambiente do projeto a partir da raiz do repositório:
uv sync
Os arquivos pyproject.toml e uv.lock são a fonte de verdade para as dependências. Este projeto intencionalmente não mantém um fallback requirements.txt.
O servidor SSH requer um par de chaves TLS para comunicações seguras. A partir do diretório raiz do repositório, gere um par de chaves SSH usando o seguinte comando:
ssh-keygen -t rsa -b 4096 -f SSH/ssh_host_key
Copie o arquivo SSH/config.ini.TEMPLATE para SSH/config.ini:
Abra o arquivo SSH/config.ini e revise as configurações. Atualize os valores conforme necessário, prestando atenção especial aos valores na seção [llm], onde você configurará o backend de LLM que deseja usar, e na seção [user_accounts], onde você pode configurar os nomes de usuário e senhas que deseja que o honeypot suporte.
Edite o arquivo SSH/prompt.txt para incluir uma breve descrição do tipo de sistema que você deseja que ele finja ser. Você não precisa ser muito detalhado aqui, embora quanto mais detalhes você puder fornecer, melhor será a simulação. Você pode mantê-lo em um nível geral, como:
You are a video game developer's system. Include realistic video game source and asset files.
Se desejar, você pode adicionar quaisquer detalhes adicionais que achar úteis. Por exemplo:
You are the Internet-facing mail server for bigschool.edu, a state-sponsored university in Virginia. Valid user accounts are "a20093887", "a20093887-admin", and "mxadmin". Home directories are in "/home/$USERNAME". Everyone's default shell is /bin/zsh, except mxadmin's, which is bash. Mail spools for all campus users (be sure to include email accounts that are not valid for logon to this server) are in /var/spool/mail. Be sure to simulate some juicy emails there, but make them realistic. Some should be personal, but some should be just about the business of administering the school, dealing with students, applying for financial aid, etc. Make the spool permissions relaxed, simulating a misconfiguration that would allow anyone on the system to read the files.
Para iniciar o servidor honeypot do DECEIVE, primeiro certifique-se de ter definido todas as variáveis de ambiente exigidas pelo backend de LLM de sua escolha. Por exemplo, se você estiver usando qualquer um dos modelos da OpenAI, precisará definir a variável OPENAI_API_KEY assim:
export OPENAI_API_KEY="<your secret API key>"
Em seguida, execute o honeypot SSH a partir da raiz do repositório:
uv run python SSH/ssh_server.py
Você também pode mudar para o diretório SSH e executar:
uv run python ssh_server.py
O servidor iniciará e ficará ouvindo conexões SSH recebidas na porta configurada. Ele não produzirá nenhuma saída, mas permanecerá em execução em primeiro plano.
Assim que o servidor estiver em execução (isso pode levar alguns segundos), acesse-o na porta configurada. Se você estiver em um sistema Linux ou semelhante ao UNIX, tente o seguinte comando (substitua "localhost" e "8022" conforme apropriado para sua configuração):
ssh guest@localhost -p 8022
Após executar uv sync, execute todos os testes a partir da raiz do repositório:
uv run pytest
Para executar apenas os testes de integração SSH:
uv run pytest tests/test_ssh_integration.py
Os testes de integração iniciam o servidor SSH real em uma porta local aleatória, conectam-se com um cliente SSH e usam um backend de LLM fake e determinístico, para que as asserções não dependam da saída de um modelo em tempo real.
Os logs serão gravados no arquivo especificado na opção de configuração log_file. Caminhos relativos de log_file são resolvidos a partir do diretório que contém o arquivo de configuração carregado; portanto, o valor padrão do modelo grava em SSH/ssh_log.log.
Os logs do DECEIVE estão no formato JSON lines, com cada linha sendo um documento JSON completo.
A seguir está um exemplo completo de uma sessão SSH simples, na qual o usuário executou dois comandos simples (pwd e exit):