PWN2OWN
1. 개요
[image]
미국의 3Com TippingPoint에서 주최하는 해킹 대회. 대회의 이름은 leet에서 '취약점을 이용해 권한을 얻어낸다'는 의미로 사용되던 OWN과 OWN에서 파생된 (오타로 인해?) '해킹하다/취약점을 뚫다'는 의미인 PWN을 이용하여 만든 것이다. PWN 2(TO) OWN. 즉, '(관리자)권한을 얻기 위해 해킹하다/취약점을 뚫다' 정도로 해석 할 수 있다.
해킹 대회라고는 해도 딱히 해로운 의도는 없고 그냥 보안 컨퍼런스 행사 중 하나. 본 목적은 자주 사용되는 IT 기기들의 약점과 문제점을 찾아내어 더욱 더 강한 보안수준을 요구하게 한다는 것으로, 업계에서 자기네들이 만든 시스템의 보안이 PWN2OWN에서 서늘하게 털리는 것을 지켜보며 경각심을 일깨우거나 보안에 더욱 심혈을 기울이게끔 만드는 것이다. 미국에서도 내로라 하는 전국구 해커들이 등장해서 어떤 시스템이라도 빠르면 몇분안에 탈탈 털어버린다.
해킹 대상에 따라서 OS 부문, 웹 브라우저 부문, 스마트폰 부문 등 다양한 카테고리로 나뉜다. 매년 새로운 카테고리가 추가되고 변경되고 하기 때문에 자세한 건 2021년 기준으로 여기를 참고하자. 1년에 한 번 열리는 것이 아니라 카테고리에 따라 나뉘어서 여러 번 개최된다. 대체로 데스크탑 소프트웨어가 중심인 메인 대회는 캐나다 밴쿠버에서 열려왔으며, 시간이 지남에 따라 다른 지역에서 모바일, 임베디드 대상으로 하는 대회가 별도로 분리되어 개최되거나 하고 있다. 대회인 만큼 상금과 상품도 주어지는데, 상품으로는 상금과 함께 해킹에 성공한 기기를 증정한다고 한다.
2. 역사
2.1. 2010~2011년 대회
2010, 11년 PWN2OWN은 2번 다 캐나다 밴쿠버에서 3월에 열렸다.
구글에서는 PWN2OWN의 첫째날 구글 크롬을 첫번째로 해킹한 해커에게 2만달러와 부상으로 크롬북을 제시했다. 결국 2011년 PWN2OWN 대회에서 웹 브라우저중 크롬만이 해킹되지 않으며 3년연속으로 해킹되지 않은 기록을 세웠다...만 2012년 대회에선 결국 '''뚫렸다'''(...)
2.2. 2013년 대회
2013년에는 Internet Explorer 10, Chrome, Java, Adobe Reader, Adobe Flash 까지 아주 다양하게 성공적으로 해킹되었다. 이 대회에서는 2012년 Pwn2Own 에서 Chrome 을 최초로 해킹한 것으로 유명한 프랑스의 보안 업체 VUPEN 에서 IE10, Flash, Java 를 해킹하였으며, MWR Labs 에서 Chrome 을 해킹하였다.
MWR Labs 에서는 블로그에 Chrome 해킹 과정에 대한 자세한 Writeup 을 올려놨으므로 관심있는 위키러는 참고하자.
Chrome 임의코드 실행 취약점
Windows 커널 권한 상승 취약점
2.3. 2014년 대회
2014년 대회에서는 Internet Explorer 11, Chrome, Firefox, Safari 를 포함해서 Adobe Reader 와 Adobe Flash 까지 전부 해킹되는 불상사(?) 가 일어났다. 이 불상사의 주요 주인공은 프랑스의 보안 업체 VUPEN 이다. VUPEN 은 Safari 를 제외하고 위에 언급한 모든 어플리케이션을 해킹하는 데에 성공하였다. 이 회사는 2011년 Safari 해킹을 시작으로, 2012년 최초로 크롬을 해킹하고 IE 도 해킹하였으며 2013년에는 IE10, Flash, Java 를 해킹하는 등 Pwn2Own 의 단골 손님이다.
또한 처음으로 한국인 해커 이정훈(lokihardt) 이 출전하여 Internet Explorer 11 을 공략하였으나 아쉽게도 해킹에 실패하였다.
2014년에는 Mobile Pwn2Own 도 따로 개최되었다. 이름 그대로 이는 Mobile 기기 상에서 브라우저를 공격하는 것이 특징이다.
iPhone 5s, Galaxy S5, Nexus 5 등 다양한 모바일 기기 상에서의 브라우저가 성공적으로 해킹되었다.
이정훈(lokihardt) 은 이 대회에서는 iPhone 5s 상의 Safari 를 성공적으로 해킹함으로써 한국인으로는 Pwn2Own 에서 처음으로 수상을 하게 되었다.
Mobile Pwn2Own 에서 lokihardt 가 iOS 상의 Safari 를 해킹하는 데에 사용한 취약점은 아래와 같다.
Safari 임의코드 실행 취약점
iOS 샌드박스 우회 취약점
2.4. 2015년 대회
[image]
2015년 3월에 열린 Pwn2Own 에서, 한국의 유명한 해커 이정훈(lokihardt)[1] 이 Chrome, IE11, Safari 최신 버전을 전부 해킹하는데에 성공하여 총 상금 225000$ 를 얻었다. 이는 이 대회 역사상으로도 한 개인이 3가지 메이저 브라우저를 전부 해킹하는 데에 성공한 것은 최초이다.[2] 이정훈 해커는 위 항목에 나와있듯이 2014년 Mobile Pwn2Own 에서도 iPhone 5S 상의 Safari 브라우저 해킹으로 상금을 받은 적이 있으며[3] , 그보다 더 이전에도 Chrome 브라우저의 취약점(Sandbox 까지 우회하는 완전한 익스플로잇)을 구글에 보고하고 3만 달러를 받은 경력이 있다. 물론 Pwn2Own 과 같은 대회에서 수상한 적만 없을 뿐이지 옛날부터 Internet Explorer 나 Adobe Flash, Adobe Reader, Java 취약점 등 다수의 메이저 소프트웨어 취약점을 발견했었고 국내 소프트웨어들[4] 은 말할 것도 없다. 현재 버그 헌팅으로는 독보적인 국내 최고이다.[5]
특이사항이라면 과거에 이정훈 해커가 발견하여 구글에 보고한 Chrome 취약점의 경우 크롬 자체의 취약점을 이용해 Sandbox 를 우회한 반면[6] 이번 대회에서는 Windows 커널 모드상의 취약점을 이용해 우회하였다. 구글에 직접 보고하는 경우는 브라우저 자체의 취약점이 아닌 운영체제의 커널 취약점으로 샌드박스를 우회한 것은 당연히 인정하지 않는다. 그러나 Pwn2Own 대회에서는 운영체제 커널 모드상의 취약점으로 샌드박스를 우회해도 인정한다.[7] 일반적으로는 더 많은 플랫폼에서 해킹이 가능하도록 하는 것이 더 어려운 편이다.
브라우저를 해킹한다는 의미에 대해 부연 설명하자면, 어떤 브라우저를 해킹했다는 것은 해커가 미리 만들어놓은 html 과 같은 브라우저가 파싱하는 파일[8] 을 웹 서버에 올려놓고 해당 브라우저를 사용하는 유저가 그 웹 페이지에 접속하여 페이지를 보려고 하는 순간 해커가 원하는 코드가 실행된다는 얘기이다. 이는 가령 시스템의 중요 파일을 지우는 코드가 될 수도 있고 원격 쉘을 열어서 해커가 시스템을 조작할 수 있도록 하는 코드일 수도 있고 또는 계산기를 실행하는(...) 코드일 수도 있다. 원래 브라우저에서 의도하지 않은 임의의 코드가 실행된다는 것이며 이러한 취약점 형태를 Arbitrary Code Execution(임의 코드 실행) 이라고 한다.[9]
예전에는 이러한 코드 실행 취약점을 이용해서 프로세스 상에서 원하는 코드를 실행만 하면 되었지만, 현재는 거의 대부분의 브라우저가 적용하고 있는 Sandbox 기술로 인해 예전처럼 단순히 렌더러 프로세스 내에서 임의 코드 실행이 된다고 해서 시스템에 피해를 주는 악의적인 공격을 할 수는 없게 되었다. 이는 쉽게 말하자면 Sandbox 라는 가상의 환경 내에서 브라우저 렌더링 처리를 하는 것으로, 기본적으로는 제일 먼저 브라우저를 실행하면 Broker 라 불리는 중앙 제어 프로세스가 생성되고, 이 Broker 에서 자식 프로세스를 필요한 만큼 생성을 하게 된다. 이 Broker 프로세스의 자식 프로세스 중 렌더링 관련 프로세스들은 모두 샌드박싱된(Sandboxed) 프로세스가 된다.
브라우저는 이러한 렌더링에 쓰일 자식 프로세스들은 Broker 와 달리 기본적으로 권한 자체를 낮게 설정하여 생성한다. Windows 의 경우 이러한 낮은 권한의 프로세스들은 파일 I/O 나 소켓 생성 등 다양한 부분에서 제한을 받는다. 이러한 낮은 권한의 자식 프로세스가 실제로 HTML 파싱, 자바스크립트 실행, 렌더링 등의 모든 일을 처리하는 Renderer Process 이다. 따라서 가령 자바스크립트 취약점으로 임의 코드 실행에 성공해도 그것은 결국 낮은 권한의 Sandboxed 프로세스 내에서만 가능하기 때문에 공격자가 원하는 악의적인 행위를 하기에는 부족하다.[10] 물론 일반 권한을 갖고 있는 Broker Process 에서는 브라우저 렌더링과 관련한 직접적인 처리는 일절 하지 않는다.
물론 Renderer Process 도 특정 파일의 내용을 읽고 쓰거나 소켓 통신 등을 하지 못하면 컨텐츠 자체를 얻을 수도 없고 할 수 있는 게 없기 때문에, 자신이 직접 하지는 않고 Broker Process 에 처리해달라고 요청만 하고 그 결과만 전달 받아서 처리하는 식으로 구현된다. 이 과정은 Broker 도 어쨌든 다른 프로세스이므로 Broker ↔ Renderer 간의 IPC 를 이용한다. 가령 네트웍 통신 같은 경우도 실제로는 모두 Broker 에서 연결하여 통신하게 되고 렌더링 프로세스들은 Broker 를 거쳐서 결과만 얻을 수 있다.[11]
Chrome 의 경우 이러한 샌드박스를 진작부터 강하게 적용하고 있으며, IE 의 경우 IE 버전 + Windows 버전에 따라서 지원 여부가 다르다. Vista 이상에서의 IE7 부터 최초로 Protected Mode 라는 이름으로 Integrity Level 등을 이용한 샌드박스 기능이 포함되었다.(지금은 IE10 이상부터 EPM 이라는 이름으로 다른 여러 보호 기능과 통합되었다.) Safari 의 경우 Mac OS X 와 iOS 에서 보통 실행되는데 이 두 운영체제는 모두 커널에서 자체적으로 어플리케이션 샌드박스를 지원하기 때문에 이를 이용하고 있다. 따라서 현재 Pwn2Own 과 같은 대회에서는 기본적으로 Sandbox 까지 우회하여 임의 코드 실행이 가능해야 최종적으로 해킹에 성공한 것으로 인정한다. 이는 비교적 단순했던 기존의 브라우저 해킹을 더욱 어렵게 만들었다. 따라서 이를 모두 우회하여 3개의 브라우저를 모두 해킹했다는 것은 누가 봐도 대단한 일이라 할 수 있다.
참고로 이번에 사용한 취약점들은 대부분 ZDI 에 페이지가 추가되어있다.
IE11 임의코드 실행 취약점
IE11 샌드박스 우회 취약점
Chrome 임의코드 실행 취약점
Windows 커널 정보 누출 취약점
Windows 커널 권한 상승 취약점[12]
Safari 임의코드 실행 취약점
OS X 샌드박스 우회 취약점
위에 나눠진 대로 IE11 해킹에 2개의 취약점, Chrome 해킹에 3개(또는 그 이상) 의 취약점, Safari 해킹에 2개의 취약점이 사용되었다. IE11 과 Chrome 의 경우 위에서 설명했듯이 IE11 은 IE 자체의 취약점을 이용해 샌드박스를 우회하였고 Chrome 은 Windows 커널 취약점을 통해 샌드박스를 우회하였다. 따라서 Chrome 은 가장 높은 SYSTEM 권한을 얻어낼 수 있었으며 이로 인해 추가 보너스 상금을 얻었다.
2.5. 2016년 대회
나온지 1년이 조금 넘은 최신 브라우저인 엣지 에 대한 공격을 새 타겟으로 지정하였다. 자연히 인터넷 익스플로러 11 은 타겟에서 제외되었다. 또한 이 해부터 Windows 기반 브라우저인 경우 기본적으로 VMware Workstation 내의 Windows 10 이 설치된 GuestOS 내에서 실행한다. 이 때 그냥 GuestOS 내에서만 익스플로잇을 성공하면 원래 그랬듯이 일반적인 브라우저에 대한 시상을 하고, 만약 여기다가 VMware Escape 취약점으로 Host 에 접근까지 성공한다면 추가 포인트 및 금액을 지불한다. 전체 리스트는 아래와 같다.
[13]
총 5팀이 참여하였다. 최종 결과 리스트는 아래와 같다.
[image]
이정훈은 Safari/Edge/Chrome 의 3가지 브라우저에 대해 시도하였다. VMware Workstation Escape 는 하지 않은 것으로 보인다. 첫번째로 Safari 브라우저에 대해 임의 코드 실행 및 root 권한 획득을 성공하여 10Point 와 60000달러를 얻었다. 두번째로 엣지 브라우저에 대해 임의 코드 실행 및 SYSTEM 권한 획득을 성공하여 15Point 와 85000달러를 얻었다. 세번째로 구글 크롬 브라우저에 대해 시도하였으나 실패하였다. 개인으로 참여한 것은 그가 유일하다.
총 38Point 를 얻은 Tencent Security Team Sniper 가 1위를 차지하였다.
3. 여담
위에서는 몇 분 안에 해킹한다고 언급하였으나, 시간은 단순히 대회 시작 후 익스플로잇이 정상적으로 트리거되기까지의 시간을 의미하는 것이지 아무것도 없다가 그 자리에서 갑자기 몇 분 안에 취약점을 발견해서 해킹을 하는 것은 아니다(...) 당연히 대회를 하기 전에 이미 길면 몇 달 이전부터 준비를 해서 오는 것이다.
브라우저의 샌드박스 구현에는 운영 체제의 지원과 함께 다양한 방법들이 사용되는데, Chrome 을 예로 들면 Windows 에서의 샌드박스 구현에 대해 여기에서 대략적으로 설명을 하고 있다.
Microsoft Edge 브라우저가 Chromium 기반으로 변경되면서, 2020년 대회에서는 Chromium 기반과 기존 EdgeHTML 기반의 두 가지를 모두 타겟으로 하였다. 그리고 2021년에는 EdgeHTML 기반의 브라우저를 타겟에서 삭제하고 Chromium 기반 Edge 에 대해서만 시상한다. 여기에 덤으로 같은 Chromium 기반인 만큼, 같은 취약점으로 Chrome 과 Edge 에서 동시에 성공하면 추가 상금을 주는 룰이 새로 추가되었다.
[1] 위 사진에서 흰 맥북 앞에 있는 가운데 사람이다. 그 옆에 모자 쓰고 서 있는 사람은 이종호 해커로, 둘 다 인하대 출신이다.참고기사[2] 사파리를 빼고 파이어폭스를 포함하는 것으로 치면 2014년 항목에 있듯이 VUPEN 에서 IE11, Chrome, Firefox 에 Adobe Reader/Flash 까지 해킹에 성공한 적이 있다. 물론 이는 개인이 아니다.[3] 마찬가지로 위 항목에 나와있듯이 2014년 Pwn2Own 에서는 Internet Explorer 11 을 공략하였으나 아쉽게 실패한 적이 있다.[4] 곰플레이어, 한글, V3 Lite, 기타 등등[5] 사실 이정훈 해커는 Capture The Flag(CTF) 형태의 대회에 있어서도 국내 최고의 실력을 가지고 있다. 2015년 Defcon CTF 에서는 한국 연합 팀의 원톱 에이스로 활약하며 한국팀 최초로 Defcon CTF 1위를 차지했다. [6] 이는 즉 운영체제가 Windows 든 Linux 든 관계없이 크롬의 샌드박스를 우회할 수 있다는 뜻이다.[7] 물론 IE/Chrome 의 경우 기본적으로 최신 Windows 위에서 돌아간다고 가정한다.[8] 이미지 파일(jpg, png, gif, ...) 이나 동영상 파일 등의 리소스 파일 파싱 과정에서도 취약점이 발생할 수 있다. Chrome 의 경우 PDFium , FFmpeg 등의 플러그인 내에서 발생하는 취약점에 대해서도 포상한다.[9] 브라우저의 경우 공격할 대상 컴퓨터에 접속할 필요 없이 원격에서 URL 접속을 유도하는 것만으로 공격이 가능하므로 원격 코드 실행(Remote Code Execution) 취약점이라고도 할 수 있다.[10] 위에서도 언급했듯이 파일 I/O(CreateFile), 소켓 생성(WSASocket) 등의 API 를 호출하면 대부분 실패한다. 물론 이 제한은 Sandbox 의 레벨에 따라서 차이가 있다. 가령 예로 일부 버전 기준으로 IE 는 CreateProcess 가 되는 반면 Chrome 은 CreateProcess 도 실패한다. [11] 브라우저를 켠 상태로 여러 사이트를 켜 놓은 후 cmd 에서 netstat 명령으로 각 연결의 pid 를 확인해 보면 모든 연결이 Broker Process 에서만 이루어지고 있는 것을 볼 수 있다.[12] 다른 취약점에 비해 정보가 늦게 등록되었다. secdrv.sys 에서 발생하는 취약점이고, 위의 cng.sys 에서 발생하는 정보 누출 취약점과 같이 연계하면 KASLR 을 우회하여 권한 상승이 가능하다.[13] 아래의 3가지는 위의 소프트웨어들에 대한 익스플로잇과 결합되었을 때 추가 포인트를 의미한다. 구글 크롬에서 임의 코드 실행을 성공시켰을 때 권한이 SYSTEM 권한이냐, 그냥 Medium Integrity 그대로냐에 따라서 5포인트 또는 3포인트가 추가로 주어진다고 보면 된다. 물론 SYSTEM 권한은 추가적인 커널 익스플로잇이 필요하다.