Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/sanmilie/pkcs11sshagent
एन्क्रिप्शन/डिक्रिप्शन उपकरणक्रिप्टोग्राफीहार्डवेयर सुरक्षाउपयोगिताएँ और फ्रेमवर्कपहचान और एक्सेस प्रबंधन (IAM)प्रमाणीकरण
GitHubsanmilie/pkcs11sshagent

PKCS11SSHAgent

रिपॉजिटरी देखें

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →

विवरण

SRO PKCS11 – SSH Agent CNG एक संप्रभु, अल्ट्रा-लाइटवेट और शून्य-निर्भरता वाला विंडोज एजेंट है जो PKCS#11, SSH-एजेंट, Pageant और CNG/स्मार्टकार्ड को एक मजबूत बाइनरी में एकीकृत करता है। मांग वाले वातावरण के लिए डिज़ाइन किया गया, यह देशी हार्डवेयर क्रिप्टोग्राफी, सेवा/यूज़रलैंड आइसोलेशन और स्मार्टकार्ड का पूर्ण समर्थन प्रदान करता है।

वेबसाइट
246 महीने पहलेKitploit द्वारा समीक्षित
साझा करें

SRO PKCS11 – SSH Agent CNG

Compatibility Memory Service Memory Agent Stability GitHub release

संप्रभु एकीकरण PKCS#11 + SSH-agent + Pageant + CNG/Smartcard

एक एकल Windows निष्पादन योग्य जो चार पारंपरिक रूप से अलग कार्यों को एकीकृत करता है:

  • पूर्ण PKCS#11 मॉड्यूल (Firefox, OpenSC, ssh -I)
  • OpenSSH/Git/VS/WSL के साथ संगत SSH एजेंट
  • PuTTY/plink/pscp के साथ संगत Pageant सर्वर
  • स्मार्टकार्ड के लिए सुरक्षित CNG/KSP ऑर्केस्ट्रेटर

विषय सूची

  1. दर्शन
  2. आर्किटेक्चर
  3. निष्पादन मोड
  4. स्थापना
  5. कॉन्फ़िगरेशन
  6. समर्थित प्रोटोकॉल
  7. PIN प्रबंधन
  8. CNG बैकएंड
  9. सुरक्षा
  10. अनुकूलता
  11. सार्वजनिक कुंजी निर्यात
  12. ट्रे आइकन
  13. WSL2 समर्थन
  14. संघर्ष का पता लगाना
  15. निर्भरताएँ
  16. ज्ञात सीमाएँ
  17. रोडमैप

दर्शन

संप्रभु. CRT पर कोई निर्भरता नहीं। सभी मेमोरी संचालन RtlCopyMemory, RtlZeroMemory, RtlEqualMemory (FreeCRT.h) के माध्यम से होते हैं। हर जगह यूनिकोड (नेटिव Win32)। कोई malloc, memcpy, strlen, printf नहीं।

सुरक्षित. निजी कुंजियाँ कभी निर्यात नहीं की जातीं। कोई PIN प्रेषित नहीं होता। CNG/KSP मूल Windows PIN UI का प्रबंधन करता है। सुरक्षित पाइपों के माध्यम से सेवा ↔ उपयोगकर्ता क्षेत्र का सख्त पृथक्करण।

न्यूनतम. एक एकल बाइनरी। कोई बाहरी DLL नहीं। कोई रजिस्ट्री ब्लोट नहीं। सरल स्थापना (regsvr32 या -install).

बहुमुखी. एक ही प्रक्रिया में PKCS#11, SSH-agent, Pageant, और WSL2 का एक साथ समर्थन।


