[도닦기] 9단계: 도(道), 그 너머(完) (KR)

도닦기의 모든 것

안녕하세요. 도닦기팀 PM OUYA77입니다. 이 길을 무사히 마칠 수 있게 각자의 자리에서 최선을 다했을 뿐더러, 최고의 성과를 낸 우리 팀원들에게 박수 500번을 보냅니다. 👏👏👏👏👏

지난 연구글

https://hackyboiz.github.io/2026/06/06/OUYA77/Wipeload_step1/kr/

https://hackyboiz.github.io/2026/06/21/ji9umi/Wipeload_step2/kr/

https://hackyboiz.github.io/2026/06/26/ji9umi/Wipeload_step3/kr/

https://hackyboiz.github.io/2026/07/13/OUYA77/Wipeload_step4/kr/

https://hackyboiz.github.io/2026/07/19/gongjae/Wipeload_step5/KR/

https://hackyboiz.github.io/2026/08/01/gongjae/Wipeload_step6/KR/

https://hackyboiz.github.io/2026/08/08/banda/Wipeload_step7/KR/

https://hackyboiz.github.io/2026/08/15/banda/Wipeload_step8/KR/

그리고 이렇게 긴 시리즈가 없었을건데, 여기까지 함께 걸어와주신 독자 여러분께도 감사를 표합니다. 😆

영화의 Credit처럼 저희가 걸어온 길을 회상하며, 도닦기의 모든 것을 같이 살펴보시죠!

크레딧을 다 보고 가야 낭만있는거 아시죠?ㅎㅎ

기 (起) - 왜 시작했는가

프로젝트 시작 부분은 이미 Part 1에서 이야기해서 끌올을 하면서, 간단히 넘어가겠습니다.

https://hackyboiz.github.io/2026/06/06/OUYA77/Wipeload_step1/kr/

image.png

사실 처음에는 이게 되려나 생각했지만 ‘그래도 인당 하나씩 1day PoC 개발하면 되지 않을까?’ 란 생각에 일단 저질러 보았는데요. 그리고 사실 도닦기 1단계를 쓸 때만 하더라도 체인 하나만 개발이 되고 하나는 개발 중이었는데!! 저는 저희 팀원들을 믿었습니다 ㅎㅎㅎ

무사히 체인이 개발되고 이렇게 마무리 글을 웃으며 쓸 수 있어서 기쁘네요 ^-^☆

프로젝트의 모티베이션은 위에서 이야기했으니, 프로젝트 초반의 이야기를 좀 해보겠습니다.

도닦기라는 이름에 맞게, 도닦기 전 우리 닦기(?)를 했습니다.

image.png

처음에 프로젝트 전체 방향성을 얼라인하고 각자 공부할걸 정했는데요. 사실 다들 그렇게 큰 경험이 없다보니까 제로부터 시작하는 것이었어서 부단히 공부를 했습니다. 또 혼자 공부하면 퍼질 수 있는데 위에서 보시는 카톡처럼 같이 디스코드 무한 감옥(?)방에 갇혀서 열심히 공부하니까 길(道)을 가는데 외롭지 않았네요ㅎㅎ

또한 각자 어느정도 공부한 후에 결과물을 공유하고 앞으로 뭐할지 이야기 하고자 오프라인으로 모여서 회의도 하였습니다. 오프라인으로 하루종일 모였고 점심을 같이 먹고 오후엔 각자 저녁에 발표할 내용을 준비하였고, 저녁에는 지금까지 공부한 내용을 발표하는시간을 가졌습니다. (점심먹고 모여 공부하니 ogu가 커피사준건 안비밀)

오구야 커피고마워

오구야 커피고마워

image.png

저녁이 되어서 각자 체인으로 개발할 1day exploit을 공유하였고 드디어 개발을 시작하였습니다.

