잘 알려지지 않은 OS X 보안 체계의 한 기둥 'XProtect'

2013. 1. 23. 06:19    작성자: ONE™

들어가며

최근 기승을 부리고 있는 각종 악성코드의 위협에 대응하기 위해 애플은 최근 일련의 보안체계를 맥 운영체제에 도입해 오고 있습니다.

지난해 6월 이후부터 맥 앱스토어에 판매되는 모든 소프트웨어는 특별히 권한을 부여받지 않는 이상 함부로 타 소프트웨어나 시스템 기저에 접근이 할 수 없도록 샌드박스화가 의무화되었습니다. 또, 출처가 불확실한 곳에서 내려받은 소프트웨어가 시스템에 설치되는 것을 막는 ’게이트키퍼(GateKeeper)’ 도 최신 맥 운영체제 OS X 10.8 마운틴 라이언과 OS X 라이언 10.7.5 버전의 기본 기능으로 자리잡게 되었습니다.

애플이 맥 사용자들과 앱 개발자들을 지나치게 통제하려든다는 논란이 지금도 끊이질 않고 있지만, 최소한 애플의 가두리 안에 있는 생태계에서 만큼은 악성 코드가 창궐할 가능성이 현저히 줄어든 것이 사실입니다.

위 두 가지 보안체계는 이미 대부분의 맥 사용자들이 그 내용을 충분히 인지하고 있는 부분이고 블로그를 통해서도 관련 글을 수차례 포스팅한 바 있습니다.

하지만 애플의 가두리의 바깥쪽 영역은 어떤 보안 체계가 작동하는지는 아직 소개해 드릴 기회가 없었습니다. 이번엔 애플이 최신 맥 운영체제에 심어둔 3대 보안 체계… 그 중 하나의 축을 맡고 있는 XProtect 보안 체계에 대해 알아보는 시간을 가져봤습니다.

가두리 밖을 책임지는 XProtect 보안 체계

최신 OS X 운영체제 안에는 게이트키퍼와는 별개로 시스템의 보안을 심각하게 위협하는 악성 코드와 그 악성 코드를 시스템 내부로 유입하는 프로그램의 실행을 막는 일종의 블랙리스트가 존재합니다. XProtect.plist와 XProtect.meta.plist라는 파일이 그것인데, 전자는 악성코드의 식별자(이름, 코드)가 담겨있고, 후자는 맥의 보안을 취약하게 만드는 프로그램(플러그인)이 이름을 올리게 됩니다.

애플이 OS X 마운틴 라이언을 출시하면 게이트키퍼를 대대적으로 홍보했던 것과는 달리 XProtect 보안 체계에 관해서는 애플이 말을 상당히 아껴왔습니다. 또 GUI 인터페이스 없이 시스템 깊숙한 곳에서 내부 작업이 모두 이뤄지기 떄문에 비교적 맥을 오래 사용한 유저들도 그 존재 여부를 제대로 알지못하는 경우가 많았습니다. 그러다 최근 ‘무료 프로그램을 가장해 소액 결제를 유도하던 ‘Trojan.SMSSend.3666’ 코드와 최신 자바 7의 보안을 무력화 시켜버린 ‘제로데이(Zero day)’ 공격 코드가 창궐하면서 IT 매체의 보도에 그 이름을 자주 올리고 있습니다.


* 제작년 60만대의 맥을 감염시켰다고 알려져 유명해진 FlashBack도 XProtect 데이터베이스에 당당히 한자리를 차지하고 있는데...

애플은 업데이트가 필요하다고 판단되면 새로운 버전의 XProtect 파일을 서버에 올려두게 되는데, OS X 10.6이나 그 이후에 출시된 OS X은 하루에 한 차례 애플 서버에 접속해 최신 버전의 유무를 확인하고 최신 버전이 있을 경우 이를 자동으로 내려 받아 /System/Library/CoreServices/CoreTypes.bundle 번들 패키지 속에 있던 기존 파일을 대치하도록 설정되어 있습니다.

XProtect 데이터베이스 안에는 OSX/iWorks-A (OSX.Iservices)과 OSX/Jahlav-C (OSX.RSPlug.A).이 두 악성코드가 등록된 것을 시작으로 2013년 1월 23일 현재까지 총 22개의 악성 코드에 대한 내역이 기록되어 있습니다. (생각보다 몇개 안되죠?) 그리고 가장 최근에는 악성 코드를 제대로 막아내지 못한 책임을 물어 오라클 자바 7이 XProtect.meta.plist에 이름을 올리는 치욕을 맛봐야 했습니다.

