
iPhone OS X Architecture: Disk, Shell, and Password Security
Saturday, July 14, 2007
아이폰 아키텍쳐 시리즈로서, 아이폰의 코어 OS 보안이 어떤지 알아본다.
Tampering with the Kernel's Secret Recipe.
아이튠스가 소프트웨어 복구를 할 때, 아이폰에 디스크 이미지 두 개를 복제한다. 해커들은 이 DMG 파일을 꺼내서 파일 목록을 알아볼 수 있었다. 이 DMG 파일은 맥오에스텐 설치 DVD에 있는 것과 유사하다.
지금까지 아이폰에 설치된 소프트웨어의 수정본에 별다른 발전은 없었다. 워낙에 커널의 비밀 레시피가 깊숙이 숨겨져서, 애플의 프라이빗 키가 없는 소프트웨어와는 통신을 거부해서이다.
커널은 해커들이 볼 수 있는 소프트웨어 이미지의 일부가 아니다. 커널은 자체 보안화된 디스크 이미지에 들어있으며, 이를 깨려면 상당한 작업이 필요한 것으로 보인다. 깬다 하더라도 그것이 끝은 아니다. 크랙이 더 필요하다. 너무나 긴 키라서 암호 추측이 완전히 불가능하기 때문이다.
아이폰은 보안화된 커널 이미지를 RAM으로 불러들여와서 부팅하고, 다른 모든 파일이 들어있는 사용자용 디스크 이미지를 불러들인다. 커널은 닫혀있기 때문에, 수정한다거나, 심지어 열람도 불가능하다. 보안이 갖춰져 있어서, 커널은 보안화된 어떠한 디스크 이미지에게도 명령을 내리는 과정도 보안화되어있다.
크래커들이 아이폰 애플리케이션을 추가시키거나, 변화시키기 위해 디스크 이미지 소프트웨어를 수정해낸다 해도, 디지탈 사인하고 맞지 않을 것이며, 커널 자신이 읽기를 거부할 것이다.
Root Password Hacked?
아이폰의 "루트"와 "유저" 암호는 존재한다. 아이폰 또한 오에스 텐이기 때문이다. 그러나 아이폰에서 다중 계정은 쓸모가 없지만, 오에스텐 자신이 유닉스라는 다중 사용자 환경이고, "루트"와 일반 사용자 별로 프로세스를 나누기 위해 필요하다.
이 암호는 BSD 플랫(flat) 파일에 저장되며, 복구용 디스크이미지 파일을 보면 쉽게 얻을 수 있다. 즉, “iPhone root passwords hacked!”는 좋은 머릿기사감이지만, 여기서 얻은 암호를 활용할 방법이 없기에, 별 의미는 없다.

아이폰은 원격 커맨드라인 접속을 제공하지 않는다. 로컬 타미널 셸도 제공하지 않으며, 어떠한 TCP 포트 트래픽에도 반응하지 않기 때문에, 이들 암호로 할 수 있는 일이 없다.
애플티비와는 사못 다르다. 애플티비는 사용자 암호를 통해 기기 접속과 새 소프트웨어 로딩을 쉽게 한다.
[
AppleTV 인사이드]
The Fully Interactive Shell!
두 번재로 머릿기사를 장식한 아이폰 기사는, 아이폰 하드웨어에 직접 통신하는 시리얼 콘솔이었다. "인터랙티브 셸로우 완전한 콘솔 접속"이라고들 나왔는데, 실제로는 "명령을 넣었더니, 옵션 목록이 나오더라"이다.
맥오에스텐 터미널과 유사한 콘솔 셸 접속이 아니었다. 크래커들은 정말로 아이폰의 부트로더를 발견하고 있었다. 인텔 맥의 EFI나 PowerPC의 OpenFirmware처럼, 아이폰도 디스크이미지를 얻고, 로딩할 OS를 판별하며, 부팅 환경에 따라 시작하는 세련된 시스템을 갖고 있다.
PC는 훨씬 간단한 BIOS로 이 작업을 한다. BIOS는 다른 OS를 돌리기 위해 필요한 작업이 거의 없다. 그런데 PC에서 윈도 말고 대안이 있던가? 아, 맞다. 리눅스가 있다. 해커들은 워낙에 PC 기초를 단단히 알고 있기에, 이들은 세련된 부트로더를 찾아내기만 하면, 유용한 접속법이 나오잖을까 생각하였다.

