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

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
SudoStamp — Android 휴대폰의 지문으로 Linux 워크스테이션의 sudo를 승인하세요. LAN 전용이며, ECDSA 키는 휴대폰의 TEE를 벗어나지 않고 pam_rssh와 ssh-agent 프로토콜로 통신합니다. | Kitploit
도구/GitLabGitLab/ritwick7/sudostamp
Android SecurityAuthentication & AuthorizationPrivilege EscalationCryptographyMobile SecurityHardware SecurityIdentity & Access Management (IAM)Authentication
GitLabritwick7/sudostamp

SudoStamp

Android 휴대폰의 지문으로 Linux 워크스테이션의 sudo를 승인하세요. LAN 전용이며, ECDSA 키는 휴대폰의 TEE를 벗어나지 않고 pam_rssh와 ssh-agent 프로토콜로 통신합니다.

212일 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

sudo pacman -Syu를 실행 중인 터미널 옆에서 "Approve sudo?"라고 묻는 휴대폰이 "Approved"를 표시하는 모습

pipeline status MIT licence Android 11+ Zero runtime dependencies Release APK about 110 KB Host side: pam_rssh site tip

SudoStamp

Android 휴대폰의 지문 센서를 터치하여 Linux 머신에서 sudo를 승인하세요.

sudo를 입력하면 휴대폰이 진동하고, 센서를 터치하면 명령이 실행됩니다. 비밀번호를 입력할 필요도 없고, 클라우드에 아무것도 저장되지 않습니다. 휴대폰이 LAN을 통해 응답하며, 지문은 앱 코드가 아닌 휴대폰의 보안 하드웨어(TEE / StrongBox)에 의해 검증됩니다. 문제가 생기면(휴대폰 꺼짐, 범위 밖, 거부 탭, 60초 경과) sudo는 그냥 일반 비밀번호 프롬프트로 폴백합니다. sudo를 더 편리하게 만들 수는 있어도, 잠금 상태로 만들 수는 없습니다.

실제 모습

알림: Approve sudo? From 10.0.2.2 · tap to approve, with a Deny button
1. 호스트에서 sudo 실행
누가 요청하는지 휴대폰에 팝업이 뜹니다. 여기서 바로 거부할 수 있습니다.
Approval screen with a countdown ring, the requesting host, a first-request warning and a Deny button
2. 탭하기
카운트다운, 호스트와 시간, 처음 보는 호스트에 대한 경고가 표시됩니다. 그다음 시스템 지문 프롬프트가 뜹니다.
Approved: sudo on 10.0.2.2 can proceed
3. 센서 터치
TEE가 서명하고, sudo가 진행되며, 앱이 스스로 종료됩니다.
Onboarding: Approve sudo with a touch, three steps, Get started
첫 실행
세 단계와 버튼 하나. 휴대폰에 지문이 없으면 지문 등록을 제안합니다.
Setup screen: Ready, with Listener, Notifications and Battery checks all green
설정
실시간 체크리스트: 리스너, 알림, 배터리, 방해 금지. 모두 통과해야 "준비 완료"가 됩니다.
Denied: No signature was sent. The host falls back to the password.
거부 또는 시간 초과
휴대폰에서 서명이 전송되지 않으며, 호스트가 비밀번호를 요청합니다.

Pixel 7 에뮬레이터에서 촬영한 스크린샷입니다(따라서 10.0.2.2는 에뮬레이터의 호스트입니다). 2단계 위에 나타나는 시스템 지문 시트는 보안 창이므로 스크린샷에 표시되지 않습니다.

작동 방식

sudo on the host
  -> PAM: pam_rssh (third-party) dials the phone over the LAN, as an ssh-agent
  -> phone: "Approve sudo? From 192.168.1.10"              (notification)
  -> tap -> BiometricPrompt -> fingerprint
  -> the phone's TEE signs pam_rssh's fresh 32-byte challenge
  -> pam_rssh verifies against the pinned public key -> sudo proceeds

신뢰할 수 있는 이유

  • 유일한 사용자 정의 코드는 휴대폰 앱이며, 그것은 서명만 합니다. PAM 통합, 서명 검증, fail-closed 동작은 기존에 유지보수되는 모듈인 pam_rssh의 것입니다. 여기서 작성된 어떤 것도 인증 시점에 호스트에서 root로 실행되지 않습니다.
  • 생체 인증은 하드웨어 게이트입니다. Android Keystore 키는 setUserAuthenticationParameters(0, AUTH_BIOMETRIC_STRONG)으로 생성됩니다. 즉 모든 서명마다 새로운 강력 생체 인증이 필요하며, 이는 TEE(또는 StrongBox) 내부에서 강제됩니다. 휴대폰의 악성코드도 당신의 손가락 없이는 서명할 수 없으며, 키는 내보낼 수 없습니다.
  • sudo 챌린지 외에는 아무것도 서명하지 않습니다. 에이전트는 정확히 pam_rssh의 32바이트 챌린지가 아닌 모든 페이로드를 거부하므로, 키는 SSH 로그인이나 git 서명 오라클로 쓸모가 없습니다.
  • 앱에 서드파티 런타임 의존성 없음: 플랫폼 API만 사용합니다.

