Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
bbs — bbs é um roteador para proxies SOCKS e HTTP. Ele expõe um serviço SOCKS5 (ou HTTP CONNECT) e encaminha as solicitações recebidas para proxies ou cadeias de proxies com base no destino da solicitação. O roteamento pode ser configurado com um script PAC (se compilado com suporte a PAC) ou por meio de um arquivo JSON. | Kitploit
Ferramentas/GitHubGitHub/synacktiv/bbs
Proxies Web e InterceptaçãoSegurança de RedeTestes de PenetraçãoUtilitários e FrameworksRed Teaming
GitHubsynacktiv/bbs

bbs

Ver Repositório
97410há 2 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →

Sobre

bbs é um roteador para proxies SOCKS e HTTP. Ele expõe um serviço SOCKS5 (ou HTTP CONNECT) e encaminha as solicitações recebidas para proxies ou cadeias de proxies com base no destino da solicitação. O roteamento pode ser configurado com um script PAC (se compilado com suporte a PAC) ou por meio de um arquivo JSON.

Compartilhar

BBS

O antigo bbs pode ser encontrado aqui

Descrição

bbs é um roteador para proxies SOCKS e HTTP. Ele expõe serviços SOCKS5, HTTP CONNECT ou encaminhamento de portas e encaminha as requisições recebidas para proxies ou cadeias de proxies com base no destino da requisição. O roteamento pode ser configurado com um script PAC (se compilado com suporte a PAC), ou por meio de um arquivo JSON.

Instalação

go install github.com/synacktiv/bbs@master

Para instalar o bbs com suporte a script PAC:

go install -tags pac github.com/synacktiv/bbs@master

Nota: o PAC depende de bibliotecas de terceiros não auditadas.

CLI do bbs

A CLI Python bbscli.py é fornecida para facilitar a configuração do bbs e evitar escrever arquivos JSON manualmente. Ela requer a biblioteca pyparsing, que é empacotada pelo Debian:

apt install python3-pyparsing

Se a biblioteca não for empacotada pela sua distribuição, ela pode ser instalada usando pip:

pip install pyparsing

Configuração

A configuração é realizada em um arquivo JSON composto por várias seções:

  • Proxies: define todos os proxies upstream usados pelo bbs
  • Cadeias: define as diferentes cadeias de proxies previamente definidos e suas configurações
  • Rotas: define as diferentes tabelas de roteamento
  • Servidores: define os listeners (SOCKS5, HTTP ou encaminhamento de portas) abertos pelo bbs
  • Hosts: define a resolução de hosts personalizada (no estilo /etc/hosts)

O caminho do arquivo de configuração é informado pelo argumento -c <path> (padrão ./bbs.json). O bbs recarrega os arquivos de configuração ao receber SIGHUP; use kill -HUP <pid> para recarregar.

Aqui está um exemplo dessa configuração:

{
  "proxies": {
    "proxy1": {
      "connstring": "socks5://127.0.0.1:1337",
      "user": "user",
      "pass": "s3cr3t"
    },
    "proxy2": {
      "connstring": "http://127.0.0.1:1338"
    }
  },
  "chains": {
    "chain1": {
      "proxyDns": true,
      "tcpConnectTimeout": 1000,
      "tcpReadTimeout": 2000,
      "proxies": [
        "proxy1",
        "proxy2"
      ]
    },
    "direct": {
      "proxies": []
    }
  },
  "routes": {
    "table1": {
      "default": "direct",
      "blocks": [
        {
          "comment": "Block1 comment",
          "rules": {
            "rule": "regexp",
            "variable": "host",
            "content": "me\\.gandi\\.net"
          },
          "route": "chain1"
        },
        {
          "comment": "Route non web traffic towards 10.35.0.0/16 through proxy2",
          "rules": {
            "rule1": {
              "rule": "subnet",
              "content": "10.35.0.0/16"
            },
            "op": "AND",
            "rule2": {
              "rule": "regexp",
              "variable": "port",
              "content": "^(80|443)$",
              "negate": true
            }
          },
          "route": "proxy2"
        },
        {
          "comment": "Drop traffic to 445",
          "rules": {
            "rule": "regexp",
            "variable": "port",
            "content": "^445$"
          },
          "route": "drop"
        },
        {
          "comment": "Route *.corp.local through chain1",
          "rules": {
            "rule": "regexp",
            "variable": "host",
            "content": "(?i)^(.*\\.)?corp\\.local$"
          },
          "route": "chain1",
          "disable": true
        }
      ]
    },
    "table2": {
      "default": "drop",
      "blocks": [
        {
          "comment": "Route *.corp.local through chain2",
          "rules": {
            "rule": "regexp",
            "variable": "host",
            "content": "(?i)^(.*\\.)?corp\\.local$"
          },
          "route": "chain2"
        }     
      ]
    }
  },
  "servers": [
    "socks5://127.0.0.1:1081:table1",
    "http://127.0.0.1:1080:table2",
    "fwd://127.0.0.1:4445:chain1:10.0.0.1:445"
  ],
  "hosts": {
    "host1": "1.1.1.1",
    "host2": "10.0.0.1",
    "host3": "modified.host3",
    "10.1.1.4": "10.1.1.5"
  }
}

