Have you ever been in an environment where direct network access is blocked, but cloud services like Azure Blob Storage are still reachable? What if I told you that you could tunnel your internet traffic through those blob storage endpoints? That’s exactly what ProxyBlob does.

In this post, I’ll walk you through what ProxyBlob is, how it works, how to set it up, and how you can use it to build a SOCKS proxy in restricted environments using Azure Blob Storage.

Prefer watching instead of reading? Here’s a quick video guide

https://youtu.be/Yf4-S5kpm_0?embedable=true

What Is ProxyBlob?

ProxyBlob is an open-source tool developed by Quarkslab that lets you create a SOCKS5 proxy tunnel through Azure Blob Storage.

Components of ProxyBlob

ProxyBlob has two main parts:

These two talk to each other by sending and receiving data via blobs.

Features of ProxyBlob

Prerequisites

Before diving into setup, make sure you have:

Setting Up ProxyBlob

Let’s break this into simple steps:

Create an Azure Storage Account

You need a Premium Block Blob Storage Account. Here’s how you can do it via the Azure Portal:

Once created, go to Security + networking > Access keys to get your storage credentials.

Or use the Azure CLI:

az login
az group create --name proxyblob-rg --location "Central US"
az storage account create \
  --name myproxyblob \
  --resource-group proxyblob-rg \
  --location "Central US" \
  --sku "Premium_LRS" \
  --kind BlockBlobStorage
az storage account keys list --account-name myproxyblob --output table

Local Testing with Azurite

If you just want to test locally:

With VS Code extension:

With Docker:

docker pull mcr.microsoft.com/azure-storage/azurite
docker run -p 10000:10000 mcr.microsoft.com/azure-storage/azurite

Default creds:

Clone and Build ProxyBlob

git clone https://github.com/quarkslab/proxyblob
cd proxyblob
make

This builds two binaries:

Configuration

Create a config file like this:

{
  "storage_url": "http://localhost:10000/",  // remove if using real Azure
  "storage_account_name": "your-storage-name",
  "storage_account_key": "your-key"
}

Save it as config.json or my-config.json.

Running ProxyBlob

Start the Proxy Server

./proxy -c my-config.json

This launches an interactive CLI.

Key commands:

Example:

proxyblob » create
proxyblob » list
proxyblob » select <container-id>
proxyblob » start

Start the Agent

You have two ways to pass the connection string:

Via CLI:

./agent -c <generated-connection-string>

Or embed at build time:

make agent TOKEN=<generated-connection-string>
./agent

How It Works (Architecture)

Here’s a simplified explanation of the workflow:

This creates a loop that emulates a direct SOCKS5 tunnel — but completely through blob storage.

You can now use tools like proxychains:

proxychains curl http://example.com
proxychains xfreerdp /v:myhost /u:user

Troubleshooting Tips

Check the exit code:

echo $?

Common Fixes:

What’s Coming Next?

According to the README, future improvements may include:

Final Thoughts

ProxyBlob is a powerful example of protocol tunneling using cloud services. It’s especially useful for red teamers, pentesters, and defenders to understand the potential abuse of cloud storage services.

If you’re serious about network security, covert channels, or cloud abuse scenarios, I highly recommend experimenting with ProxyBlob — just make sure to use it ethically and responsibly.