여기까지가 발단입니다. 다른 팀원들의 이야기도 한번들어볼까요?

  • ji9umi

    저는 도닦기 프로젝트에 합류하기까지 많은 고민을 하다보니 살짝 늦은 합류를 하게 되었습니다 🙃 프로젝트만 두고 봤을 때는 정말 매력적인 여정이 될 수 있다는 걸 알아도 이전에 V8에 크게 당했던 트라우마가 있어서 쉽게 결정하기 어렵더라고요..

    그러나 이번에도 도망치면 영원히 극복하지 못할 것 같아 용기를 내보기로 했답니다! 만약 타겟 선정부터 해야한다면 시작부터 고꾸라질지도 몰랐지만 분석해야할 1-day는 정해져 있어서 부담을 덜 수 있었어요.

    초반에는 분석 대상이었던 CVE-2023-3079의 PoC와 V8 Heap Sandbox를 우회하기 위한 PoC가 모두 공개되어 있어 해당 자료를 잘 습득해서 글로 작성하면 되지 않을까 싶었지만.. 현실은 쉽지 않았습니다 ㅎㅎㅎ

  • gongjae

    저는 OUYA77님의 갑작스러운 납치?로 banda님과 함께 처음부터 함께 했었는데요 😂 저는 원래 Windows밖에 몰랐던 사람인지라 Chrome과의 연계 프로젝트에서 제가 뭘 할 수 있을지 고민이 많았습니다. OUYA77님이 납치해주신게 결과적으로 감사한 일이 된것 같네요 ㅎㅎ

    제가 맡은 파트는 Theori에서 SandBox Escape 로 사용하기 위한 취약점인 CVE-2023–21674이었는데요, 처음엔 체이닝이 아닌 1-day로 공부하는거다 보니 생각?보다 쉽게 진행하고 이해했던 것 같습니다…만 제게 닥쳐올 Chrome과의 체이닝을 알기 전의 범부였기 때문에 이때는 즐거웠던 것 같네요..하하

  • banda

    저도 OUYA77님이 프로젝트를 시작하시기 전부터 감사하게도 팀원으로 저를 점찍어주신 덕분에(?) 도닦기 팀과 함께할 수 있었습니다 😄 저의 경우에는 프로젝트를 시작할 당시 Windows 커널의 Filter Manager, MDL, Kernel Streaming과 같은 특수한 구조들에 관심이 많았는데, Chaining을 하면서 이런 커널 공격면과 exploit primitive를 더 제대로 익혀보고 싶었어요. 또한 그동안 Windows 프로젝트만 주로 달려온 생을 이어가던 중 이번 기회에 Chrome Renderer나 Sandbox 공격 표면도 살펴보고 공부해보고 싶었습니다.

    제가 맡은 파트는 Theori에서 Chrome Sandbox Escape 이후 SYSTEM 권한 상승 단계에 사용한 CVE-2023-29360 취약점이었습니다. 사실 커널 취약점들이 자주 먹던 맛이었기 때문에 1-day를 하면서 무엇을 함께 가져갈 수 있을지 많이 고민했었던 것 같습니다. 그래서 살짝 컨셉을 잡고 MDL같은 특수한 공격 표면과 제가 부족했던 primitive 알아가는 것에 집중했고, 팀원분들이 각각 활약해주셨던 체이닝 과정을 따라가면서 궁금한 부분을 검색해보면서 계속 이해해보려고 노력했던 것 같습니다 ㅎㅎ

승 (承) - 어떻게 도를 닦았는가(1day 개발 시작)

Chain 1

  • OUYA77

한 2달 여의 시간을 보내고 개발에 착수하였습니다. 작년에 크롬 공부할 때는 진짜 디버깅이 너무 힘들고 괴로웠는데, 사실 요즘 AI가 워낙 잘나와서 작년에 비해 AI가 가이드를 잘주어서 첫번째 체인 개발이 크게 어렵지 않았어요.

저는 작년에 V8 RCE를 리눅스에서 띄워놓고 윈도우로 포팅을 못하고 있었는데, 클러드 형님과 wasm page offset 잘 찾아서 윈도우 크롬에서도 V8 RCE를 성공하였습니다..!!

그리고 사실 그 다음이 문제였는데….(전에서 계속..)

