콘텐츠로 건너뛰기

독점 인터뷰: SMS를 통한 iPhone 해킹

    1652314862

    소개

    우리는 최근에 Independent Security Evaluators의 보안 전문가 Charlie Miller와 최근에 공개된 iPhone 취약점에 대해 이야기를 나누었습니다.

    Alan: Charlie, 시간 내주셔서 감사합니다. SMS 취약점에 대해 간단히 이야기하는 것으로 시작하지 않으시겠습니까?

    Charlie: iPhone 버그는 전화기에 일정량의 데이터가 있다고 말한 다음 원하는 만큼 많이 보내지 않는 것과 관련이 있습니다. 데이터를 읽는 함수는 오류를 나타내기 위해 -1을 반환하기 시작하지만 프로그램의 다른 부분은 이 오류를 확인하지 않고 실제로 -1이 메시지의 데이터라고 생각합니다. 이것은 개별적으로 프로그램의 각 부분이 올바르게 보이지만 상호 작용하는 방식이 위험하기 때문에 보안 코드를 작성하는 것이 얼마나 복잡한지 보여줍니다!

    어쨌든 보내는 내용에 따라 다른 나쁜 일이 발생할 수 있습니다. 한 지점에서 -1바이트(0xffffffff로 표시됨-매우 큰 숫자로 표시됨)를 할당하려고 하기 때문에 종료할 수 있습니다. 이것은 전화를 네트워크에서 일시적으로 끊는 서비스 거부입니다.  

    BlackHat 강연 중에 우리는 청중의 자원 봉사자에게 10초마다 이 서비스 거부 메시지를 보내 네트워크에 접속하지 못하게 했습니다. 불행한 결과로 메시지는 네트워크에 표시되었고 그의 전화는 통화 후 몇 시간 동안 계속 꺼져 있었습니다. 그 이후로 그는 다시 일어섰습니다.

    Alan: 독자 참고: Charlie가 자원 봉사자가 필요하다고 말할 때마다 눈을 마주치지 마십시오. 그래서, 어떻게 메시지를 보냈습니까? 다른 iPhone의 SMS 인터페이스를 통해 보내거나 “telephone number@attwireless ” 방식 으로 이메일을 보내는 것과 같은 작업을 하고 있습니까?

    Charlie: 캐리어 네트워크를 통해 SMS를 보내기 위해 GSM AT 명령을 사용하여 모뎀과 통신하는 공격 iPhone에 작은 응용 프로그램이 있었습니다. 버그를 테스트하고 찾기 위해 공동 발표자인 Collin Mulliner가 작성한 멋진 주입 프레임워크를 사용했습니다. 이 프레임워크를 사용하면 TCP를 통해서만 데이터를 전송하여 SMS 메시지 구현을 테스트할 수 있습니다. 이렇게 하면 이동통신사 네트워크를 통해 데이터를 보낼 필요가 없고 비용도 들지 않으며 많은 메시지를 매우 빠르게 테스트할 수 있습니다.

    Alan: 서비스 거부에서 전면적인 공격으로 어떻게 전환합니까?

    Charlie: 최악의 경우는 프로그램이 연결된 메시지를 처리하는 방법과 관련이 있습니다. 한 번에 140바이트 이상을 보내는 방법입니다. 일련의 메시지로 긴 메시지를 보낼 수 있으며 전화기는 이를 하나의 긴 문자열로 재구성합니다. 데이터의 값을 기반으로 배열에 액세스합니다. -1이라고 생각하는 경우 실제로는 배열이 아닌 배열 앞의 메모리에 액세스합니다. 올바르게 설정하고 까다롭게 설정하면 실제로 이를 활용하여 장치를 완전히 제어할 수 있습니다.

    전체 공격에는 500개 이상의 메시지가 필요하지만 피해자는 전화에 표시되지 않기 때문에 메시지가 전송되고 있다는 사실을 알지 못합니다. 이러한 메시지의 대부분은 “올바른” 설정과 관련이 있습니다. 그 중 16개는 실제로 범위를 벗어나 배열에 액세스합니다.

    0 0 votes
    Rating post
    Subscribe
    Notify of
    guest
    0 comments
    Inline Feedbacks
    View all comments
    0
    Would love your thoughts, please comment.x
    ()
    x