보안 제품정보


[블랙햇 2014] 패치되지 않은 취약점으로 iOS 탈옥하기 2014.08.08

장영진 씨, iOS 관련 주제로 블랙햇에서 2년 연속 강연


[보안뉴스 김지언] 최신 글로벌 보안트렌드와 핫이슈를 조망할 수 있는 ‘블랙햇 2014’가 8월 2일부터 7일(현지시각)까지 미국 라스베가스 MANDALAY BAY 호텔에서 진행됐다.


블랙햇(Black Hat)은 1997년 처음 개최된 컨퍼런스로 매년 최신 해킹 기법 및 보안 이슈를 공개해 주목받고 있다. 특히, 블랙햇 2014에서는 이병영·장영진·오정욱 씨 등 3명의 한국인 강연자가 발표를 진행해 국내에서도 관심이 뜨겁다.


이 가운데 장영진 씨는 지난해 iOS 기기에 악성코드를 몰래 심을 수 있는 충전기를 개발해 화제를 모은데 이어 이번에는 이병영 씨, Tielei Wang 씨와 공동으로 연구한 패치되지 않은 취약점을 이용한 iOS 탈옥 재구성’이라는 주제로 발표를 진행했다.


발표에 앞서 장영진 씨는 탈옥에 사용된 취약점은 직접 찾은 것이 아니라 기존에 발견된 것”이라며, 이 취약점 가운데 애플에서 패치하지 않은 취약점을 이용해 탈옥을 할 수 있는지에 의문을 품어 연구를 시작하게 됐다”고 밝혔다.


이어 그는 “이번 연구는 2013년 12월에 나온 탈옥툴 evasion7이 어떤 단계를 거쳐 탈옥을 한 것인지, evasion7에 사용된 8가지 취약점이 어떤 것인지, iOS 7.1에서 evasion7에 사용된 취약점 중 어떤 것을 패치하고 패치하지 않았는지 등을 분석해 evasion7과 유사한 방법으로 탈옥을 성공할 수 있느냐에 관한 것”이라고 전했다.


먼저 그는 iOS 탈옥이 어려운 이유를 설명했다. 그는 첫번째 이유로 펌웨어가 암호화되어 있기 때문에 탈옥된 기기가 없으면 분석 자체가 힘들기 때문이라고 전했다. 디버깅, 리버싱 등을 모두 못하는 상태로 바깥에서 어떤 값을 넣었을 때 어떻게 동작하는지만을 보고 해킹해야 한다는 것이다.


두 번째로는 그는 커널이 보호되어 있기 때문이라고 전했다. iOS는 리눅스 등 타 OS와는 다르게 루트권한이 있더라도 커널에 코드를 넣을 수 없다. 즉 루트 권한을 획득했더라도 커널 익스플로잇을 해야 한다는 얘기다.


세 번째로는 코드사인이 안된 바이너리를 올리기 힘들어 코드사인 체크를 우회해야 한다는 점을 들었다. 그러나 코드사인을 우회할 수 있는 유일한 RWX(읽기, 쓰기, 실행) 페이지도 사파리와 같은 특정한 프로세스에만 허용되어 있어 탈옥이 힘들다는 것이다.


장영진 씨에 따르면 evasion7의 경우 8개의 취약점을 이용해 탈옥에 시도했다. evsion7에서 사용된 취약점은 다음과 같다(굵은 글씨 - iOS 7.1에서 아직 패치 안됨).

 

1. Bypassing code signature check

2. Installing an app at outside-of-container

3. Bypassing filesystem sandbox in afcd

4. Overwriting critical files using installd

5. Injecting dylib through com.apple.mobile_installation.plist

6. Use symlink to downgrade permission of a file

7. Use afcd -S to directly write into block device

8. A kernel vulnerability

 

그러나 이중 3개를 제외한 나머지는 iOS 7.1에서 이미 패치된 상태였다. 이에 장영진 씨는 패치되지 않은 3개의 취약점과 함께 패치된 취약점과 유사기능을 하는 취약점을 찾아 evasion7과 같은 방식으로 iOS 7.1.1 탈옥을 시도했다. 장영진 씨가 iOS 7.1.1 탈옥을 진행한 순서는 다음과 같다.


1. Install an app at the outside-of-container

2. Edit /var/mobile/Media/Downloads/ WWDC.app/WWDC to a hashbang (#!) file

3. Inject dylibs into afcd using installd vulnerablility

4. Forge a dylib to have constructor, then sign with a develoer license

5. Create Symlink at (데몬) to/dev/rdisk0s1s1

6. Dump root partition, then modify it

7. Execute an app to drop /tmp/ bypass_codesign

8. Kill daemons with lockdownd


발표를 마치며 장영진 씨는 공개된 취약점을 이용했기에 탈옥하는데 많은 시간이 걸리지 않았다”며 공개된 자료를 이용해 공부한다면 어렵지 않게 iOS 탈옥할 수 있다”고 밝혔다.

[김지언 기자(boan4@boannews.com)]


<저작권자: 보안뉴스(http://www.boannews.com/) 무단전재-재배포금지>