Proxify

Swiss Army Knife Proxy for rapid deployments. Supports multiple operations such as request/response dump, filtering and manipulation via DSL language, upstream HTTP/Socks5 proxy. Additionally, a replay utility allows to import the dumped traffic (request/responses with correct domain name) into BurpSuite or any other proxy by simply setting the upstream proxy to proxify.

Features

  • Intercept / Manipulate HTTP/HTTPS & NON-HTTP traffic
  • Invisible & Thick clients traffic proxy support
  • TLS MITM support with client/server certificates
  • HTTP and SOCKS5 support for upstream proxy
  • Traffic Match/Filter and Replace DSL support
  • Full traffic dump to file (request/responses)
  • Native embedded DNS server
  • Plugin Support to decode specific protocols (e.g XMPP/SMTP/FTP/SSH/)
  • Proxify Traffic replay in Burp

Usage

Usage: ./proxify [flags]

OUTPUT

OptionDescription
-sr, -store-responseStore raw HTTP request/response to output directory (default proxify_logs)
-o, -outputOutput file to store proxify logs (default proxify_logs.jsonl)
-of, -output-format stringOutput format (jsonl/yaml) (default "jsonl")
-dump-reqDump only HTTP requests to output file
-dump-respDump only HTTP responses to output file
-oca, -out-ca stringGenerate and save CA file to filename

UPDATE

OptionDescription
-up, -updateUpdate proxify to latest version
-duc, -disable-update-checkDisable automatic proxify update check

FILTER

OptionDescription
-req-fd, -request-dsl string[]Request Filter DSL
-resp-fd, -response-dsl string[]Response Filter DSL
-req-mrd, -request-match-replace-dsl string[]Request Match-Replace DSL
-resp-mrd, -response-match-replace-dsl string[]Response Match-Replace DSL

NETWORK

OptionDescription
-ha, -http-addr stringListening HTTP IP and port address (ip:port) (default 127.0.0.1:8888)
-sa, -socks-addrListening SOCKS IP and port address (ip:port) (default 127.0.0.1:10080)
-da, -dns-addr stringListening DNS IP and port address (ip:port)
-dm, -dns-mapping stringDomain to IP DNS mapping (e.g., domain:ip,domain:ip,..)
-r, -resolver stringCustom DNS resolvers to use (ip:port)

PROXY

OptionDescription
-hp, -http-proxy string[]Upstream HTTP proxies (e.g., http://proxy-ip:proxy-port)
-sp, -socks5-proxy string[]Upstream SOCKS5 proxies (e.g., socks5://proxy-ip:proxy-port)
-c intNumber of requests before switching to the next upstream proxy (default 1)

EXPORT

OptionDescription
-max-size intMax export data size (request/responses will be truncated) (default 9223372036854775807)

CONFIGURATION

OptionDescription
-config stringPath to the proxify configuration file
-ec, -export-config stringProxify export module configuration file (default "$CONFIG/export-config.yaml")
-config-directory stringOverride the default config path (default "$CONFIG/proxify")
-cert-cache-size intNumber of certificates to cache (default 256)
-a, -allow string[]Allowed list of IP/CIDRs to be proxied
-d, -deny string[]Denied list of IP/CIDRs to be proxied
-pt, -passthrough string[]List of passthrough domains

DEBUG

OptionDescription
-nc, -no-colorNo color
-versionVersion
-silentSilent
-v, -verboseVerbose
-vv, -very-verboseVery verbose

Examples

Running Proxify HTTP proxy on port 8888:

proxify

Runs an HTTP proxy on custom port 1111:

proxify -http-addr ":1111"

TLS pass through: The -pt flag can be used pass through (skip) encrypted traffic without attempting to terminate the TLS connection.

proxify -pt '(.*\.)?google\.co.in.*'

Runs an HTTP proxy on port 8888 and forward the traffic to burp on port 8080:

proxify -http-proxy http://127.0.0.1:8080

Runs an HTTP proxy on port 8888 and forward the traffic to the TOR network:

proxify -socks5-proxy 127.0.0.1:9050