आर्किटेक्चर```

┌──────────────────────────────────────────────────────────────┐ │ Clients (Git, VS, WSL, OpenSSH, PuTTY, Firefox) │ └────────────────────────┬─────────────────────────────────────┘ │ ┌───────────────┼───────────────┬─────────────────┐ │ │ │ │ SSH-agent Pageant (WM_COPYDATA) PKCS#11 WSL2 (TCP) │ │ │ │ v v v v ┌──────────────────────────────────────────────────────────────┐ │ Service Stub (session 0, SYSTEM) │ │ - Accepte connexions sur \.\pipe\openssh-ssh-agent │ │ - Crée pipe interne par client (GUID unique) │ │ - Lance helper userland avec token interactif │ │ - Forwarde messages sans manipuler de secrets │ └────────────────────────┬─────────────────────────────────────┘ │ lancé par le service v ┌──────────────────────────────────────────────────────────────┐ │ Helper Userland (session interactive) │ │ - Connecte au pipe interne │ │ - Décode protocole SSH-agent/Pageant │ │ - Invoque CNG/KSP pour signature │ │ - UI PIN native Windows (pas de relay) │ │ - Renvoie signature au service │ │ - Fenêtre Pageant cachée pour WM_COPYDATA │ │ - Listener TCP 127.0.0.1:10022 pour WSL2 │ │ - Tray icon avec menu contextuel │ └────────────────────────┬─────────────────────────────────────┘ │ v ┌──────────────────────────────────────────────────────────────┐ │ CNG/KSP Backend │ │ - NCryptSignHash avec PKCS#1/PSS padding │ │ - Enumération certificats Windows Store │ │ - Filtrage SmartCardOnly / AllowedKSP │ │ - Support RSA + ECDSA (P-256, P-384, P-521) │ │ - Support EdDSA (Ed25519, Ed448) │ │ - Support Brainpool (P256r1, P384r1, P512r1) │ │ - Cache clés + providers (4h timeout) │ └──────────────────────────────────────────────────────────────┘

root@kitploit:~
---

## निष्पादन मोड

### 1. PKCS#11 मोड (स्वचालित)

द्वारा लोड किया गया:
- `ssh -I ssh-agent.exe user@host`
- `Firefox (सुरक्षा उपकरण → PKCS#11 मॉड्यूल लोड करें)`
- `pkcs11-tool --module ssh-agent.exe --list-objects`

मानक PKCS#11 निर्यात को उजागर करता है:
- `C_Initialize`, `C_Finalize`, `C_GetInfo`
- `C_GetSlotList`, `C_GetSlotInfo`, `C_GetTokenInfo`
- `C_GetMechanismList`, `C_GetMechanismInfo`
- `C_OpenSession`, `C_CloseSession`, `C_Login`, `C_Logout`
- `C_FindObjectsInit`, `C_FindObjects`, `C_FindObjectsFinal`
- `C_GetAttributeValue`
- `C_SignInit`, `C_Sign`
- `C_VerifyInit`, `C_Verify`
- `C_DecryptInit`, `C_Decrypt`
- `C_GenerateRandom`, `C_SeedRandom`

**समर्थित तंत्र (कुल 14):**
- `CKM_RSA_PKCS` (पैडिंग के साथ raw)
- `CKM_RSA_X_509` (पैडिंग के बिना raw)
- `CKM_SHA1_RSA_PKCS` (legacy ssh-rsa)
- `CKM_SHA256_RSA_PKCS` (rsa-sha2-256)
- `CKM_SHA384_RSA_PKCS` (rsa-sha2-384)
- `CKM_SHA512_RSA_PKCS` (rsa-sha2-512)
- `CKM_SHA256_RSA_PKCS_PSS` (RSA-PSS SHA-256)
- `CKM_SHA384_RSA_PKCS_PSS` (RSA-PSS SHA-384)
- `CKM_SHA512_RSA_PKCS_PSS` (RSA-PSS SHA-512)
- `CKM_ECDSA` (raw)
- `CKM_ECDSA_SHA1` (legacy)
- `CKM_ECDSA_SHA256` (ecdsa-sha2-nistp256/384/521)
- `CKM_ECDSA_SHA384`
- `CKM_ECDSA_SHA512`

### 2. एजेंट यूज़रलैंड मोड (स्टैंडअलोन)```bash
ssh-agent.exe
  • उपयोगकर्ता सत्र में पाइप \\.\pipe\openssh-ssh-agent बनाता है
  • SSH-agent प्रोटोकॉल को लागू करता है
  • मल्टी-क्लाइंट समर्थन (अधिकतम 16 समवर्ती कनेक्शन)
  • स्वचालित रूप से Pageant सर्वर लॉन्च करता है
  • स्वचालित रूप से WSL2 लिसनर (127.0.0.1:10022) लॉन्च करता है
  • सीधे CNG/KSP का उपयोग करता है (कोई सेवा नहीं)
  • वर्तमान सत्र में UI PIN
  • वैकल्पिक PIN कैश (कॉन्फ़िगरेबल)
  • रीयल-टाइम आँकड़ों के साथ ट्रे आइकन

संगत है :

  • Git for Windows (set SSH_AUTH_SOCK=\\.\pipe\openssh-ssh-agent)
  • Visual Studio
  • WSL (npiperelay या socat के माध्यम से)
  • WSL2 (TCP 127.0.0.1:10022 के माध्यम से)
  • OpenSSH for Windows
  • PuTTY, plink, pscp, psftp (Pageant के माध्यम से)

3. Mode service stub```bash

ssh-agent.exe -install net start SROSSHAgentCNG

root@kitploit:~
- सत्र 0 (SYSTEM) में चलता है
- वैश्विक पाइप पर कनेक्शन स्वीकार करता है
- प्रति क्लाइंट आंतरिक पाइप बनाता है (SID द्वारा सुरक्षित)
- `CreateProcessAsUserW` के साथ userland हेल्पर लॉन्च करता है
- संदेशों को सीक्रेट्स को छुए बिना अग्रेषित करता है
- 4h टाइमआउट के साथ हेल्पर्स का पूल (स्वचालित पुन: उपयोग)
- पूल भरा होने पर LRU निष्कासन

**लाभ :**
- उपयोगकर्ता सत्र में UI PIN (सत्र 0 में नहीं)
- कठोर वातावरण के साथ संगत
- सेवा ↔ क्रिप्टो के बीच सख्त पृथक्करण
- बहु-उपयोगकर्ता मल्टीप्लेक्सिंग

### 4. सहायक क्रिप्टो userland मोड```bash
ssh-agent.exe -useragent -pipe \\.\pipe\ssh-ksp-helper-{GUID}

सेवा द्वारा स्वचालित रूप से लॉन्च किया गया:

  • आंतरिक पाइप से जुड़ता है
  • SSH-agent/Pageant अनुरोधों को प्रोसेस करता है
  • NCryptSignHash को आमंत्रित करता है (मूल PIN UI)
  • सेवा को हस्ताक्षर वापस भेजता है
  • Pageant लॉन्च करता है (छिपी हुई विंडो)
  • WSL2 लिसनर लॉन्च करता है (127.0.0.1:10022)
  • ट्रे आइकन प्रदर्शित करता है (SERVICE मोड)
  • टाइमआउट या डिस्कनेक्ट के बाद समाप्त हो जाता है

स्थापना

PKCS#11 मॉड्यूल के रूप में पंजीकृत करें```bash

regsvr32 ssh-agent.exe

root@kitploit:~
कुंजियाँ बनाएँ :
- `HKLM\SOFTWARE\San@sro Inc\PKCS11-SSH-Agent`
- `HKCU\SOFTWARE\San@sro Inc\PKCS11-SSH-Agent`
- `HKCU\SOFTWARE\Mozilla\Firefox\PKCS11Modules\SROSSHAgent`

### विंडोज सेवा स्थापित करें```bash
ssh-agent.exe -install
net start SROSSHAgentCNG

WSL2 कॉन्फ़िगर करें

इसे ~/.bashrc या ~/.zshrc में जोड़ें :```bash

--- Pont SSH Agent Windows (TCP -> Unix Socket) ---

export SSH_AUTH_SOCK="$HOME/.ssh/agent.sock"

Vérifier si le socket est déjà géré par un socat actif

if ! pgrep -u $USER socat > /dev/null || [ ! -S "$SSH_AUTH_SOCK" ]; then # Nettoyage préventif rm -f "$SSH_AUTH_SOCK"

root@kitploit:~
# Lancement du bridge en arrière-plan
# Note: Utiliser 127.0.0.1 si mode 'mirrored'
# sinon l'IP du host (ex: 192.168.99.x)
socat UNIX-LISTEN:"$SSH_AUTH_SOCK",fork,unlink-early \
      TCP:127.0.0.1:10022 > /dev/null 2>&1 &

fi

root@kitploit:~
### अनइंस्टॉल करना```bash
regsvr32 /u ssh-agent.exe
ssh-agent.exe -remove

विन्यास

कुंजी : HKLM\SOFTWARE\San@sro Inc\pkcs11-cng या HKCU\SOFTWARE\San@sro Inc\pkcs11-cng



उदाहरण :``` StoreName = "MY" StoreLocation = "CurrentUser" SmartCardOnly = 1 AllowedKSP = "Microsoft Smart Card Key Storage Provider;YubiKey Smart Card Key Storage Provider" RelaxCheckMode = 0 LogLevel = 2

root@kitploit:~
---

## समर्थित प्रोटोकॉल

### SSH-Agent

#### SSH2_AGENTC_REQUEST_IDENTITIES (11)

अनुरोध :```
[type=11]

उत्तर :``` [type=12][count][key_blob_1][comment_1][key_blob_2][comment_2]...

root@kitploit:~
**key_blob RSA :**```
[len]["ssh-rsa"][len][exponent][len][modulus]

key_blob ECDSA :``` [len]["ecdsa-sha2-nistp256"][len]["nistp256"][len][point]

root@kitploit:~
**key_blob EdDSA :**```
[len]["ssh-ed25519"][len][point]

SSH2_AGENTC_SIGN_REQUEST (13)

अनुरोध :``` [type=13][len][key_blob][len][data][flags]

root@kitploit:~
**झंडे :**
- `0x00` : ssh-rsa (SHA-1, पुराना)
- `0x02` : rsa-sha2-256
- `0x04` : rsa-sha2-512

उत्तर :```
[type=14][len][signature_blob]

signature_blob :``` [len]["rsa-sha2-256"][len][signature_data]

root@kitploit:~
### Pageant

`WM_COPYDATA` के माध्यम से संगत PuTTY:

1. क्लाइंट `CreateFileMapping` के माध्यम से एक साझा मेमोरी बनाता है
2. SSH-agent अनुरोध को मानक प्रारूप में लिखता है
3. "Pageant" विंडो को `WM_COPYDATA` भेजता है
4. साझा मेमोरी से उत्तर पढ़ता है

साझा मेमोरी का प्रारूप:```
[uint32 length][SSH-agent payload]

WSL2 नेटवर्क

TCP श्रोता 127.0.0.1:10022 पर :

  • मल्टी-क्लाइंट स्वीकार करें (अधिकतम 16 कनेक्शन)
  • TCP पर मानक SSH-agent प्रोटोकॉल
  • केवल localhost से बाइंड करें (सुरक्षा)
  • प्रति कनेक्शन थ्रेड
  • handle_ssh_message() की ओर फॉरवर्डिंग

PIN प्रबंधन

Windows पूरी तरह से PIN का प्रबंधन करता है CNG/KSP और स्मार्टकार्ड के मिनीड्राइवर के माध्यम से।

मॉड्यूल कभी भी PIN को संग्रहीत नहीं करता और इसे कभी भी आते-जाते नहीं देखता:

  • स्टैंडअलोन मोड में: NCryptSignHash मूल PIN UI को सक्रिय करता है
  • सेवा मोड में: userland हेल्पर (इंटरैक्टिव सत्र) NCryptSignHash को आमंत्रित करता है, PIN UI उपयोगकर्ता सत्र में प्रदर्शित होता है
  • सेवा स्टब केवल पाइपों के बीच पारदर्शी फॉरवर्डिंग (पासथ्रू) करता है

PIN कैश: Windows/मिनीड्राइवर द्वारा स्वचालित रूप से प्रबंधित (एप्लिकेशन कैश की आवश्यकता नहीं)।

NCrypt फ़्लैग:

  • PIN कैश सक्रिय + हिट: NCRYPT_SILENT_FLAG (कोई UI नहीं)
  • PIN कैश सक्रिय + मिस: कोई फ़्लैग नहीं (UI प्रदर्शित)
  • PIN कैश निष्क्रिय: कोई फ़्लैग नहीं (UI हमेशा प्रदर्शित)
  • यदि SILENT_FLAG विफल होता है: UI के साथ स्वचालित पुनः प्रयास

CNG बैकएंड

मल्टी-लेवल कैश

कुंजी कैश (टाइमआउट 4 घंटे) :

  • SHA-1 थंबप्रिंट द्वारा अनुक्रमित
  • CNG_KEY_INFO (हैंडल, प्रदाता, कंटेनर) संग्रहीत करता है
  • समाप्त होने पर स्वचालित निष्कासन
  • ट्रे आइकन के माध्यम से मैन्युअल सफाई

प्रदाता कैश (टाइमआउट 4 घंटे) :

  • KSP नाम द्वारा अनुक्रमित
  • NCRYPT_PROV_HANDLE संग्रहीत करता है
  • NCryptOpenStorageProvider के बार-बार कॉल से बचाता है

प्रमाणपत्र गणना```c

cng_store_enum_certificates(cfg, callback, user_data);

root@kitploit:~
फ़िल्टर :
- उपलब्ध निजी कुंजियाँ
- KSP अधिकृत (यदि `SmartCardOnly`)
- निर्यात-अयोग्य कुंजियाँ (यदि `SmartCardOnly`)

### हस्ताक्षर```c
cng_sign_hash(key_info, mechanism, hash, hash_len, signature, &sig_len);

मकैनिज़्म → पैडिंग :

  • CKM_RSA_PKCS → BCRYPT_PAD_PKCS1
  • CKM_SHA256_RSA_PKCS → BCRYPT_PAD_PKCS1 + BCRYPT_SHA256_ALGORITHM
  • CKM_SHA256_RSA_PKCS_PSS → BCRYPT_PAD_PSS + salt size = hash size
  • CKM_ECDSA_SHA256 → कोई पैडिंग नहीं (कच्चा हस्ताक्षर)

सार्वजनिक कुंजियों का एन्कोडिंग

RSA :```c cng_cert_get_public_key(cert, modulus, &mod_len, exponent, &exp_len);

root@kitploit:~
**ECDSA :**```c
cng_cert_get_ec_params(cert, params, &params_len);  // OID courbe
cng_cert_get_ec_point(cert, point, &point_len);     // Point public

समर्थित वक्र :

  • NIST: nistp256 (OID: 1.2.840.10045.3.1.7), nistp384 (1.3.132.0.34), nistp521 (1.3.132.0.35)
  • Brainpool: brainpoolP256r1, brainpoolP384r1, brainpoolP512r1
  • EdDSA: ed25519 (OID: 1.3.101.112), ed448 (1.3.101.113)

UPN निष्कर्षण

सक्रिय निर्देशिका प्रमाणीकरण समर्थन :```c cng_extract_upn_from_certificate(cert, upn, upn_size);

root@kitploit:~
`szOID_NT_PRINCIPAL_NAME` एक्सटेंशन निकालें और इसे SSH कमेंटरी के रूप में उपयोग करें।

---

## सुरक्षा

### निजी कुंजियाँ

**कभी निर्यात नहीं की जातीं।** सभी क्रिप्टोग्राफिक ऑपरेशन CNG/KSP को सौंपे जाते हैं। `NCryptSignHash` को कुंजी हैंडल से बुलाया जाता है, कभी भी कुंजी से नहीं।

### PIN

**पूरी तरह से Windows (CNG/KSP/minidriver) द्वारा प्रबंधित।**

मॉड्यूल **PIN को कभी संग्रहीत नहीं करता** और **इसे ट्रांज़िट में कभी नहीं देखता**:
- PIN कभी भी PKCS#11 मॉड्यूल को नहीं भेजा जाता
- PIN UI स्मार्टकार्ड के मिनीड्राइवर द्वारा प्रदर्शित किया जाता है
- PIN कैश Windows/minidriver द्वारा स्वचालित रूप से प्रबंधित किया जाता है
- सेवा मोड में: userland helper (इंटरैक्टिव सत्र) PIN UI प्राप्त करता है

**सेवा मोड (शुद्ध passthrough):**
स्टब सेवा केवल पारदर्शी फ़ॉरवर्डिंग करती है:
- क्लाइंट → सेवा → Helper (SSH-agent संदेश फ़ॉर्वर्ड)
- Helper → सेवा → क्लाइंट (SSH-agent प्रतिक्रिया फ़ॉर्वर्ड)
- सेवा कभी भी सामग्री को पार्स नहीं करती
- सेवा कभी नहीं देखती: PIN, हैश, हस्ताक्षर, कुंजी

### सेवा ↔ userland पृथक्करण

**सुरक्षित पाइप।** प्रत्येक आंतरिक पाइप:
- एक अद्वितीय GUID के साथ उत्पन्न होता है
- `FILE_FLAG_FIRST_PIPE_INSTANCE` के साथ बनाया जाता है
- DACL केवल वर्तमान उपयोगकर्ता को अनुमति देता है

userland helper इंटरैक्टिव सत्र में CNG/KSP को आह्वान करता है → मूल PIN UI।

### ऑडिट

**Unicode लॉग।** सभी घटनाओं को `utils_log()` के माध्यम से लॉग किया जाता है:
- क्लाइंट कनेक्शन
- कुंजी गणना
- हस्ताक्षर अनुरोध
- CNG/KSP त्रुटियाँ
- एजेंट संघर्ष

**स्थान:** OutputDebugString + वैकल्पिक फ़ाइल (`utils_set_log_file()`)।

---

## अनुकूलता

| वातावरण                     | मोड                   | स्थिति |
|------------------------------|------------------------|--------|
| OpenSSH for Windows          | स्टैंडअलोन / सेवा     | ✓      |
| Git for Windows              | स्टैंडअलोन / सेवा     | ✓      |
| Visual Studio                | स्टैंडअलोन / सेवा     | ✓      |
| WSL (npiperelay)             | स्टैंडअलोन / सेवा     | ✓      |
| WSL2 (TCP)                   | स्टैंडअलोन / सेवा     | ✓      |
| PuTTY / plink / pscp         | Pageant                | ✓      |
| Firefox                      | PKCS#11                | ✓      |
| OpenSC / pkcs11-tool         | PKCS#11                | ✓      |
| ssh -I (OpenSSH)             | PKCS#11                | ✓      |
| कठोर वातावरण                | सेवा स्टब             | ✓      |
| SmartCard GIDS               | CNG/KSP                | ✓      |
| SmartCard PIV                | CNG/KSP                | ✓      |
| YubiKey                      | CNG/KSP                | ✓      |
| Nitrokey                     | CNG/KSP                | ✓      |

---

## सार्वजनिक कुंजी निर्यात

### CLI कमांड```bash
ssh-agent.exe -exportkey [output.pub]

इंटरैक्टिव डायलॉग

  1. CryptUIDlgSelectCertificateFromStore खोलें
  2. निजी कुंजियों वाले सभी प्रमाणपत्र प्रदर्शित करें
  3. दृश्य चयन की अनुमति देता है
  4. सार्वजनिक कुंजी (RSA/ECDSA/EdDSA) निकालें
  5. SSH वायर प्रारूप में एनकोड करें
  6. दो प्रारूप उत्पन्न करें:
    • OpenSSH (authorized_keys)
    • RFC4716 (SSH2 Public Key)

आउटपुट प्रारूप

OpenSSH :``` ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5... [email protected]

root@kitploit:~
**RFC4716 :**```
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "[email protected]"
AAAAB3NzaC1yc2EAAAADAQABAAABAQC5ABCDEF...
---- END SSH2 PUBLIC KEY ----

वक्र समर्थन

  • RSA (सभी आकार)
  • ECDSA NIST (P-256, P-384, P-521)
  • ECDSA Brainpool (P256r1, P384r1, P512r1)
  • EdDSA (Ed25519, Ed448)

पहचान निष्कर्षण

टिप्पणी के लिए प्राथमिकता क्रम:

  1. UPN (szOID_NT_PRINCIPAL_NAME)
  2. CN (Common Name)
  3. पूर्ण Subject DN

ट्रे आइकन

प्रदर्शन मोड

TRAY_MODE_USERLAND (हरा) :

  • स्टैंडअलोन एजेंट सक्रिय
  • टूलटिप : "SRO SSH-Agent (Userland)"

TRAY_MODE_SERVICE (नीला) :

  • सेवा द्वारा लॉन्च किया गया हेल्पर
  • टूलटिप : "SRO SSH-Agent (Service Helper)"

रीयल-टाइम सांख्यिकी

गतिशील टूलटिप :``` SRO SSH-Agent (Userland) 12 keys, 3 clients

root@kitploit:~
अद्यतन :
- हर 5 सेकंड में
- प्रत्येक क्लाइंट कनेक्शन/डिस्कनेक्शन पर
- कैश फ्लश पर

### संदर्भ मेनू

**Show Keys...** : सभी उपलब्ध कुंजियों को सूचीबद्ध करने वाला संवाद```
═══════════════════════════════════════════════
  SRO SSH-Agent - Available Keys
═══════════════════════════════════════════════

[01] RSA-2048 - [email protected]
[02] ECDSA-nistp256 - [email protected]
[03] EdDSA-Ed25519 - [email protected]

═══════════════════════════════════════════════
Total: 3 keys

💡 Tip: Use 'Export Public Key' to copy SSH format

Export Public Key... : चयन संवाद खोलता है और क्लिपबोर्ड पर कॉपी करता है

Flush & Reload Keys : कुंजी/प्रदाता कैश साफ़ करता है और पुनः लोड करता है

Settings... : वर्तमान कॉन्फ़िगरेशन दिखाता है``` Current Configuration:

Store Name: MY Store Location: CurrentUser SmartCard Only: Yes Relax Key Usage Check Mode: No Log Level: 2

Edit registry to change: HKLM\SOFTWARE\San@sro Inc\pkcs11-cng

root@kitploit:~
**Exit** : स्वच्छ समाप्ति (संकेत `g_shutdown_event`)

### समर्पित UI थ्रेड

- संदेश पंप के साथ छिपी हुई विंडो
- `GetMessage/DispatchMessage` loop
- सिंक्रोनाइज़ेशन के लिए इवेंट `g_tray_ready_event`
- स्वचालित सफ़ाई (`Shell_NotifyIcon(NIM_DELETE)`)

---

## WSL2 समर्थन

### आर्किटेक्चर```
┌─────────────────────────────────────────────┐
│  WSL2 (Linux)                               │
│  - socat UNIX-LISTEN → TCP:127.0.0.1:10022 │
└─────────────────────────────────────────────┘
                    │
                    │ TCP
                    v
┌─────────────────────────────────────────────┐
│  Windows Host                               │
│  - ssh-agent.exe (listener 127.0.0.1:10022)│
│  - CNG/KSP → Smartcard                     │
└─────────────────────────────────────────────┘

Listener TCP

सुरक्षा:

  • प्रतिक्रियाशील शटडाउन के साथ स्वीकारक थ्रेड
  • प्रति क्लाइंट थ्रेड (अधिकतम 16)
  • कनेक्शन टाइमआउट: 1 सेकंड

क्लाइंट पूल

  • स्थैतिक सरणी g_wsl2_clients[16]
  • प्रति स्लॉट CRITICAL_SECTION
  • पूल भरा होने पर LRU निष्कासन
  • शटडाउन पर स्वचालित सफाई

WSL2 कॉन्फ़िगरेशन

मिरर किया गया मोड (Windows 11 22H2+):```bash socat UNIX-LISTEN:"$SSH_AUTH_SOCK",fork,unlink-early
TCP:127.0.0.1:10022 > /dev/null 2>&1 &

root@kitploit:~
**क्लासिक NAT मोड :**```bash
# Récupérer l'IP du host Windows
HOST_IP=$(ip route | grep default | awk '{print $3}')

socat UNIX-LISTEN:"$SSH_AUTH_SOCK",fork,unlink-early \
      TCP:$HOST_IP:10022 > /dev/null 2>&1 &

सार्वजनिक फ़ंक्शन```c

BOOL wsl2_network_start(WORD port, HANDLE shutdown_event); void wsl2_network_stop(void); BOOL wsl2_network_is_running(void); DWORD wsl2_network_get_client_count(void);

root@kitploit:~
---

## संघर्षों का पता लगाना

### पहचाने गए एजेंट```c
typedef enum {
    AGENT_NONE = 0,
    AGENT_OPENSSH_NATIVE,    // OpenSSH for Windows (ssh-agent.exe)
    AGENT_PAGEANT,           // PuTTY Pageant (fenêtre "Pageant")
    AGENT_SRO_USERLAND,      // SRO SSH-Agent userland
    AGENT_SRO_SERVICE,       // SRO SSH-Agent service Windows
    AGENT_UNKNOWN            // Agent inconnu détecté
} AGENT_TYPE;

पहचान के तरीके

OpenSSH नेटिव :

  • प्रक्रिया ssh-agent.exe की खोज CreateToolhelp32Snapshot के माध्यम से करता है
  • जाँच करता है कि यह वर्तमान प्रक्रिया नहीं है

Pageant :

  • विंडो FindWindowW(L"Pageant", L"Pageant") की खोज
  • जाँच करता है कि यह वर्तमान प्रक्रिया की विंडो नहीं है

SRO Userland :

  • प्रयास CreateFileW(\\.\pipe\openssh-ssh-agent)
  • यदि सफल होता है: एक एजेंट पहले से सुन रहा है

SRO Service :

  • SCM अनुरोध OpenServiceW(L"SROSSHAgentCNG")
  • स्थिति जाँच SERVICE_RUNNING

समाधान संवाद

स्टार्टअप पर दिखाया जाता है यदि कोई विरोध पाया जाता है :``` ⚠ SSH Agent Conflict Detected

The following SSH agents are already running: • OpenSSH Native (ssh-agent.exe) • PuTTY Pageant

Running multiple agents may cause conflicts.

Do you want to continue anyway?

[Continue] [Stop conflicting agents] [Exit]

root@kitploit:~
**कार्रवाइयाँ :**
- **Continue** : फिर भी लॉन्च करें (संघर्ष का जोखिम)
- **Stop** : एजेंटों को रोकने का प्रयास करें (यदि संभव हो)
- **Exit** : लॉन्च किए बिना बाहर निकलें

### सार्वजनिक फ़ंक्शन```c
BOOL detect_running_agents(AGENT_TYPE* detected_agents, DWORD* count);
BOOL show_agent_conflict_dialog(const AGENT_TYPE* agents, DWORD count);
const WCHAR* agent_type_to_string(AGENT_TYPE agent);

निर्भरताएँ

कोई नहीं। बाइनरी स्व-निहित है और केवल सिस्टम DLL लोड करता है:

  • kernel32.dll (toujours présent)
  • advapi32.dll (registry, SCM)
  • crypt32.dll (certificats)
  • ncrypt.dll (CNG)
  • bcrypt.dll (hashing)
  • wtsapi32.dll (sessions)
  • shell32.dll (tray icon)
  • ws2_32.dll (Winsock)
  • cryptui.dll (dialogue sélection certificat)

कोई CRT नहीं। सभी मेमोरी ऑपरेशन RtlCopyMemory, RtlZeroMemory, RtlEqualMemory के माध्यम से।


ज्ञात सीमाएँ

  • कोई एन्क्रिप्शन नहीं। SSH-agent केवल सिग्नेचर लागू करता है (SSH2_AGENTC_*_ENCRYPT नहीं)।
  • कोई कुंजी बाधाएँ नहीं। SSH2_AGENTC_ADD_ID_CONSTRAINED का कोई कार्यान्वयन नहीं।
  • CNG PIN कैश। Windows/minidriver द्वारा प्रबंधित, कोई सूक्ष्म अनुप्रयोग नियंत्रण नहीं।
  • सीमित पूल हेल्पर्स। सर्विस मोड में अधिकतम 16 हेल्पर (MAX_HELPERS के माध्यम से कॉन्फ़िगरेबल)।
  • YubiKey PIV स्व-हस्ताक्षरित। PIV मोड में YubiKey स्व-हस्ताक्षरित प्रमाणपत्र उत्पन्न करते हैं जो मानक EKU/KeyUsage फ़ील्ड का पालन नहीं करते। उनका उपयोग करने के लिए RelaxCheckMode = 1 सक्षम करें।

रोडमैप

  • पूर्ण PKCS#11 (14 मैकेनिज्म)
  • मल्टी-क्लाइंट SSH-agent
  • PuTTY संगत Pageant
  • WSL2 टीसीपी लिसनर
  • विंडोज सर्विस स्टब
  • आँकड़ों के साथ ट्रे आइकन
  • सार्वजनिक कुंजी निर्यात (OpenSSH + RFC4716)
  • एजेंट विरोध का पता लगाना
  • कुंजी/प्रदाता कैश (4 घंटे टाइमआउट)
  • EdDSA समर्थन (Ed25519, Ed448)
  • ब्रेनपूल समर्थन
  • ग्राफिकल कॉन्फ़िगरेशन UI (सरलीकृत रजिस्ट्री संपादक)
  • मीट्रिक और मॉनिटरिंग (हस्ताक्षर काउंटर)
  • JSON कॉन्फ़िगरेशन निर्यात

योगदान देना

योगदान का स्वागत है! कृपया:

  • संप्रभु वास्तुकला का पालन करें (कोई CRT नहीं)
  • केवल Win32 API का उपयोग करें
  • सार्वजनिक फ़ंक्शन का दस्तावेज़ीकरण करें
  • वास्तविक स्मार्टकार्ड के साथ परीक्षण करें
  • मौजूदा कोड शैली का पालन करें

स्वामित्व और लाइसेंस

यह सॉफ्टवेयर San@sro inc. की संपत्ति है।
यह एक विश्वास लाइसेंस मॉडल के तहत वितरित किया जाता है:

• व्यक्तिगत और शैक्षिक उपयोग: मुफ्त और प्रोत्साहित।
• व्यावसायिक/वाणिज्यिक उपयोग: तकनीकी शांति लाइसेंस की खरीद आवश्यक है।
बिना वैध लाइसेंस के उद्यम उपयोग कॉपीराइट उल्लंघन है, भले ही जानबूझकर कोई तकनीकी लॉक न हो।

पुनर्वितरण

पुनर्वितरण की अनुमति है बशर्ते: • बाइनरी बरकरार रहे, • मूल Authenticode हस्ताक्षर संरक्षित हो।

गारंटी

यह सॉफ्टवेयर 'जैसा है' प्रदान किया जाता है, बिना किसी प्रकार की वारंटी के।

पूर्ण लाइसेंस (FR + EN), जिसमें परिभाषाएँ, पुनर्वितरण शर्तें, अवधि, समाप्ति और तकनीकी शांति लाइसेंस प्राप्त करने की प्रक्रियाएँ शामिल हैं, यहाँ उपलब्ध है:

👉 LICENSE.md

व्यावसायिक लाइसेंस पूछताछ के लिए:
📧 [email protected]


सुरक्षा और जिम्मेदार प्रकटीकरण

SRO PKCS11 – SSH Agent CNG कोई संवेदनशील रहस्य नहीं संभालता:
PIN, निजी कुंजियाँ और क्रिप्टोग्राफ़िक संचालन पूरी तरह से Windows (CNG/KSP/minidriver) द्वारा प्रबंधित किए जाते हैं।

बग, असामान्य व्यवहार या संभावित कमज़ोरी की रिपोर्ट करने के लिए, एक जिम्मेदार प्रकटीकरण नीति यहाँ उपलब्ध है:

👉 SECURITY.md

सुरक्षा संपर्क:
📧 [email protected]


SRO PKCS11 – SSH Agent CNG
संप्रभु। मजबूत। संचालनात्मक।
सब कुछ करने के लिए एक ही बाइनरी।

टूल डाउनलोड करें
मानप्रकारविवरण
StoreNameREG_SZ"MY", "Root", आदि. (डिफ़ॉल्ट: "MY")
StoreLocationREG_SZ"CurrentUser" या "LocalMachine"
ModeREG_SZ"All" या "SmartCard"
SmartCardOnlyREG_DWORD1 = केवल स्मार्टकार्ड फ़िल्टर करें
AllowedKSPREG_SZअनुमत KSP की सूची (";" द्वारा अलग)
RelaxCheckModeREG_DWORD1 = EKU/KeyUsage/तिथियों का सत्यापन अक्षम करें (YubiKey PIV स्व-हस्ताक्षरित)
LogLevelREG_DWORD0=बंद, 1=त्रुटि, 2=जानकारी, 3=डीबग