Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
bbs — bbs è un router per proxy SOCKS e HTTP. Espone un servizio SOCKS5 (o HTTP CONNECT) e inoltra le richieste in arrivo a proxy o catene di proxy in base alla destinazione della richiesta. Il routing può essere configurato con uno script PAC (se compilato con supporto PAC) o tramite un file JSON. | Kitploit
Strumenti/GitHubGitHub/synacktiv/bbs
Proxy Web e IntercettazioneSicurezza di RetePenetration TestingUtilità e FrameworkRed Teaming
GitHubsynacktiv/bbs

bbs

Vedi Repository
974242 mesi faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →

Informazioni

bbs è un router per proxy SOCKS e HTTP. Espone un servizio SOCKS5 (o HTTP CONNECT) e inoltra le richieste in arrivo a proxy o catene di proxy in base alla destinazione della richiesta. Il routing può essere configurato con uno script PAC (se compilato con supporto PAC) o tramite un file JSON.

Condividi

BBS

Il vecchio bbs può essere trovato qui

Descrizione

bbs è un router per proxy SOCKS e HTTP. Espone servizi SOCKS5, HTTP CONNECT o port forwarding e inoltra le richieste in arrivo a proxy o catene di proxy in base alla destinazione della richiesta. Il routing può essere configurato con uno script PAC (se compilato con il supporto PAC) oppure tramite un file JSON.

Installazione

go install github.com/synacktiv/bbs@master

Per installare bbs con il supporto degli script PAC:

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

Nota: PAC si basa su librerie di terze parti non sottoposte a revisione.

CLI di bbs

La CLI Python bbscli.py è fornita per facilitare la configurazione di bbs ed evitare di scrivere manualmente i file JSON. Richiede la libreria pyparsing, inclusa nei pacchetti di Debian:

apt install python3-pyparsing

Se la libreria non è inclusa nei pacchetti della tua distribuzione, può essere installata usando pip:

pip install pyparsing

Configurazione

La configurazione viene effettuata in un unico file JSON composto da più sezioni:

  • Proxies: definisce tutti i proxy a monte utilizzati da bbs
  • Chains: definisce le diverse catene dei proxy precedentemente definiti e le loro impostazioni
  • Routes: definisce le diverse tabelle di routing
  • Servers: definisce i listener (SOCKS5, HTTP o port forwarding) aperti da bbs
  • Hosts: definisce la risoluzione personalizzata degli host (in stile /etc/hosts)

Il percorso del file di configurazione viene fornito tramite l'argomento -c <path> (predefinito: ./bbs.json). bbs ricarica i file di configurazione al ricevimento di SIGHUP; usa kill -HUP <pid> per ricaricare.

Ecco un esempio di tale configurazione:

{
  "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"
  }
}

Proxy

I proxy a monte devono essere dichiarati nella sezione proxies come una mappa di strutture proxy. Le chiavi della mappa sono scelte liberamente ma devono corrispondere a quelle usate nella definizione delle catene. Le strutture proxy sono così composte:

  • connstring è obbligatoria con formato protocol://host:port (protocol può essere socks5 o httpconnect/http)
  • user e pass sono opzionali

Per ogni proxy dichiarato, viene creata una catena implicita (vedi paragrafo successivo) con lo stesso nome. Ha parametri predefiniti ed è composta dal singolo proxy associato. Se si desidera utilizzare parametri non predefiniti, è necessario creare esplicitamente una catena.

Catene

Le catene devono essere dichiarate nella sezione chains come una mappa di strutture di catena. Le chiavi della mappa sono scelte liberamente ma devono corrispondere a quelle usate nella definizione delle route e devono essere diverse dalle chiavi della mappa della sezione proxies. Le strutture di catena hanno parametri simili a quelli di proxychains (cfr. https://github.com/rofl0r/proxychains-ng):

  • proxyDns: booleano, opzionale, predefinito true
  • tcpConnectTimeout: intero, opzionale, predefinito 1000 (usato durante la connessione dei socket, sia al primo proxy della catena che direttamente alla destinazione)
  • tcpReadTimeout: intero, opzionale, predefinito 2000 (usato durante la lettura delle risposte di handshake dei proxy sui socket connessi)
  • proxies: elenco di stringhe, opzionale, predefinito elenco vuoto

La chiave proxies di una chain deve contenere un array di nomi di proxy dichiarati come chiavi nella sezione proxies. Come accennato nel paragrafo precedente, per ogni proxy dichiarato nella sezione proxies viene creata una catena implicita (vedi paragrafo successivo) con lo stesso nome. Ha parametri predefiniti ed è composta dal singolo proxy associato.

Route

La modalità di configurazione integrata per il routing avviene tramite il file di configurazione. Associa gli indirizzi ai nomi delle catene. Il file deve contenere una mappa di tabelle di routing. Le chiavi della mappa sono scelte liberamente ma devono corrispondere a quelle usate nella sezione servers. Ogni tabella di routing contiene una chiave default che rappresenta la route predefinita e una chiave blocks che è un array di blocchi di regole. Ogni blocco di regole contiene un comment, un insieme di rules e un nome di catena associato. Le regole vengono valutate: dato un indirizzo nel formato host:port, possono essere true o false. Per un dato indirizzo, i blocchi vengono valutati nell'ordine di dichiarazione. I blocchi possono essere disabilitati impostando il campo disable a true. Ciò consente una forma di "commento", non possibile in JSON. La valutazione si ferma al primo blocco che risulta true e viene restituito il nome della catena associata. Ogni server aperto (dalla sezione servers) è associato a una tabella di routing della configurazione. Le richieste ricevute su ciascun server vengono instradate in base alla tabella di routing corrispondente. Se tutti i blocchi vengono valutati false, viene utilizzata la route predefinita. Se default non è definita, le connessioni vengono scartate per impostazione predefinita.

Campi del blocco:

  • comment (stringa)
  • rules (Rule o RuleCombo)
  • route (stringa)
  • disable (booleano)

Campi della regola:

  • rule (stringa): tipo di regola, regexp, subnet.
  • variable (stringa): variabile per la valutazione regexp, host, port o addr (host:port).
  • content (stringa): contenuto della regola, dipende dal tipo di regola (vedi sotto).
  • negate (booleano) [opzionale]: indica se negare la regola.
Scarica lo strumento