아이폰 강좌 96. 탈옥폰, 배터리가 광속으로 단다면?


광속으로 다는 배터리

iOS 5로 판올림한 뒤 겪은 골치 아픈 문제는 세가지다. 먼저 배터리 소모량이다. iOS 4에 비해 정말 빨리 단다. iOS 5.1에서는 배터리 문제가 개선된 것으로 나오지만 나는 비슷했다. 두번째 문제는 자주 사용하는 토털코맨더 플러그인인 'T-Pot'이 동작하지 않았다. 마지막 문제는 T-Pot이 동작하지 않아 사용한 OpenSSH가 사용하다 보면 접속이 되지 않는 문제가 있었다. 현재는 세가지 문제 모두 해결했다. 그리고 배터리가 빨리 다는 문제와 OpenSSH 문제는 모두 탈옥폰이 바이러스에 감염되었기 때문에 발생한 현상이 었다. 따라서 이 글에서는 이 바이러스 증상과 치료하는 방법을 쓰도록 하겠다.

목차

iOS 5에서 발생한 문제들!

iOS 5.1 개선사항

세 가지 문제 모두 불편했기 때문에 iOS 5로 갈아 탄 뒤 계속해서 인터넷을 검색해 봤지만 신기하게 나와 같은 문제를 겪고 있는 사람은 없는 듯했다. "Could not start SSH session. Failed getting banner"로 검색해 보면 결과는 많이 뜬다. OpenSSH 관련된 문제이기 때문이다. 그러나 여기에 아이폰과 탈옥(Jailbreak)을 추가해서 검색하면 결과가 거의 없었다. T-Pot 문제도 비슷했다. T-Pot과 오류 메시지("Missing library - Could not load iTunesMobileDevice.dll")로 검색해 보면 T-Pot 개발자 사이트외에 일부 사이트가 검색되지만 마땅한 원인을 찾을 수 없었다.

문제 원인은 바이러스!

이러다 우연히 이 세 가지 문제를 해결하는 방법을 찾아냈다. 일단 탈옥폰에서 배터리 소모가 빠른 것OpenSSH에서 오류가 뜨는 원인은 같았다. OpenSSH가 동작하지 않아 몇번씩 아이폰을 갈아 엎었다. 지난 3월 17일에도 아이폰을 갈아 엎었다. 아이폰 4Siri를 설치했다. 그런데 성능이 만족스럽지 못해서 삭제하다 아이폰이 먹통이 됐기 때문이다. 그리고 19일 OpenSSH로 접속하려고 하자 "Could not start SSH session. Failed getting banner"라는 메시지가 떴다. 조금 의외였다. 이런 메시지가 뜨는 날짜가 정해져 있는 것은 아니지만 이렇게 빨리 뜨는 것은 예상하지 못했기 때문이다.

또 갈아 엎는 것도 귀찮아서 이번에는 직접 문제를 해결하기로 작정했다. "Could not start SSH session. Failed getting banner"라는 메시지가 뜨고 OpenSSH를 다시 설치하면 일단 정상 동작한다. 바로 이 부분에서 착안했다. 어떤 오류인지 모르겠지만 OpenSSH 데몬을 죽이는 것이 있을 것으로 생각했다. 그래서 매번 다시 설치하기 보다는 OpenSSH 데몬만 필요할 때마다 기동하는 방법을 찾았다. 아이폰에서 데몬 PLIST는 다음 두 디렉토리에 설치된다.

/Library/LaunchDaemons /System/Library/LaunchDaemons 

/System/Library/LaunchDaemons 바이러스에 걸린 뒤 증상

아무튼 이 바이러스를 치료하는 방법은 간단하다. 기본적으로 바이러스가 만든 파일을 삭제한 뒤 아이폰을 재부팅하면 치료가 된다. 다만 D형은 시디어(Cydia) 파일까자 감염시키기 때문에 파일을 삭제한 뒤 시디어를 재설치해야 한다. 일단 바이러스 제거를 위해서는 OpenSSH에 접속할 수 있는 터미널 프로그램(Putty)이 PC에 설치되어 있거나 아이폰(iPhone)에 MobileTerminal 어플이 설치되어 있어야 한다. 여기서는 시디어 어플인 MobileTerminal이 설치되어 있는 것을 가정하고 설명하겠다.