SECURITY.md에는 보호하지 않는 대상까지 포함한 전체 위협 모델이 있습니다. docs/DESIGN.md에는 설계와 그 근거가 있습니다.

요구 사항

  • 휴대폰: Android 11+ (API 30, 사용 시점별 생체 인증 키를 표현할 수 있게 된 버전) 및 Class 3("강력") 지문 센서.

  • 호스트: 아래 플랫폼 중 하나. 설치 프로그램이 pam_rssh를 함께 가져옵니다. 패키지가 있으면 패키지를, 없으면 고정되고 검증된 커밋에서 빌드합니다.

    플랫폼상태
    Arch, Manjaro, EndeavourOS✅ CI에서 엔드 투 엔드 테스트 완료
    Debian 12 / 13, Ubuntu 24.04, Mint, Pop!_OS✅ CI에서 엔드 투 엔드 테스트 완료
    Fedora, RHEL / Rocky / Alma 9✅ CI에서 엔드 투 엔드 테스트 완료
    openSUSE Tumbleweed✅ CI에서 엔드 투 엔드 테스트 완료
    Windows, WSL 경유 (위의 모든 배포판)🧪 작동해야 하지만 미검증; 검색이 WSL2의 NAT 너머로 휴대폰을 보지 못할 수 있으므로 --phone을 전달하세요
    macOS 14+ (/etc/pam.d/sudo_local 경유)🧪 실험적, 미검증
    FreeBSD (security/pam_rssh 포트)🧪 실험적, 미검증

    "엔드 투 엔드 테스트 완료"는 모든 푸시마다 해당 배포판의 새 컨테이너에서 tools/test/e2e.sh를 실행한다는 뜻입니다. 즉 설치 프로그램, pam_rssh, 그리고 **실제 sudo**를 모의 휴대폰에 대해 실행합니다. sudo는 휴대폰이 승인하면 비밀번호 없이 통과해야 하고, 거부하면 비밀번호로 폴백해야 하며, 롤백에 의해 바이트 단위로 복원되어야 합니다.

  • 휴대폰과 호스트가 같은 LAN에 있고, 휴대폰이 고정 주소(DHCP 예약)를 가져야 합니다.

설정

1. 휴대폰. Releases 페이지에서 앱을 설치하거나, Obtainium이 앱을 설치하고 최신 상태로 유지하도록 하세요. https://gitlab.com/ritwick7/sudostamp를 앱으로 추가하면 됩니다. 앱을 열고 Get started를 탭하세요. 키가 휴대폰의 보안 하드웨어 내부에서 생성되고, 휴대폰이 컴퓨터를 기다립니다.

모든 릴리스 APK는 동일한 키로 서명됩니다. 설치 전에 다운로드를 확인하려면:

sha256sum -c --ignore-missing SHA256SUMS                 # from the same release page
apksigner verify --print-certs sudostamp-v*.apk | grep SHA-256
# must be 7bcb0b51246197b9bb99779e09a3adcbbaeb2d59a0edecf8d2e8be67844d0657

2. 컴퓨터. 두 줄이면 되고, 클론은 필요 없습니다:

curl -fsSLO https://gitlab.com/ritwick7/sudostamp/-/releases/permalink/latest/downloads/sudostamp-setup.sh
sudo bash sudostamp-setup.sh

Arch에서는 yay -S sudostamp를 실행한 다음 sudo sudostamp setup을 실행합니다(업데이트는 시스템과 함께 제공됩니다).

sudostamp-setup.sh는 하나의 자체 포함 파일입니다. 설치 프로그램과 그 헬퍼들이 전부이며, 숨겨진 것은 없습니다. root로 실행하기 전에 먼저 읽어 보고, 릴리스 페이지에 있는 것과 SHA-256을 비교하세요. 이 파일은 태그된 소스(scripts/bundle-host.sh)로부터 결정적으로 빌드되므로, 직접 다시 빌드해서 바이트 단위로 비교할 수도 있습니다.

이것이 설정의 전부입니다. 네트워크에서 휴대폰을 찾고, 휴대폰에 6자리 코드가 표시됩니다:

도구 다운로드