Chain 2

  • ji9umi

    도닦기 프로젝트에서 다룬 두 번째 체인은 2024년 티오리에서 작성한 “Chaining N-days to Compromise All” 시리즈를 레퍼런스로 진행하였습니다. 제가 담당한 역할은 Part 1, V8 RCE와 V8 Heap Sandbox Bypass로 시작점에 해당되었어요.

    두 내용 모두 PoC가 공개되어 있기 때문에 V8 환경에서 테스트할 때까지는 순조롭게 진행되었습니다! 다만 V8은 어디까지나 크롬을 구성하고 있는 항목 중 하나이기 때문에 V8에서 사용된 PoC를 크롬에서 사용 가능하도록 만드는 작업을 진행했습니다 🔄

    공개된 PoC의 경우 특정 commit hash 기준으로 테스트 되었고 동일한 환경을 구축하면 큰 문제 없이 정상 동작하는 것을 확인할 수 있습니다. 그러나 크롬과 V8은 버전이 일치하지 않을 뿐더러 취약점 패치의 경우 크롬 버전과 무관하게 V8 버전을 업그레이드 하는 경우도 흔하기 때문에 안정적인 환경을 찾는 것이 관건이었습니다.

    이번 취약점의 경우 사전 빌드 버전을 제공하는 Chrome for Testing에서 지원하는 버전 범위에 있었기 때문에 비교적 수월했으나 만약 직접 빌드를 해서 확인해야핬다면.. 생각만해도 끔찍하네요 😵

  • gongjae

    저는 Part 2, SandBox Escape를 위한 ALPC kernel UAF를 트리거하기 위해 Theori 블로그 글과 BSOD poc가 있던 github의 코드를 보고 공부를 시작했습니다. 아무래도 체이닝 전 1-day였기 때문에 Windows 내에서 직접 ALPC를 트리거하여 UAF까지 발생시켜 BSOD를 내는 것은 빠르게 가능했어요.

    Theori 블로그에서의 방법론과 BSOD poc 코드의 차이점을 분석하며 저만의 방식으로 코드를 작성하여 BSOD 를 내는 것에 성공하였다만, 이후 Free된 Thread 재점유를 비롯해서 Thread Spray를 어떻게 해야하는지?에 대해 고민하고 Windows 환경에서는 방법을 찾았지만 이후 Part 1과의 체이닝에서는 Low IL에서 이 모든걸 진행해야 하는데 어떤 방식으로 해야할지 고민을 정말 많이 했던 것 같네요..ㅎㅎ

  • banda

    저는 Theori Part 3에 해당하는, mskssrv.sys 기반 Kernel EoP를 분석하면서, Chain2와 함께 Renderer에서 시작한 공격이 어떻게 SYSTEM 권한까지 이어지는지 커널 관점에서 부수적으로 공부했는데요. 취약점을 재현하려면 여러 개의 핸들을 열고 각각의 상태와 역할을 맞춘 뒤 통신 구조와 스트림을 순서대로 준비하고 Consumer를 등록한 다음, PublishTxConsumeTx까지의 호출 순서를 정확하게 지켜야 했기 때문에 이 부분에서 시간이 좀 걸렸던 것 같습니다.

    이후 ALPC의 cross-process Write primitive로 Medium 프로세스 실행 흐름을 조작하고 같은 프로세스에서 mskssrv.sys를 호출하면 SYSTEM 프로세스에 접근할 수 있는 구조인데요. 사실 이쪽 파트 체이닝의 경우에는 서비스를 여러번 시작해서 트리거 하는 드라이버 취약점이나 race 계열 드라이버 취약점 같은게 아니면 실행 프로세스만 잘 얹으면 되기 때문에 다른 커널 드라이버여도 충분히 체이닝이 가능할 것 같다는 생각이 들었습니다.

    사실 저의 경우보다도 팀원분들이 PoC를 동일한 V8 커밋에서 재현하고 실제 Chrome 환경에 맞게 포팅하는 과정, ALPC UAF를 Low IL에서 Thread Spray까지 발전시키는 과정 등을 보면서 정말 단일 취약점 분석과는 차원이 다른 체이닝의 난도를 직감했던 것 같습니다..ㅎㅎ

전 (轉) - 생각보다 무엇이 달랐는가(체이닝 시작)

Chain 1

  • OUYA77