또 파일 삭제는 굳이 터미널에서 작업하지 않아도 된다. iFunBox, iSprit, T-Pot 플러그인처럼 아이폰 파일 시스템에 접근할 수 있는 프로그램으로 삭제해도 된다. PuttyMobileTerminal과 같은 콘솔 프로그램은 관리자(root) 암호를 바꾸고 시디어 어플을 다시 설치하기 위해 필요한 것이다. 다만 이들 프로그램에 대한 사용 방법은 따로 설명하지 않겠다. 탈옥폰을 사용하고 있다면 이 정도의 어플은 이미 능수능란하게 사용할 것으로 생각하기 때문이다. 마지막으로 OpenSSH 접속시 오류 메시지가 뜬다면 시디어에서 다시 설치한 것을 전제로 하겠다.

  1. 관리자로 로그인
    아이폰에서 모바일 터미널을 실행한 뒤 관리자로 로그인 하기 위해 명령행에서 su 명령을 실행한다. 이어지는 프롬프트에서 root 암호인 'alpine'를 입력하면 관리자로 로그인 된다.

    su alpine 
  2. A~D형 변종파일 삭제
    꼭 삭제해야 하는 파일은 poc-bbot, sshpass, com.ikey.bbot.plist, bbot.lock이다. 나머지 두개의 .JPG 파일은 굳이 삭제하지 않아도 된다. 또 일부 변종에서는 아예 .JPG 파일이 없는 때도 있다.

    rm /bin/poc-bbot rm /bin/sshpass rm /System/Library/LaunchDaemons/com.ikey.bbot.plist rm /var/lock/bbot.lock rm /var/log/youcanbeclosertogod.jpg rm /var/mobile/LockBackground.jpg 
  3. D형 변종 확인
    명령행에서 다음 명령을 실행한 뒤 파일이 있다면 D형 변종이다. D형 변종이라면 4단계를 진행하고 A~C라면 5단계를 진행한다.

    ls -al /usr/libexec/cydia/startup-helper 
  4. D형 변종 파일 삭제
    명령행에서 다음 명령을 차례로 실행한다. 삭제하는 파일 중 com.saurik.Cydia.Startup.plist과 startup 파일은 시디어를 설치하면 정상적으로 설치되는 파일이다. 그런데 이 파일까지 감염되었기 때문에 일단 바이러스 파일을 삭제하고 apt-get 명령을 이용해서 시디어를 삭제/재설치[4]해야 한다.

    rm /usr/libexec/cydia/startup-helper rm /usr/libexec/cydia/startup.so apt-get remove cydia apt-get install cydia 
  5. 루트 암호 변경
    OpenSSH를 설치하지 않았다면 암호를 바꾸지 않아도 감염되지는 않는다. 그러나 보안상 바꾸는 것이 좋다. 또 ikey 바이러스는 앞에서 설명한 것처럼 'alpine'라는 암호를 바꾸지 않은 때만 감염된다. 따라서 OpenSSH를 사용한다면 보안상 root 암호를 바꾸는 것이 좋다. 뻔히 알면서도 바꾸지 않아 바이러스에 감염된 것은 본문에도 있듯이 T-Pot이 정상적으로 동작할 때는 OpenSSH를 사용할 필요가 없었기 때문이다. 아무튼 암호를 바꾸기 위해 명령행에서 passwd를 실행하고 새로운 암호(New password, Retype new password)를 입력한다.

  6. 아이폰 재부팅
    바이러스 파일을 삭제하고 아이폰을 다시 부팅하면 ikey 바이러스를 제거할 수 있다. 만약 제거한 뒤에도 OpenSSH가 동작하지 않는다면 시디어에서 OpenSSH를 다시 설치하면 된다.

남은 이야기, T-Pot

앞에서 설명했지만 iOS 5로 판올림한 뒤 골치를 썩었던 문제는 3가지였다. 이 중 두 가지(배터리 문제, OpenSSH 문제)는 본문에서 설명한 것처럼 ikey 바이러스를 삭제하면 해결된다. 토탈코맨더에서 T-Pot으로 접속할 때 "Missing library - Could not load iTunesMobileDevice.dll"라는 오류 메시지가 뜨는 부분은 의외의 방법으로 해결됐다. 이 문제를 해결하기 위해 인터넷을 검색하고, 파일을 패치하고 레지스트리를 바꾸어 봤다. 또 이외에 상당히 여러가지 방법을 시도해 봤다. 그러나 모두 실패했다.

다만 나와 같은 문제를 겪고 있는 사람이 있다면 iOS 5가 출시된 작년 10월이라면 몰라도 무려 반년이 지난 지금이라면 비슷한 고충을 호소하는 사람이 있을 것으로 생각했다. 그런데 의외로 이런 사람이 없었다. 따라서 이 문제가 TC 8.0 베타의 문제가 아닐까 하는 생각이 들었다. 일단 토탈코맨더의 공식 최신판인 7.57을 별도의 폴더에 설치하고 T-Pot으로 접속해 봤다. 그런데 7.57로 접속하자 아무 문제없이 T-Pot으로 아이폰에 접속할 수 있었다[5]. 7.57로 접속이 가능한 것을 보고 이번에는 8.0 베타를 별도의 폴더에 다시 설치한 뒤 같은 방법으로 시도해 봤다.

역시 접속이 가능했다. 결국 8.0 베타에서 접속이 되지 않는 문제는 기존에 설치된 확장(WXC, WLX와 같은 플러그인이 아니라 DLL 형태의 확장)과의 충돌이라는 생각이 들었다. 따라서 이런 확장을 모두 제거하고 토탈코맨더를 실행하자 생각대로 8.0 기존판에서도 T-Pot을 통해 접근할 수 있었다. 따라서 위와 같은 문제가 발생한다면 토탈코맨더의 확장 중 T-Pot과 충돌이 있는 확장을 찾아 보기 바란다. 어떤 확장이 원인인지는 아직 찾지 못했다.

관련 글타래

  1. iOS 5.1에서는 이 바로가기가 막혔다. 모르긴 해도 5.2 정도에서는 설정을 바로 켜고 끌 수 있는 기능이 추가될 것으로 예상해 본다. 
  2. 널리 알려진 iFunBox, 토탈코맨더(Total Commander)처럼 두 패널로 관리할 수 있는 iSprit등 아이폰 파일 시스템에 접근할 수 있는 프로그램은 많다. 몰라서 토탈코맨더를 쓰는 것이 아니다. 나서기를 위해 추가한다. 
  3. 트위터 알림이 많기 때문에 12시 부터 새벽 6시까지는 트위터 알림을 끄고 사용한다. 
  4. 나는 다시 설치할 필요가 없었지만 확인을 위해 삭제 뒤 다시 설치해 봤다. 그런데 다시 설치하니 시디어가 실행되지 않았다. 이점 주의하기 바란다. 
  5. 참고로 토탈코맨더의 설정 파일인 wincmd.ini는 같은 파일을 사용했다. 


Powered by Textcube