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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mellon — OSDP 공격 도구 (그리고 엘프어로 '친구'를 뜻하는 단어) | Kitploit
도구/GitHubGitHub/bishopfox/mellon
Vulnerability AnalysisExploitationCryptographyPenetration TestingHardware Security
GitHubbishopfox/mellon

mellon

OSDP 공격 도구 (그리고 엘프어로 '친구'를 뜻하는 단어)

저장소 보기
114943년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

이 도구가 악용하는 OSDP 취약점

OSDP 공격 도구 (그리고 친구를 뜻하는 엘프어)

공격 #1: 암호화는 선택 사항

OSDP는 암호화를 지원하지만 엄격히 요구하지는 않습니다. 따라서 연결이 전혀 암호화되지 않을 수도 있습니다. 공격 #1은 단순히 수동으로 수신하여 선로에서 카드 번호를 읽을 수 있는지 확인하는 것입니다.

공격 #2: 다운그레이드 공격

컨트롤러와 리더가 암호화를 지원한다고 해서 반드시 사용하도록 요구하도록 구성되어 있는 것은 아닙니다. 공격자는 리더의 기능 응답 메시지(osdp_PDCAP)를 수정하여 암호화를 지원하지 않는다고 알릴 수 있습니다. 이 경우 일부 컨트롤러는 암호화 없이 그대로 진행합니다.

공격 #3: 설치 모드 공격

OSDP에는 리더와 컨트롤러 모두에 적용되는 준공식 '설치 모드'가 있습니다. 이름에서 알 수 있듯이 리더를 처음 설정할 때 사용하도록 되어 있습니다. 기본적으로 리더가 컨트롤러에게 기본 암호화 키(SCBK)가 무엇인지 물을 수 있도록 합니다. 컨트롤러가 지속적으로 설치 모드로 구성된 경우 공격자가 선로에 나타나 SCBK를 요청할 수 있습니다.

공격 #4: 취약한 키

OSDP 샘플 코드에는 종종 하드코딩된 암호화 키가 포함되어 있습니다. 분명히 이는 사용자가 스스로 안전한 방식으로 키를 생성해야 하는 샘플을 의미합니다. 하지만 이는 사용자에게 설명되지 않거나 간단하게 만들어지지 않았습니다. 보안 분야에서 오래 일한 사람이라면 기본값이 실제 운영 환경에 그대로 있을 가능성이 높다는 것을 알고 있습니다.

따라서 공격 벡터로서 리더와 컨트롤러 간의 링크가 암호화된 경우 일반적인 취약한 키를 열거해 볼 가치가 있습니다. 이는 128비트 AES 키이므로 모두 열거할 수는 없습니다. 또는 의미 있는 부분조차도 열거할 수 없습니다. 하지만 우리가 할 수 있는 것은 누군가 키를 하드코딩할 때 볼 수 있는 몇 가지 일반적인 패턴을 시도하는 것입니다.

  • 모든 단일 바이트 값. [0x04, 0x04, 0x04, 0x04 …]
  • 모든 단조 증가 바이트 값. [0x01, 0x02, 0x03, 0x04, …]
  • 모든 단조 감소 바이트 값. [0x0A, 0x09, 0x08, 0x07, …]

공격 #5: 키셋 캡처

OSDP에는 인-밴드 키 교환 메커니즘이 없습니다. 이는 공격자가 다음을 수행할 수 있음을 의미합니다.

  • 선로에 은밀한 도청 장치를 삽입합니다.
  • 리더를 고장내거나, 공장 초기화하거나, 비활성화합니다.
  • IT 담당자가 와서 리더를 교체할 때까지 기다립니다.
  • 리더가 처음 설정될 때 키셋 메시지(osdp_KEYSET)를 캡처합니다.
  • 이후 모든 메시지를 복호화합니다.

테스트베드 설정하기 (Linux/MacOS)

각 공격에 대한 개념 증명 코드는 attack_osdp.py에서 찾을 수 있습니다. 사용법에 대한 자세한 내용은 --help 명령어를 확인하세요. 이는 Python 스크립트이며 USB<-->RS485 어댑터(예: 이 제품)가 장착된 노트북에서 실행하도록 설계되었습니다. 따라서 이러한 어댑터를 구입하는 것이 좋습니다. 반드시 해당 모델일 필요는 없습니다.

테스트할 컨트롤러가 있다면 좋습니다. 그것을 사용하세요. 없다면 여기에 의도적으로 취약하게 만든 OSDP 컨트롤러인 vulnserver.py를 제공합니다.

attack_osdp.py의 일부 공격은 정상 작동하는 리더와 컨트롤러 사이에서 완전한 MitM 역할을 할 것으로 예상합니다. 이를 테스트하려면 브레드보드로 연결된 세 개의 USB<-->RS485 어댑터가 필요할 수 있습니다.

추가 중간/낮은 위험 문제

이러한 문제는 단독으로 악용 가능하지는 않지만 프로토콜, 구현 또는 전체 시스템의 약화를 나타냅니다.

  • MAC은 '오버헤드 감소'를 위해 32비트로 잘립니다. 이는 실제 악용 가능 범위에 거의 (하지만 우리 계산으로는 완전히는 아닙니다) 근접합니다.
  • MAC에서 파생된 IV도 유사하게 32비트 엔트로피로 축소됩니다. 이로 인해 IV 재사용이 발생하며 이는 프로토콜에 큰 위험 신호입니다.
  • 세션 키는 컨트롤러 RNG 논스에서 48비트 엔트로피만을 사용하여 생성됩니다. 그러나 관찰하는 공격자가 오프라인에서 열거하는 것은 불가능해 보입니다. (단, 우리가 놓친 것이 있다면 이는 심각한 문제가 됩니다.)
  • 시퀀스 번호는 2비트로만 구성되어 충분한 활성도를 제공하지 않습니다.
  • CBC 모드 암호화가 사용됩니다. GCM이 네트워크 프로토콜에 더 적합한 최신 블록 암호 모드입니다.
  • SCS 모드 15 및 16은 본질적으로 '널 암호'이며 존재해서는 안 됩니다. 데이터를 암호화하지 않습니다.
  • OSDP 명령어 바이트는 보안 채널 세션 중에도 항상 암호화되지 않은 상태로 유지됩니다. 이는 공격자에게 큰 이점이며 공격 도구를 훨씬 쉽게 작성할 수 있게 합니다. 즉, 공격자는 패킷이 암호화되어 있더라도 전송되는 패킷의 '유형'을 항상 볼 수 있습니다. 공격자는 사람이 배지로 인증하는 시기, LED가 켜지는 시기 등을 알 수 있습니다. 이는 평문으로 전송되어서는 안 되는 정보입니다.
  • SCBK-D(하드코딩된 '기본' 암호화 키)는 보안을 제공하지 않으므로 제거해야 합니다. 이는 오해를 불러일으키고 잘못된 보안 감각을 제공할 뿐입니다.
도구 다운로드