본문 바로가기

볼거리

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

들어가며

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

지난해 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 사용 차단
맥 유지보수에 지나친 노력과 시간을 쏟아붓고 계시지는 않으십니까?