Como bom jogador de Factorio, gosto de uma boa automatização. E não sei vocês, mas meu Youtube me bombardeia de vídeos sobre N8N, apesar de nunca ter subido uma instância N8N (antes desse mês). Isso me levou a ter essa ideia de tentar automatizar meu processo de recon usando o N8N.
Por que? Bem, parece divertido, não? Além de eu poder disparar scans a partir de uma mensagem no Telegram, agendar scans periódicos e fazer um milhão de outras automatizações.
O que você vai precisar pra fazer essa receita 👨🍳:
- Uma instância de VPS;
- Coolify configurado;
- Uma APIKey da sua IA favorita;
- Um domínio apontando pro seu Coolify (lá ele).
Pra configurar o Coolify, me baseei bastante nesses 2 vídeos
Princípio de Funcionamento
Dentre os vários tipos de blocos (ou nodes) que o N8N oferece, um dos que mais me chamou atenção foi Execute Command node
. De acordo com a documentação, ele “runs shell commands on the host machine that runs n8n”. E se usássemos esse node pra executar os comandos que normalmente usamos num processo de recon? 🤔🤔🤔
Interessante que enquanto escrevia esse post, descobri que a própria documentação da N8N já apresenta o próprio conceito usado aqui, na seção “Run cURL command”. Lá, eles dizem o seguinte:
If you want to run the curl command in the Execute Command node, you will have to build a Docker image based on the existing n8n image. The default n8n Docker image uses Alpine Linux. You will have to install the curl package.
Isso é basicamente o que vamos fazer aqui. A diferença é que vamos instalar as ferramentas básica do meu processo de Recon (mais detalhes aqui) subfinder
e nuclei
Criando a aplicação
Grande parte dos tutoriais de N8N no Coolify sugerem a implementação mais fácil possível, usando o catálogo de serviços https://coolify.io/docs/services/overview. Porém, essa opção não atende o nosso caso, já que precisamos de mais flexibilidade sobre os binários instalados junto com o N8N.
Vamos usar a opção Dockerfile
O conteúdo do Dockerfile está aqui.
E as configurações do Traefik que usei (Network) estão aqui. Não esquece de atualizar a parte seudominio.com
pro seu domínio de fato.
Ficando mais ou menos assim
Depois disso, é só configurar seu DNS para apontar pro subdomínio n8n (definido no Traefik, altere a gosto) para apontar para a sua instância do Coolify e Deploy ▶️.
O build deve levar uns bons minutos (aqui levou 10 minutos), mas no final você deve ver algo como isso.
Agora, quando você acessar n8n.meusite.com
(onde meusite é o seu site 🤷♂️) você deve ver essa tela.
Persistência dos dados
No status atual, cada vez que a instância da VPS for reestartada, o N8N vai iniciar do zero. Ou seja, você vai precisar fazer o setup novamente e vai perder todos os seus workflows. Para resolver isso, você precisa configurar um “Persistent storage to preserve data between deployments”.
Basicamente, você vai fazer essa configuração, indo na aba “Persistent Storage” e redeployando ♥️.
Agora você pode configurar sua instância do N8N normalmente e criar seu primeiro workflow. +Info sobre esse processo
Primeiro Workflow: Hello World
Com tudo configurado, já podemos ir pra parte interessante.
Melhorando um pouco mais (estou usando a opção -t ssl
no nuclei pra deixar os meus testes mais rápidos aqui).
Segundo Workflow: Chatbot?
Ok. 4 simples nodes nesse workflow
- Chat Trigger
- AI Agent
- Chat Model
- Execute Command
Única configuração que foi necessária, além de conectar os nodes (e configurar a API key do OpenAI, óbvio) foi essa. Lá no Execute Command
.
// Description
Dado um dominio no formato twitter.com, executa um processo de recon padrão
// Command
subfinder -d {{ $fromAI('Dominio', ``, 'string') }} -silent | nuclei -silent -jsonl -t ssl
Com isso, temos uma primeira versão, não?
Agora você pode ver os milhares de tutoriais no Youtube sobre como configurar diferentes triggers, como Telegram e Discord. Além de instalar outras ferramentas com uma simples alteração no Dockerfile.
💡 Disclaimer da N8N: n8n recommends self-hosting for expert users. Mistakes can lead to data loss, security issues, and downtime. If you aren't experienced at managing servers, n8n recommends n8n Cloud.
Enquanto não identifiquei nenhuma falha crítica na aplicação final rodando, use por sua conta e risco 🤷♂️. Não esqueça de manter a versão do N8N e das ferramentas atualizadas. Deve ser uma boa ideia setar o 2FA do Coolify e N8N.💡 Disclaimer 2: Com certeza existem 1.000 formas melhores de alcançar o mesmo resultado final. Essa foi simplesmente a forma que usei. Sinta-se à vontade pra fazer sugestões.