XProtect의 구현

XProtect.plist와 XProtect.meta.plist 파일은 단순히 악성 코드와 프로그램의 식별자(이름)만 담고 있는 일종의 데이터베이스(DB) 파일이며 실제 최신 파일 갱신 작업은 /usr/libexec/XProtectUpdater 라는 별도의 바이너리(실행) 파일을 통해서 이뤄집니다.

또 이 바이너리 파일의 실행 유무는 /System/Library/LaunchDaemons/com.apple.xprotectupdater.plist 라는 설정 파일에 의해 좌지우지됩니다. 앞서도 말씀드렸지만, 사용자가 특별히 설정 파일을 수정하지 않는 이상 하루에 한 차례는 반드시 블랙리스트가 갱신되도록 설정되어 있습니다.

최근 언제 XProtect 데이터베이스가 업데이트되었는지는 다음 터미널 명령어를 통해 확인하실 수 있습니다.

defaults read /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/XProtect.meta.plist

만약 블랙리스트를 지정된 업데이트 주기보다 서둘러 업데이트하고 싶다면 OS X 버전에 따라 다음 명령어를 터미널에서 수행해주시면 됩니다.

sudo /usr/libexec/XProtectUpdater

또는

sudo launchctl start com.apple.xprotectupdater

XProtect 보안 체계의 한계

XProtect 보안 체계의 가장 큰 단점은 ‘이미 알려진’ 악성 코드의 작동 차단에만 초점이 있기 때문에 ‘아직 알려지지 않은 악성 코드나, 악성 코드의 변종’에 대해서는 아무런 보호막도 되어주지 못한다는 점입니다. 다시 말해, XProtect 파일이 갱신되기 전에 시스템이 맬웨어에 감염되거나, XProtect에 이름을 올렸더라도 내부 코드가 교묘히 변경된 해당 맬웨어의 변종에 대해서는 제대로된 면역력을 보장해 주지 못하는 문제가 있습니다.

마치며

맥 운영체제의 보안성에 관해 이야기 할 때 항상 회자되는 주장이 두 가지 있습니다. 첫째는 ‘유닉스를 기반으로 돌아가는 맥은 바이러스나 악성 코드에 강한 내성을 가지고 있다’이고, 둘째로는 ‘단지 해커들이 윈도우 만큼 맥에 신경을 쓰지 않아서 그렇게 보이는 것 뿐이다’라는 것입니다. 사실 두 가지 주장 모두 틀린 소리는 아니지만 최근에 맥의 보안을 위협하는 각종 악성 코드들이 기승을 부리면서 후자 쪽이 더 큰 설득력을 얻어가고 있습니다. 한마디로 맥도 ‘뚫리지 않는 방패’는 아니라는 이야기입니다.

PC 사용자들이 지난 수십년간 바이러스와 멀웨어에 시달릴대로 시달려가며 이제 백전 노장이 되어있는 반면, 맥 사용자들의 '해커들의 무관심'이라는 온실 속에서 아무런 위기 의식 없이 평온한 날들을 누려왔습니다. 아무리 운영체제에 보안 체계가 잘 갖춰져 있더라도 사용자 스스로가 최소한의 경각심을 가지지 않는다면 이런 체계들은 한낱 무용지물에 불과할 것입니다.



참조 자료
Apple issues late XProtect update for Flashback Trojan
Apple 보안 업데이트