크롬 샌드박스 이스케이프 취약점이 리눅스에서 구현되었어서 이를 윈도우로 포팅하는 과정이 필요했습니다. 하지만, 상세한 익스플로잇 흐름과 프리미티브들이 도닦기 1단계 글에서 이야기했듯이, 블랙햇 자료에 잘 나와있어서 좀 애먹긴 했지만 그대로 잘 구현할 수 있었습니다.

이번에 ex를 짜면서 AAF 라는 primitive를 처음 접해봤는데요. 기존에 흔한 AAR/W primitive에서 AAF라는 프리미티브를 아니까 눈이 확떠지는 기분이었습니다! 사실 AAF 면 다한건데 저는 뭘 더 해야 할까 고민하다가 아 이미 끝났구나 생각하고 dangling pointer 에 원하는 내용 잘 채워서 익스를 성공하였습니다.

이제 정말 마지막이 되는게 Renderer RCE 랑 SBX escape 취약점을 체이닝하는 것이었는데요.

Renderer RCE를 성공한거는 계산기 쉘코드를 실행한 것이었는데, 아마 그 쉘코드를 쓸 수 있는 공간이 4KB 밖에 없었을 거에요. 근데 SBX escape full exploit 코드는 2.7MB 정도 되었어서 새로운 공간이 필요했습니다…

하지만!! 제가 작년에 혼자 V8하면서 계속 봐온 reliable 한 공간이 있었고 그 주소는 클린한 곳이어서 4KB 공간에 VirtualAlloc 함수로 해당 주소에 RWX 권한을 준 후 거기에다가 escape 쉘코드를 작성해주었습니다. 그러니 결국…!!!

—>

image.png

pop calc 를 해버렸습니다 ㅎ.ㅎ

어느정도 각자 exploit들이 다듬어진 후 저희는 모여서 글쓰기 준비를 하였습니다.

이때 chain 하나는 개발이 완료된 상태고 chain 2에서는 각각의 취약점들은 다 exploit하였는데, 합치지 못한 상태였습니다. 일단 글 발행하는데 시간이 좀 걸리니까 글 post 계획을 세우고 썸네일도 만들며 즐거운(?) 시간을 보냈습니다.

image.png

밥먹으며 OUYA의 primitive(?) 만드는 이야기도 듣고

카페가서 열심히 회의도 했답니다.

그리고 나서는 보드게임을 했는데요. 카탄이라는 게임을 한번 해보았습니다.

이 게임은 각 자원구역에 성을 짓고 도로를 잇는 게임인데요.

아무래도 도닦기 프로젝트의 이름에 걸맞게 저희는 보드게임에서도 길을 닦고있었습니다.

image.png

도닦기 게임의 승자는 누구였을까요?!?!?!?

바로!!!

네 접(OUYA77)니다

도닦기 PM이 도닦기에서 질 수 없어서 혼란하게 떠들다가

제가 이길 각이 나왔을 때는 입 싹 닫고 조용히 카드를 아끼다가 숨도 안쉬고 와다다 내서 이겨버렸습니다.

일부로(?) 져준 착한 팀원들 사랑합니다

그렇게 회의를 재미지게 하고 글을 쓰게 되었어요.

새로 파서 텅빈 계정(팔로워 0명)에 글을 올리는게 느낌이 이상했지만

이 프로젝트를 시작으로 다시 활발히 활동해보자! 라는 마음으로 올렸던 것 같습니다.

그런데 도닦기 2단계부터 8.3K 조회수가 나와서 신기한 마음이었습니다 ㅎㅎ

그렇게 한계단 한계단 오르다가 각자가 계단을 올라야 할 순서에

image.png

팀원분들도 멋지게 계단을 올라주셔서 이렇게 완주를 할 수 있었습니다.

다들 좋은 경험이었길 바랍니다 ㅎㅎ

결 (結) - 도(道), 그 너머()

여러분 저희의 도(道)는 어떠하였나요?

또 저희와 함께 걸어온 길은 어떠셨나요?

저희는 해키보이즈 팀과 또 여러분과 이렇게 길을 완주할 수 있어서 영광입니다 (꾸벅)

26년 8월인 이제는 AI 가 너무나도 잘 발달하여 major 벤더 exploit 이 예전만큼 어렵지 않아졌지만

