
BinProxy è un proxy per connessioni TCP arbitrarie. Puoi definire formati di messaggi personalizzati utilizzando la gemma BinData.
BinProxy è un proxy per connessioni TCP arbitrarie. Puoi definire formati di messaggio personalizzati usando la gemma BinData.
sudo apt install build-essential ruby-dev dovrebbe funzionare.openssl per --tls senza un certificato/chiave esplicito.gem install binproxy
Potresti aver bisogno di usare sudo, a seconda della tua installazione di Ruby.
git clone https://github.com/nccgroup/BinProxy.git binproxy
cd binproxy
# Install ruby dependencies.
# Depending on your setup, one or both of these may require sudo.
gem install bundler && bundle
# The UI is built with a webpack/babel toolchain:
(cd ui && npm install) \
&& rake build-ui
# Confirm that everything works
# run.sh sets up the environment and passes all args to binproxy
./run.sh --help
Per costruire e installare il pacchetto gem:
gem build binproxy.gemspec
# Again, you may need sudo here
gem install binproxy-1.0.0.gem
Segnalazioni di bug su problemi di installazione sono benvenute!
binproxy senza argomenti.Vedi --help per la lista completa, ma in breve:
binproxy -c <class> [<local-host>] <local-port> <remote-host> <remote-port>
Se ometti l'argomento -c, viene mostrato un semplice dump esadecimale.
Se ometti l'host locale, binproxy assume localhost.
Con le opzioni --socks-proxy o --http-proxy, l'host e la porta remoti sono determinati dinamicamente e non dovrebbero essere specificati.
# Proxy from localhost:9000 -> example.com:9000
binproxy localhost 9000 example.com 9000
# Act as a SOCKS proxy on localhost:1080
# MITM and unwrap TLS on the proxied traffic, using a self-signed cert and key
binproxy -S --tls 1080
# "Poor substitute for Burp" mode:
#
# HTTP proxy; MITM TLS w/ pre-generated cert; simple header parsing
# Note: this will only work on HTTPS traffic, not plain HTTP!
# If you're working with the source repo, you generate the certs with:
# rake makecert[example.com]
# And then import certs/ca-cert.pem into your browser or OS's trust store.
binproxy -H --tls \
--tls-cert certs/example.com-cert.pem \
--tls-key certs/example.com-key.pem \
--class-name DumbHttp::Message \
localhost 8080
Per impostazione predefinita, il proxy usa la classe integrata RawMessage, che fornisce solo un dump esadecimale di ogni messaggio (assumendo una corrispondenza 1:1 tra messaggi e pacchetti TCP)
Puoi visualizzare le informazioni del protocollo analizzato specificando una sottoclasse di BinData::Record† con l'argomento della riga di comando --class.
Potresti anche voler definire quanto segue nella tua classe:
def summary
# return a single-line description of this record
end
# currently supported options are
# - nil : use default display
# - "anon" : for structs, show contents directly
# - "hex" : for numbers, display as 0x1234ABCD
# - "hexdump" : for strings, display like `hexdump -C`
default_parameter display_as: "..."
# TODO: document state stuff
def self.initial_state
end
def current_state
end
def update_state
end
† Tecnicamente, qualsiasi sottoclasse di BinData::Base funzionerà.
Per impostazione predefinita, BinProxy inoltra tutto il traffico a un host e una porta upstream statici. Può anche essere configurato per agire come proxy SOCKS (v4 o v4a) o HTTP rispettivamente con i flag --socks-proxy e --http-proxy.
Nota: Attualmente, il proxy HTTP supporta solo connessioni tunnelizzate con il verbo HTTP CONNNECT; non può fare da proxy a richieste HTTP raw GET, POST, ecc. In pratica, ciò significa che il traffico HTTPS funzionerà, ma il traffico HTTP semplice no, a meno che il client non supporti un flag per forzare il tunneling, come curl -p.
Usa il flag --tls per rimuovere la crittografia TLS prima di elaborare i messaggi. Per impostazione predefinita, BinProxy genererà un certificato autofirmato. Puoi specificare file PEM contenenti un certificato e una chiave con --tls-cert e --tls-key. (Se hai clonato il repository sorgente, usa rake makecert[example.com] per generare una CA statica e un certificato con il nome host appropriato.)
Vedi anche il file TODO per idee casuali e elementi della lista dei desideri.
La funzionalità del proxy TCP principale di BinProxy ha avuto origine in un proxy per scopi speciali scritto da Sean Devlin. Rusty Burchfield ha contribuito con l'interfaccia utente HTML per quel proxy. Sebbene il codice sia cambiato abbastanza da non poterli più incolpare per eventuali bug attuali, BinProxy probabilmente non esisterebbe senza il lavoro di entrambi.