Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
roca — ROCA: Infineon RSA 키 취약점 | Kitploit
도구/GitHubGitHub/crocs-muni/roca
Static AnalysisVulnerability AnalysisCryptography
GitHubcrocs-muni/roca

roca

ROCA: Infineon RSA 키 취약점

저장소 보기웹사이트
49596495년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

ROCA 탐지 도구

Build Status

이 도구는 ACM CCS 2017 컨퍼런스 논문 #124 Return of the Coppersmith’s Attack: Practical Factorization of Widely Used RSA Moduli와 관련이 있습니다.

공개 RSA 키에 설명된 취약점이 있는지 테스트할 수 있습니다.

2017년 11월 4일 업데이트: Python 2.7, 3.4+ 지원.

2017년 10월 30일 업데이트: 공격에 대한 논문이 이미 온라인에 게시되었으며, ACM 버전도 있습니다.

2017년 10월 30일 업데이트: 이산 로그 탐지기가 이제 Python으로 구현되어 기본값으로 사용됩니다. 인수분해 알고리즘이 이용하는 소수 내 구조를 탐지합니다.

현재 도구는 다음 키 형식을 지원합니다:

  • X509 인증서, DER 인코딩, 파일당 하나, *.der, *.crt
  • X509 인증서, PEM 인코딩, 파일당 여러 개, *.pem
  • X509 인증서 서명 요청, PEM 인코딩, 파일당 여러 개, *.pem
  • RSA PEM 인코딩 개인 키, 공개 키, 파일당 여러 개, *.pem (올바른 헤더 -----BEGIN RSA... 필요)
  • SSH 공개 키, *.pub, "ssh-rsa"로 시작, 줄당 하나
  • ASC 인코딩 PGP 키, *.pgp, *.asc. 파일당 여러 개, 올바른 헤더 -----BEGIN PGP... 필요
  • APK 안드로이드 애플리케이션, *.apk
  • 모듈러스 하나씩 줄로 구분된 텍스트 파일 *.txt, 모듈러스는 다음 중 하나: a) base64 인코딩 숫자, b) 16진수 인코딩 숫자, c) 10진수 인코딩 숫자
  • 모듈러스가 포함된 JSON 파일, 레코드당 한 줄, 모듈러스 키는 "mod" (int, base64, 16진수, 10진수 인코딩 지원) "cert" 키를 가진 인증서 또는 "certs" 키를 가진 인증서 배열이 지원되며, base64 인코딩 DER.
  • LDIFF 파일 - LDAP 데이터베이스 덤프. ;binary::로 끝나는 모든 필드는 X509 인증서로 디코딩 시도.
  • Java Key Store 파일 (JKS). 빈 비밀번호와 일반적인 비밀번호를 시도하며, --jks-pass-file로 더 많은 비밀번호 지정 가능.
  • 사용자 인증서가 포함된 PKCS7 서명

탐지 도구는 통합 및 조작을 쉽게 하기 위해 의도적으로 단일 파일로 구현되었습니다.

오탐(False positive)

오탐 탐지율:

  • 모듈러스 탐지기: 2^-27
  • 이산 로그 탐지기: 2^-154

이산 로그 탐지기는 Python 코드에만 구현되어 있으며, 기본 탐지 방법으로 사용됩니다.

Java 및 C# 코드 포트는 원본 발표 이후 유지 관리되지 않으며, 이러한 탐지기를 더 정밀한 방법으로 업그레이드할 계획은 없습니다. 그러나 PR은 환영합니다!

온라인 검사기

https://keychest.net/roca

온라인 검사기는 이산 로그 탐지기 알고리즘을 사용합니다.

pip로 설치

pip를 사용하여 탐지 라이브러리 + 도구를 설치합니다 (모든 종속성 설치):

root@kitploit:~
pip install roca-detect

로컬 설치

패키지의 루트 폴더에서 실행:

root@kitploit:~
pip install --upgrade --find-links=. .

종속성

pip가 예를 들어 cryptography 패키지를 설치할 수 있도록 추가 종속성을 설치해야 할 수 있습니다.

CentOS / RHEL:

root@kitploit:~
sudo yum install python-devel python-pip gcc gcc-c++ make automake autoreconf libtool openssl-devel libffi-devel dialog

Ubuntu:

root@kitploit:~
sudo apt-get install python-pip python-dev build-essential libssl-dev libffi-dev swig

사용법

기본 사용법을 출력하려면:

root@kitploit:~
# pip / 수동 설치 시
roca-detect --help

# 설치하지 않고 (종속성 누락 가능)
python roca/detect.py

테스트 도구는 여러 파일 이름 / 디렉토리를 입력 인수로 받습니다. 지문이 추출된 파일 수 (및 해당 파일)를 보여주는 보고서를 반환합니다.

예시 (취약점 없음):

내 모든 SSH 키와 known_hosts에서 재귀적으로 실행:

