비디오: [ì¤íì¸í°ë·°]'ê°ìí ì¤í 리ì§'(IP SAN)ì ê´í 5ê°ì§ ê¶ê¸ì¦ (십월 2024)
디지털 서명이 깨지지 않음
문서 나 파일을 디지털로 서명하는 요점은 파일이 수정되지 않았 음을 증명하는 것입니다. 이 프로세스는 일종의 공개 키 암호화를 사용합니다. 개인 키로 파일을 암호화하여 파일에 디지털 서명합니다. 공개 키를 사용하여 암호화 된 파일을 해독 할 수 있다는 사실은 변조가 발생하지 않았다는 증거입니다. BlueBox는 디지털 서명을 변경하지 않고 파일을 실제로 수정하는 방법을 찾았습니다. 이는 전체 암호화 산업에 엄청난 타격을 주었을 것입니다. 그러나 그들은하지 않았다.
BlueBox는 몇 주 안에 Black Hat 컨퍼런스에서 그들의 연구에 대한 자세한 내용을보고 할 것입니다. 그러나 ViaForensics 연구원 인 Pau Oliva Fora는 취해진 접근 방식을 보여주는 개념 증명 코드를 게시했습니다.
사실 매우 간단합니다. APK 파일은 널리 사용되는 ZIP 보관 알고리즘 버전을 사용하여 압축됩니다. 대부분의 ZIP 구현은 하나의 아카이브에서 두 개의 동일한 이름의 파일을 허용하지 않지만 알고리즘 자체는 그러한 가능성을 금지하지 않습니다. 앱의 디지털 서명을 확인할 때 Android OS는 첫 번째 일치하는 파일을 확인하지만 실제로 파일을 실행하고 시작할 때 마지막 파일을 가져옵니다. 앱을 트로이 제이션하려면 앱 내에 이미 존재하는 이름을 사용하여 악성 코드를 코드에 삽입하면됩니다. Fora의 데모는 수십 줄의 Java 코드입니다.
또 다른 구조 공격
안드로이드 시큐리티 스쿼드 (Android Security Squad)라는 한 중국 연구원 블로그는 시연이 흥미롭고 검증 과정을 방해 할 수있는 다른 방법을 찾기 시작했다. 구글 번역 게시물을 읽는 것은 약간 어렵지만, 공격은 Computer Science 101 수준의 개념에 의존하는 것으로 보입니다.
컴퓨터 프로그램은 카운팅 숫자를 고정 된 크기의 비트 모음에 저장합니다. 예를 들어, 8 비트를 사용하면 0에서 255까지의 숫자를 나타낼 수 있습니다. 음수를 나타내야하는 경우 가장 오래된 규칙은 가장 왼쪽의 비트가 음수를 나타내는 것입니다. 8 비트를 사용하면 -128에서 127 사이의 숫자를 나타낼 수도 있습니다. 이진수 11111111은 부호없는 숫자인지 부호있는 숫자인지에 따라 255 또는 -1을 나타냅니다.
Android Security Squad는 APK 파일 헤더 형식을 살펴보고 양의 오프셋으로 가정하지만 부호있는 정수로 저장된 데이터 필드를 찾았습니다. 이 필드를 특정 음수 값으로 설정하면 APK 로더가 이미 확인 된 디지털 서명 코드가 아닌 악성 코드를 실행합니다. 좋습니다. 조금 더 복잡하지만, 그것이 작동하는 방식과 비슷합니다.
구글 플레이와 함께 스틱
이러한 핵 중 어느 것도 실제로 안드로이드 디지털 서명 메커니즘을 파괴하지 않습니다. 오히려 둘 다 APK 구조의 단점을 이용하여 디지털 서명을 무의미하게 만듭니다. 또한 이들 중 어느 것도 트로이 목마 앱이 Google의 분석을 몰래 빠져 나갈 수 없게합니다. Google은 "마스터 키"공격을 사용하여 트로이 목마 앱을 필터링하도록 Google Play를 특별히 업데이트했습니다. 이 단계가 없어도 표준 보안은 두 유형의 트로이 목마 앱을 거의 확실하게 차단합니다.
교훈은 분명하다. 항상 합법적 인 소스에서 앱을 가져오고 항상 개발자 이름이 유효한지 확인하고 "알 수없는 소스"에서 앱을 설치할 수 없도록 휴대폰을 구성하십시오. 앱이 요청하는 권한에주의를 기울이고 의심스러운 설치를 중단 할 준비를하십시오. 네트워크 사업자가 Android 업데이트를 제공하는 경우 항상 설치하십시오. 그냥 상식입니다!