하지만 그들이 알아낸 것이라고는 부트로더가 거부하는 리퀘스트 뿐이었다. 사인된 소프트웨어만을 읽기 때문에, 아이폰 파일을 돌리는 것 외에, 얻어내기는 다소 어렵다.
[
BIOS PC를 뛰어넘은 애플 펌웨어]
[
Hackint0sh Progress Report - Industry Watch]
Running as Root.
루트상에서의 프로세스가 잠재적으로 데스크톱에 완전한 접근권을 터 주는 길이 된다면서, 아이폰의 루트 계정 사용에 대한 비난이 있다. 루트를 사용하게 되면 무제한적인 컨트롤이 가능해진다.
그러나 비판만큼, 아이폰에서 뭐라도 할 만한 악성코드를 집어 넣을 방법이 거의 없다. 애플이 아이튠스를 통해 하는 파일 복사는, 사인 환경을 요구하여 막혀있다. 그 외의 방법을 알아내기란 매우 어렵다.
- 현재로서는 디스크모드가 없다.
- OPEX 파일 전송을 위한 블루투스 지원이 없다.
- 사파리나 다른 인터넷 애플리케이션에서 파일을 다운로드할 방법이 없다.
[Update: Ecamm의 iPhoneDrive 소프트웨어를 지적한 독자들이 있다. 이 소프트웨어는 파일 복사를 해 준다. 실제로 아이포드의 디스크모드처럼 작동하기는 하지만, 아이폰의 오에스텐이 인식하는 복제는 아니다. 즉, 아이폰 상에서 보거나 돌릴 수 없다는 의미이기에, 역시 보안에 대한 효과는 없다.
]
[
Ecamm Network: iPhoneDrive]
[
iPhone Telephony Armageddon - Rixstep]
The ARM Holding Up iPhone's Security Breeches.
쉽게 상상할 수 있는 유일한 보안 약점은 다음과 같다.
- 사파리의 HTML 렌더링 버그를 활용하여, 브라우저를 콘트롤한 다음, 실행 코드를 투입한다. 문제가 있다. 사파리는 문제가 있어 보이는 경우, 스스로 충돌하여 재시동해버린다. ARM 전용 코드를 알려지지 않은 시스템에 투입시키는 것도 어려울 것이다.
- Mail 안에 있는 그래픽이나 HTML 렌더링을 활용하여, 실행코드를 투입시킨다. 사파리와 마찬가지의 문제점을 갖는다.

CanSecWest에서, 사파리를 통해서는 누구도 루트 접근권을 얻을 수 없었다. 유일한 공격은 이미 사용자 수준의 접근권을 받은 다음, QuickTime for Java 브릿지를 공격한 것이었다. 자바에는 QuickTime for Java도 없다. 오로지 JavaScript로 해야 할 것이다. 게다가 스스로 충돌을 일으켜서 재시동하기 전에, 즉석에서 ARM용으로 해주어야 한다. 맥가이버나 할 만한 일이다.
[
InfoWorld의 맥 보안 헛발질]
iPhone vs Windows on Security.
아이폰이 시장에서 대량 확산되면, 아이폰의 이메일과 웹서비스도 마이크로소프트 윈도 꼴이 나지는 않을까?
다양한 보안 전문가들은 시장점유율과 보안이 상관 있다며, 돈받고 말을 하는데, 사실 보안은 시장점유율의 결과가 아니다. 아이포드와 플레이스테이션은 바이러스나 웜에 전염되지 않았다.
마이크로소프트의 Outlook을 쉽게 침투하여, 바이러스나 웜 확산에 활용하는 이유는, Outlook 자신이 마이크로소프트 Visual Basic for Applications용 스크립트를 포함하여, 코드를 돌리기 위한 디자인이기 때문이다.
Outlook은 이메일 첨부 코드를 기꺼이 돌리며, VBA를 활용할 기회까지 준다. 즉, 주소록에 있는 모든 이메일에 악성 스크립트를 보낸다. 확산속도로 보면 최적의 환경이다. 문제는 이메일이 아니다. 마이크로소프트의 보안에 무지한 그 구현때문이다.
인터넷 익스플로러 또한 마이크로소프트의 ActiveX 아키텍쳐에 따라 임베딩된 프로그램을 자동실행시킨다. 사용자는 자신이 빌 게이츠가 마련해준 지뢰밭에 들어선지도 모르는 채, 프로그램이 자동 실행된다.
하지만 아이폰의 사파리와 메일은 JavaScript 외의 파일이나 첨부코드를 돌릴 어떠한 메커니즘도 갖고 있지 않다. 디자인 자체가 윈도보다 더 안전하다.
[
Mac OS X에서는 풀렸지만 윈도우즈에는 여전한 구조적 오류 다섯 가지]
Consider the Source.
윈도는 원격통제에서부터 스크립트 실행, 애플리케이션 실행 등, 그 방법이 많다. 보안이 유지됐다고 가정한 사무실 내의 사용을 염두에 둔 방식이기에, 보안에 대한 감각이 없다. 덕분에 광고/스파이웨어 업자들은 윈도를 이용하여 사업을 벌이기 시작했다.
아이폰은 윈도와 공유하는 부분이 없다. 현재 어떤 네트웍 트래픽도 듣지 않고, 개발도 허용하지 않는 디자인이다. 엔지니어링 자체가 보안을 염두에 두었다.