root@kitploit:~
$> roca-detect ~/.ssh
2017-10-16 13:39:21 [51272] INFO ### SUMMARY ####################
2017-10-16 13:39:21 [51272] INFO Records tested: 92
2017-10-16 13:39:21 [51272] INFO .. PEM certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. DER certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. RSA key files: . 16
2017-10-16 13:39:21 [51272] INFO .. PGP master keys: 0
2017-10-16 13:39:21 [51272] INFO .. PGP total keys:  0
2017-10-16 13:39:21 [51272] INFO .. SSH keys:  . . . 76
2017-10-16 13:39:21 [51272] INFO .. APK keys:  . . . 0
2017-10-16 13:39:21 [51272] INFO .. JSON keys: . . . 0
2017-10-16 13:39:21 [51272] INFO .. LDIFF certs: . . 0
2017-10-16 13:39:21 [51272] INFO .. JKS certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. PKCS7: . . . . . 0
2017-10-16 13:39:21 [51272] INFO No fingerprinted keys found (OK)
2017-10-16 13:39:21 [51272] INFO ################################

예시 (취약점 발견):

내 모든 SSH 키와 known_hosts에서 재귀적으로 실행:

root@kitploit:~
$> roca-detect ~/.ssh
<b>2017-10-16 13:39:21 [51272] WARNING Fingerprint found in the Certificate</b>
...
2017-10-16 13:39:21 [51272] INFO ### SUMMARY ####################
2017-10-16 13:39:21 [51272] INFO Records tested: 92
2017-10-16 13:39:21 [51272] INFO .. PEM certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. DER certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. RSA key files: . 16
2017-10-16 13:39:21 [51272] INFO .. PGP master keys: 0
2017-10-16 13:39:21 [51272] INFO .. PGP total keys:  0
2017-10-16 13:39:21 [51272] INFO .. SSH keys:  . . . 76
2017-10-16 13:39:21 [51272] INFO .. APK keys:  . . . 0
2017-10-16 13:39:21 [51272] INFO .. JSON keys: . . . 0
2017-10-16 13:39:21 [51272] INFO .. LDIFF certs: . . 0
2017-10-16 13:39:21 [51272] INFO .. JKS certs: . . . 0
2017-10-16 13:39:21 [51272] INFO .. PKCS7: . . . . . 0
2017-10-16 13:39:21 [51272] INFO Fingerprinted keys found: 1
2017-10-16 13:39:21 [51272] INFO WARNING: Potential vulnerability
2017-10-16 13:39:21 [51272] INFO ################################

PGP 키

PGP 키를 테스트하려면 이메일 클라이언트에서 내보내거나 https://pgp.mit.edu/ 와 같은 PGP 키 서버에서 다운로드할 수 있습니다.

gpg 명령줄 유틸리티를 사용하여 공개 키를 내보낼 수도 있습니다:

root@kitploit:~
gpg --armor --export [email protected] > mykey.asc

고급 사용 사례

탐지 도구는 키에 대한 정보를 추출하여 표시할 수 있습니다:

root@kitploit:~
roca-detect.py --dump --flatten --indent  ~/.ssh/

TLS/SSL 탐지

roca-detect-tls는 원격 TLS/SSL 포트에서 인증서를 탐지합니다. address:port 항목이 줄바꿈으로 구분된 파일을 제공하고 해당 파일을 입력으로 사용하세요.

예시 파일: tls_list.txt

root@kitploit:~
github.com:443
google.com:443
internal.example.com:8080

그런 다음 실행:

roca-detect-tls tls_list.txt

가짜 모듈러스

모듈러스 지문 테스트를 통과하지만 실제로 인수분해 알고리즘이 사용하는 구조를 포함하지 않는 모듈러스를 생성할 수 있습니다. Dlog 모듈러스 테스트는 이를 양성으로 표시하지 않습니다.

고급 설치 방법

가상 환경

일반적으로 프로젝트를 위해 새로운 Python 가상 환경을 만드는 것이 좋습니다:

root@kitploit:~
virtualenv ~/pyenv
source ~/pyenv/bin/activate
pip install --upgrade pip
pip install --upgrade --find-links=. .

별도 Python 2.7.13

도구를 Python 2.7.13으로 테스트했으며 작동합니다 (자세한 내용은 Travis 참조). 낮은 버전(<=2.6)에서는 제대로 작동하지 않는다는 보고가 있으므로 최신 Python 2.7을 사용하는 것이 좋습니다.

시스템 Python을 업데이트할 수 없거나 원하지 않는 경우 pyenv를 사용하여 로컬에 새 Python 버전을 설치하세요.

내부적으로 Python 소스를 다운로드하여 ~/.pyenv에 설치합니다.

root@kitploit:~
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
exec $SHELL
pyenv install 2.7.13
pyenv local 2.7.13

Python 3

탐지 도구는 Python 3.4+에서도 작동합니다.

Docker 컨테이너

환경 불일치를 피하기 위해 Docker 컨테이너를 통해 실행합니다. Dockerfile 소스는 https://hub.docker.com/r/unnawut/roca-detect/ 에서 감사할 수 있습니다.

root@kitploit:~
docker run --rm -v /path/to/your/keys:/keys --network none unnawut/roca-detect

컨테이너의 네트워크 연결을 비활성화하고 실행 후 삭제하려면 --rm 및 --network none 플래그를 사용해야 합니다.

라이선스

코드는 관대한 MIT 라이선스로 제공됩니다.

호환성에 대한 의문으로 인해 Apache 2.0 라이선스로 이중 라이선싱 요청이 있었으므로, 코드를 Apache 2.0 라이선스로도 제공합니다.

자신에게 더 적합한 라이선스(MIT 또는 Apache 2.0)를 선택하세요.

언어 포트

이 섹션에는 다양한 언어 포트의 GIT 저장소 링크가 포함되어 있습니다.

  • Go
도구 다운로드