Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
PKCS11SSHAgent — SRO PKCS11 – SSH Agent CNG는 PKCS#11, SSH-agent, Pageant 및 CNG/Smartcard를 단일 강력한 바이너리로 통합하는 독립적이고 초경량이며 의존성이 없는 Windows 에이전트입니다. 까다로운 환경을 위해 설계되어 네이티브 하드웨어 암호화, 서비스/유저랜드 격리, 완벽한 스마트카드 지원을 제공합니다. | Kitploit
도구/GitHubGitHub/sanmilie/pkcs11sshagent
Encryption/Decryption ToolsCryptographyHardware SecurityUtilities & FrameworksIdentity & Access Management (IAM)Authentication
GitHubsanmilie/pkcs11sshagent

PKCS11SSHAgent

SRO PKCS11 – SSH Agent CNG는 PKCS#11, SSH-agent, Pageant 및 CNG/Smartcard를 단일 강력한 바이너리로 통합하는 독립적이고 초경량이며 의존성이 없는 Windows 에이전트입니다. 까다로운 환경을 위해 설계되어 네이티브 하드웨어 암호화, 서비스/유저랜드 격리, 완벽한 스마트카드 지원을 제공합니다.

저장소 보기
24117개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

SRO PKCS11 – SSH Agent CNG

Compatibility Memory Service Memory Agent Stability GitHub release

PKCS#11 + SSH-agent + Pageant + CNG/스마트카드의 주권적 통합

전통적으로 분리된 네 가지 기능을 단일 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 없음. 레지스트리 bloating 없음. 간단한 설치 (regsvr32 또는 -install).

다재다능. 동일한 프로세스에서 PKCS#11, SSH-agent, Pageant, WSL2 동시 지원.


Architecture```

┌──────────────────────────────────────────────────────────────┐ │ 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) │ └──────────────────────────────────────────────────────────────┘

## 실행 모드

### 1. PKCS#11 모드 (자동)

다음에 의해 로드됨:
- `ssh -I ssh-agent.exe user@host`
- `Firefox (Security Devices → Load PKCS#11 Module)`
- `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` (레거시 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` (레거시)
- `CKM_ECDSA_SHA256` (ecdsa-sha2-nistp256/384/521)
- `CKM_ECDSA_SHA384`
- `CKM_ECDSA_SHA512`

### 2. 사용자랜드 에이전트 모드 (독립 실행형)```bash
ssh-agent.exe
  • 사용자 세션에 \\.\pipe\openssh-ssh-agent 파이프를 생성합니다
  • SSH 에이전트 프로토콜을 구현합니다
  • 다중 클라이언트 지원 (최대 16개 동시 연결)
  • Pageant 서버를 자동으로 실행합니다
  • WSL2 리스너(127.0.0.1:10022)를 자동으로 실행합니다
  • CNG/KSP를 직접 사용합니다 (서비스 아님)
  • 현재 세션에서 PIN UI를 제공합니다
  • 선택적 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. 서비스 스텁 모드```bash

ssh-agent.exe -install net start SROSSHAgentCNG

- 세션 0(SYSTEM)에서 실행
- 글로벌 파이프 연결 수락
- 클라이언트별 내부 파이프 생성(SID로 보안)
- `CreateProcessAsUserW`로 userland 헬퍼 실행
- 비밀에 접근하지 않고 메시지 포워딩
- 타임아웃 4시간인 헬퍼 풀(자동 재사용)
- 풀이 가득 차면 LRU 제거

**장점:**
- 사용자 세션의 UI PIN(세션 0 아님)
- 강화된 환경과 호환 가능
- 서비스 ↔ 암호화 간 엄격한 격리
- 다중 사용자 멀티플렉싱

### 4. 사용자 영역 암호화 헬퍼 모드```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

키 생성:
- `HKLM\SOFTWARE\San@sro Inc\PKCS11-SSH-Agent`
- `HKCU\SOFTWARE\San@sro Inc\PKCS11-SSH-Agent`
- `HKCU\SOFTWARE\Mozilla\Firefox\PKCS11Modules\SROSSHAgent`

### Windows 서비스 설치```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"

# 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

### 제거```bash
regsvr32 /u ssh-agent.exe
ssh-agent.exe -remove

구성

키: HKLM\SOFTWARE\San@sro Inc\pkcs11-cng 또는 HKCU\SOFTWARE\San@sro Inc\pkcs11-cng

도구 다운로드