가트너의 켄 던레이니(Ken Dulaney)는 아이폰에 "파이어월이 없다"며 불만을 제기하였다. 웃기는 일이다. 자신이 이해하는 바나, 지식이, 자신의 하는 말이 못따라가고 있다. 바보처럼 보이는 순간이다.
로브 엔더를(Rob Enderle)이나 여타 다른 월급받는 윈도 열광론자들과 마찬가지로, 던레이니는 윈도가 엔지니어링의 빛나는 성과가 아니라는 점을 모르거나, 아니면 인정하고 싶어하지 않는 모양이다. 직장 생활 내내 치어리더 역할을 했던 상대가 실제로는 절대적으로 무능하다는 사실을 드러내기가 참 어렵긴 할 것이다.
[
Secret iPhone Details Lost in a Sea of Hype and Hate]
[
iPhone security chatter is only a distraction - Jon Espenschied, Computerworld]
How Things Might Change.
현재의 아이폰 소프트웨어는 아이폰을 제 때에 내놓기 위해 나왔다. 더 완전하게 공개가 되었더라면 잠재적으로 보안 문제를 낼 수 있는 부분도 갖고 있다. 신기능은 앞으로 한 번에, 미완성 베타로 나오지 않고, 완성된 기능으로 차츰 등장할 것이다.
블루투쓰가 현재 상태보다 훨씬 세련되게 나올 것임은 분명하다. 현재는 헤드셋 링크로만 쓰이지만, 헤드셋을 쓰지 않는 경우, 블루투쓰를 꺼서 배터리 수명을 늘릴 수 있다. 앞으로는 분명 무선 헤드폰이나 자동차 네비게이션, GPS처럼 다른 장비에 접속할 수 있게 될 것이다. 물론 다른 옵션도 있다. 다음 기사는 블루투쓰에 대해 더 자세히 다뤄보겠다.
아이폰은
봉주르 지원의 계획만 갖고 있다. 봉주르는 애플의 핵심 기술이며, 엄청난 잠재성을 제공한다. 다음 기사에서 봉주르의 잠재성에 대해서 알아보겠다.
새로운
네트워킹 서비스도 있다. 아이폰은 여러 보안 전문가와 크래커들이 친숙해하는 BSD를 돌린다. 물론 ARM용이기는 하다. 애플이 아이폰의 네트워킹 기능을 개방시키면, 그 전에 보안 주의를 해야 할 것이다. 시스템 내부로의 접속을 허용할 수도 있기 때문이다. 다음 기사는 커널 바깥에 있는 아이폰의 BSD 유닉스 유저랜드에 대해 개괄적으로 알아본다.
Like reading RoughlyDrafted? Share articles with your friends, link from your blog, and subscribe to my podcast!
Did I miss any details?
iPhone OS X Architecture: Disk, Shell, and Password Security