작년과 올해 초만 하더라도 장벽이 꽤나 높아보였는데요.

그래도 이렇게 길을 완주할 수 있어서 큰 감사입니다.

각자의 소감을 한번 들어보겠습니다!

  • OUYA77

    안녕하세요 OUYA77입니다. 사실 이렇게 성황리에 프로젝트 마무리 할 줄 몰랐는데 감개무량하네요. 개인적으로 프로젝트에 있어서 여러 고민과 고충(?)이 있었습니다. 그래도 처음에 우리는 끝나고 이렇게 될거야 생각하고 노션에 사진을 넣었는데 아래 그림처럼 되어서 기쁘네요 ㅎㅎ

    image.png

    개인적으로의 아쉬움은 장기간으로 끌고 가기엔 루즈해져서 세부적인 내용을 못다듬은게 아쉽네요. 도닦기 닉값에 맞게 primitive를 조금 더 정교하게 만들고 최적화하는 등의 엔지니어링을 하고 싶었는데, 그 부분은 가슴 한켠에 두고 살아가야겠습니다.

    익스플로잇을 공개함에 있어서도 많은 고민을 하였는데, 요즘 시대에 AI를 사용해서 exploit을 짜는건 일도 아니라고 생각합니다. 또 이 exploit을 나쁘게 쓸 수도 있겠지만(나쁘게 쓰시라는건 절대 아닙니다!!) 이 게시글을 통해 공부해서 미래에 멋진 해커가 되실 수 있는 분도 있다고 생각해서 이렇게 과감하게 모든걸 오픈했습니다! 지식의 선순환으로 더 안전한 인터넷 세상이 되었으면 좋겠다는 생각이 있습니다.

    네 재미없는 이야기는 여기까지하고

    여러분 길을 닦았으면 무엇을 해야할까요? 그 길을 멋지게 달려봐야겠죠?

    귀신처럼 빠르게 달려보자 Ghostwalk 프로젝트를 이 다음으로 해보려고 합니다.

    많관부!!!! (스포_계산기를 띄우고 난 다음에 뭐하지?)

  • ji9umi

    안녕하세요, 이번 도닦기 프로젝트 2, 3단계에서 Chrome V8 내용을 담당한 ji9umi입니다. 프로젝트에 참여하면서, 그리고 끝난 이후에도 계속 바빠서 잊고 지내고 있었는데 사진에서 느껴지는 계절감이 꽤 긴 여정이였더라고요 😇

    2~3년 전에도 비슷하게 Chrome 1-day 취약점을 확인할 일이 있었는데 서론에서도 언급했듯이 LLM이 빠르게 발전하여 살짝은 편해진 것 같기도 합니다..! (그래도 여전히 쉽진 않지만요)

    이번 프로젝트에 참여하기까지 계속 고민했던 것 중 하나가 내용을 제대로 이해하지 못하고 공개된 PoC에서 shellcode만 바꾸고 끝나는 게 아닐까 걱정이었는데 제가 정리한 글이 잘 전달되었을까요? 사실 개인적으로 목표했던 것만큼 자세히 담지 못한 내용도 있어 아쉬움이 남는 프로젝트지만 도움이 될 수 있다면 좋겠네요!!

    도닦기 프로젝트는 이걸로 끝이 나겠지만 V8을 향한 여정은 아직 끝나지 않았습니다. To Be Continued… 😎

  • gongjae

    안녕하세요, 이번 도닦기 프로젝트 5, 6단계에서 Chrome Sandbox Escape 내용을 담당한 gongjae입니다! 사실 글을 쓰기 전에 가장 오래 걸렸던 게 제 파트였다는 점, 혹시 눈치채신 분들이 계셨을까요? 하하.. 당연하게도 SandBox Escape의 세밀한 내용은 Theori에서도 자세히 나오지 않았었고, 제가 진행한 방법이 정답인지도 알 방법은 없다고 생각합니다.

    다만 이렇게 정답이든 아니든 각자의 방식대로 생각하고 상상하는게 공부하는데 정말 많은 도움이 된다고 생각합니다. 비록 AI가 발전하고 있고, 사람이 크게 관여하지 않아도 취약점을 발견하고, 익스플로잇 하는데 지장이 없어지고 있는 시대이지만, 그럼에도 사람이 가장 크게 관여할 수 있는 부분은 AI에게 방향성을 주는데 있다고 생각합니다.

    AI에 많은 토큰과 시간을 할애했다면 이 SandBox Escape도 금방 끝났을 것 같습니다. 다만 저는 제가 상상하고 생각한 것들을 직접 AI와 논의 해보고, AI와 같이 분석하면서 방법론을 생각해낸 것 같습니다. 그 과정이 아마 6단계 연구글에 어느정도 녹아들었다고도 생각하고요..ㅎㅎ

    결국은 그래도 해결책을 찾는건 사람의 호기심과 궁금증에서 나온다고 여전히 생각하게 되는 것 같습니다. 이 점도 나중에는 AI가 대체할 수 있을까 걱정이 많지만, 너무 비관적이게만 생각하는 것 보다 AI와 어떻게 더 어려운 난제를 해결할 수 있을지에 대한 기대감을 높이는게 좋다고 생각이 드네요!! 가장 하고 싶은 말은 이 도닦기의 여정의 시작인 theori에서는 어떻게 AI의 도움 없이 진행했는지 존경심이 드는 것 같고, 저 또한 그분들처럼 더 노력하는 사람이 되고 싶습니다! 😎

  • banda

    안녕하세요, 이번 도닦기 프로젝트 7, 8단계에서 Kernel EoP 내용을 담당한 banda입니다. 프로젝트에 참여하면서 마지막 단계를 담당하다 보니 끝이 가깝게 느껴졌는데요. 가끔씩 모여서 같이 공부도 하고 대화도 나눈게 팀에 좋은 영향이 된 것 같아서 기쁩니다. 사실 비밀인데 카탄 게임은 정말 재밌어서 그 뒤로 게임을 자랑하고 다니고 친구들한테 소개하고 몇 번 더 했습니다 😆

    앞서 AI에 대한 이야기가 많아서 드는 생각인데, 비록 AI에 많이 의존해 취약점을 발견할 수 있는 시대가 되어가고 있다고 해도, 퍼스트 브레인은 결국 본인이 가지고 있는 것이라는 생각이 듭니다. 그리고 세컨드 브레인이 되는 AI한테 무엇을 물어볼지도 결국 퍼스트 브레인에서 나오는 것이 아닐까 싶습니다.

    일례로 필자는 도닦기를 하면서 커널 버그헌팅을 조금 해봤는데요. 버그헌팅을 하는 과정에서 AI나 에이전트같은 툴들을 먼저 돌렸을 때는 취약점이 없다고 단정했던 바이너리였는데, 공부했던 MDL 쪽 표면이 떠올라 직접 들여다보니 취약점을 찾았던 비하인드 스토리가 하나 있었습니다.🙊 따라서 취약점 관련해서 구체적인 인사이트나 표면을 공부해보는 것에 시간을 할애하는 일은 언제나 좋은 일이라고 생각합니다.

    도닦기를 하면서 프로젝트는 끝났지만 체이닝 관점에서는 더 공부해보고 싶다는 생각이 들었습니다. 평소에 넘어갔던 Renderer나 Sandbox 쪽 취약점들도 이제는 보일 때마다 그냥 넘어가지 않을 것 같습니다..ㅎㅎ 개인적으로 hackyboiz에 진 빚이 많아서 0-day가 마르는 날까지 오래도록 남아서 글을 올릴 예정이니 팀에 많은 관심 부탁드립니다. (아마 한참 걸릴 것 같으니 안심하세요)

    어디서도 안 다루는 주제의 글들이 여러분들을 기다리고 있습니다! To Be Continued…

그리고 마지막으로 x에서 도닦기 프로젝트가 꽤 인기가 좋았고

image.png

기승전결로 쓰인 이번 글처럼, 빌드업되던게 6단계 게시글에서 터져서 많은 샷아웃과 여러 메일이 왔었습니다. 다들 관심 가져주셔서 감사드립니다 :) 앞으로도 해키보이즈 기대 많이 해주세요 !

감사합니다 :)