관련글
애플의 맥 앱스토어 '샌드박싱' 정책이란?
휴대폰 소액결제 유도하는 '맥용' 악성 프로그램 발견!
애플, 심각한 보안 취약점 때문에 OS X 내에서 자바(Java) 7 사용 차단
맥 유지보수에 지나친 노력과 시간을 쏟아붓고 계시지는 않으십니까?

    
  1. 좋은 글 잘 보았습니다~

    확실히 애플은 사용자에게 복잡하다 싶은건 언급조차 안하고 죄다 숨겨버리는군요 ㅎㅎ

    호불호가 갈리는 편이지만 기계에 통달한 유저들이 그렇지 않은 유저들보다 현저하게 적다는걸 감안하면

    따로 뭔가를 할 필요 없이 혼자 알아서 한다는게 제겐 장점으로 느껴지네요~

    하지만 혼자하다 망하면 대책없이 욕을 먹게 된다는 치명적인 단점이...-.-;

    언제까지나 잘해주길 바랄 뿐입니다!

  2. 블로그를 운영하면서 소개 차원에서 OS X의 각종 기능과 사용자화 할 수 있는 방법들에 대해 이모저모 소개해드리고 있지만 실질적으로는 OS X의 기본 기능을 최대한 활용하고 OS X도 있는 그대로(?) 놔두는 편입니다. 소위 말하는 '튜닝의 끝은 순정' 맥 라이프를 하고 있다고나 할까요^^ 암튼 저도 애플이

    언제까지나 잘해주길 바랄 뿐입니다! (2)

  3. 이런 건 어떻게 아시는지.. 좋은 글 잘 보고 갑니다. :)

  4. 항상 잘 읽고 갑니다!

  5. Blog Icon
    n0fate

    후자가 사실이긴하죠. Mac OS X Mountain Lion에서부터 부랴부랴 KASLR도 적용하고 그나마 좀 나아진거지 예전에는 안정성은 높지만 보안성이 높은 운영체제는 아니였습니다. 이는 진입이 제한적인 iOS의 보안성이 낮다는 얘기는 아니니 오해없으면 좋겠습니다. (쓴소리를 하면 항상 말조심을 하게 되더라구요 ㅎㅎ)

    Mac Security를 연구하는 사람이기도 하지만 Mac 운영체제를 많이 사용하는 사람으로써 한마디 적고 갑니다.

    언제나 좋은 글들 잘 보고 있습니다. ;-)

  6. 적어주신 것에 전적으로 동감하는 편입니다. 다른 운영체제가 모진 환경 속에서 잡초처럼 강하게 자라온 반면에, OS X은 그동안 너무 온실 속의 화초같았죠. 다행히 애플에서는 이런 부분 인지하고 이런저런 보안 체계를 마련해 가고 있지만, 사용자들은 '맥의 보안성이 뛰어나 바이러스에 대해 걱정할 필요없다'는' 다소 안이한 생각을 가지고 있는게 큰 문제인 것 같습니다. (쑥스럽지만 저도 지금까지 이 부류에 속해 왔던 1인이구요.)

  7. Blog Icon
    urisnov

    본질적인 고민이 필요하긴 한 부분 입니다 만
    다들 게을리 하고 있죠! 특히나 저 같은 앤드유저 단에서는...!
    맥 OS의 양날의 검인듯합니다.
    좋은 옷=알러지free가 항상 성립되진 않겠죠.

  8. Blog Icon
    7he0ne

    악성코드라고 해봤자.. 사실 현재까지 맥에서의 보안위험성이라고는 트로이목마 정도인데..

    사실 이것도 1) 직접 사이트에서 다운 받고, 2) 실행하겠냐는 질문에 실행을 선택 후 3) 패스워드 입력 4) 실행파일이 변경되었는데 그래도 실행하겠냐는 질문에도 5) 예를 해야지만 감염이 되는데..

    여기서 이 악성코드는 해당 어플리케이션의 디렉토리 안에서만 영향을 끼칠 뿐 시스템 코어단까지 감염되지는 않죠.

    이것이 현재 애플이 iOS와 더불어 맥에서도 샌드박싱 처리를 하고 있기 때문이죠.

    하지만 지터치라든지, BTT같은 시스템 접근을 필요로 하는 프로그램들은 예외가 될 수 있는데... 이러한 시스템 접근을 필요로 하는 프로그램을 받을 시에는 확실히 보안에 대한 전반적인 지식은 사용자의 몫이라 봅니다..^^

  9. 말씀하신대로 시스템에 갖가지 보안 장치가 마련되어 있더라도 결국 가장 중요한 것은 사용자 스스로가 평소 보안에 대한 각별한 주의를 기울여야 한다는 것 같습니다. 이는 전 운영체제 공통 부분이기도 하구요^^

  10. 음.... 설치시에 계정넣기 시스템접근 권한만 주지 않는다면 안전한거 아닌가요? 윈도우에서도 전 그렇게 사용합니다. ㅋ 무조건적으로 접근권한을 달라는 소프트웨어들은 조심해야겠죠. 네 대부분의 한국웹 소프트웨어들이 그러더군요. ㅡㅡ;; 그래서 맥에선 은행, 음악다운도 안합니다 ㅡㅡ;; 귀찮더라도 윈도우로 들어가죠.