
OSDP 공격 도구 (그리고 엘프어로 '친구'를 뜻하는 단어)
OSDP 공격 도구 (그리고 친구를 뜻하는 엘프어)
OSDP는 암호화를 지원하지만 엄격히 요구하지는 않습니다. 따라서 연결이 전혀 암호화되지 않을 수도 있습니다. 공격 #1은 단순히 수동으로 수신하여 선로에서 카드 번호를 읽을 수 있는지 확인하는 것입니다.
컨트롤러와 리더가 암호화를 지원한다고 해서 반드시 사용하도록 요구하도록 구성되어 있는 것은 아닙니다. 공격자는 리더의 기능 응답 메시지(osdp_PDCAP)를 수정하여 암호화를 지원하지 않는다고 알릴 수 있습니다. 이 경우 일부 컨트롤러는 암호화 없이 그대로 진행합니다.
OSDP에는 리더와 컨트롤러 모두에 적용되는 준공식 '설치 모드'가 있습니다. 이름에서 알 수 있듯이 리더를 처음 설정할 때 사용하도록 되어 있습니다. 기본적으로 리더가 컨트롤러에게 기본 암호화 키(SCBK)가 무엇인지 물을 수 있도록 합니다. 컨트롤러가 지속적으로 설치 모드로 구성된 경우 공격자가 선로에 나타나 SCBK를 요청할 수 있습니다.
OSDP 샘플 코드에는 종종 하드코딩된 암호화 키가 포함되어 있습니다. 분명히 이는 사용자가 스스로 안전한 방식으로 키를 생성해야 하는 샘플을 의미합니다. 하지만 이는 사용자에게 설명되지 않거나 간단하게 만들어지지 않았습니다. 보안 분야에서 오래 일한 사람이라면 기본값이 실제 운영 환경에 그대로 있을 가능성이 높다는 것을 알고 있습니다.
따라서 공격 벡터로서 리더와 컨트롤러 간의 링크가 암호화된 경우 일반적인 취약한 키를 열거해 볼 가치가 있습니다. 이는 128비트 AES 키이므로 모두 열거할 수는 없습니다. 또는 의미 있는 부분조차도 열거할 수 없습니다. 하지만 우리가 할 수 있는 것은 누군가 키를 하드코딩할 때 볼 수 있는 몇 가지 일반적인 패턴을 시도하는 것입니다.
OSDP에는 인-밴드 키 교환 메커니즘이 없습니다. 이는 공격자가 다음을 수행할 수 있음을 의미합니다.
각 공격에 대한 개념 증명 코드는 attack_osdp.py에서 찾을 수 있습니다. 사용법에 대한 자세한 내용은 --help 명령어를 확인하세요. 이는 Python 스크립트이며 USB<-->RS485 어댑터(예: 이 제품)가 장착된 노트북에서 실행하도록 설계되었습니다. 따라서 이러한 어댑터를 구입하는 것이 좋습니다. 반드시 해당 모델일 필요는 없습니다.
테스트할 컨트롤러가 있다면 좋습니다. 그것을 사용하세요. 없다면 여기에 의도적으로 취약하게 만든 OSDP 컨트롤러인 vulnserver.py를 제공합니다.
attack_osdp.py의 일부 공격은 정상 작동하는 리더와 컨트롤러 사이에서 완전한 MitM 역할을 할 것으로 예상합니다. 이를 테스트하려면 브레드보드로 연결된 세 개의 USB<-->RS485 어댑터가 필요할 수 있습니다.
이러한 문제는 단독으로 악용 가능하지는 않지만 프로토콜, 구현 또는 전체 시스템의 약화를 나타냅니다.