Proxies

Os proxies upstream devem ser declarados na seção proxies como um mapa de estruturas de proxy. As chaves do mapa são escolhidas livremente, mas devem corresponder às usadas na definição das cadeias. As estruturas de proxy são assim:

  • connstring é obrigatória com o formato protocol://host:port (protocol pode ser socks5 ou httpconnect/http)
  • user e pass são opcionais

Para cada proxy declarado, uma cadeia implícita (veja o próximo parágrafo) é criada com o mesmo nome. Ela tem parâmetros padrão e é composta pelo único proxy associado. Se você quiser usar parâmetros não padrão, deve criar explicitamente uma cadeia.

Cadeias

As cadeias devem ser declaradas na seção chains como um mapa de estruturas de cadeia. As chaves do mapa são escolhidas livremente, mas devem corresponder às usadas na definição das rotas, e devem ser diferentes das chaves do mapa da seção proxies. As estruturas de cadeia têm parâmetros semelhantes aos do proxychains (cf. https://github.com/rofl0r/proxychains-ng):

  • proxyDns: booleano, opcional, padrão true
  • tcpConnectTimeout: inteiro, opcional, padrão 1000 (usado ao conectar soquetes, seja ao primeiro proxy da cadeia ou diretamente ao destino)
  • tcpReadTimeout: inteiro, opcional, padrão 2000 (usado ao ler as respostas de handshake do proxy em soquetes conectados)
  • proxies: lista de strings, opcional, padrão lista vazia

A chave proxies de uma chain deve conter um array de nomes de proxies declarados como chaves na seção proxies. Como mencionado no parágrafo anterior, para cada proxy declarado na seção proxies, uma cadeia implícita (veja o próximo parágrafo) é criada com o mesmo nome. Ela tem parâmetros padrão e é composta pelo único proxy associado.

Rotas

O modo de configuração embutido para roteamento é por meio do arquivo de configuração. Ele associa endereços a nomes de cadeias. O arquivo deve conter um mapa de tabelas de roteamento. As chaves do mapa são escolhidas livremente, mas devem corresponder às usadas na seção servers. Cada tabela de roteamento contém uma chave default representando a rota padrão e uma chave blocks que é um array de blocos de regras. Cada bloco de regras contém um comment, um conjunto de rules e um nome de cadeia associado. As regras são avaliadas: dado um endereço no formato host:port, elas podem ser true ou false. Para um determinado endereço, os blocos são avaliados na sua ordem de declaração. Os blocos podem ser desabilitados definindo o campo disable como true. Isso permite uma forma de "comentário", o que não é possível em JSON. A avaliação para no primeiro bloco que for true e o nome da cadeia associado é retornado. Cada servidor aberto (da seção servers) é associado a uma tabela de roteamento da configuração. As requisições recebidas em cada servidor são roteadas de acordo com a tabela de roteamento correspondente. Se todos os blocos forem avaliados como false, a rota padrão é usada. Se default não estiver definido, as conexões são descartadas por padrão.

Campos do bloco:

  • comment (string)
  • rules (Rule ou RuleCombo)
  • route (string)
  • disable (bool)

Campos da regra:

  • rule (string): tipo de regra, regexp, subnet.
  • variable (string): variável para avaliação de regexp, host, port ou addr (host:port).
  • content (string): conteúdo da regra, depende do tipo de regra (veja abaixo).
  • negate (bool) [opcional]: se deve negar a regra.

Campos do RuleCombo:

  • rule1 (Rule ou RuleCombo): operando esquerdo.
  • op (string): operador, AND, And, and, &, &&, OR, Or, or, |, ||.
  • rule2 (Rule ou RuleCombo): operando direito.
Baixar ferramenta