Windows Mitigations – Exploit-focused mitigations

이번 회에서부터는 앞으로 5월 초에 있을 Windows Mitigations 트레이닝에 대해서 설명할 것이다. 다시 전체를 정리하면서 느끼지만, Windows Mitigation 테크놀로지 자체가 너무 방대해 지고 있어서, 요점들만 정리하는데에도 많은 시간이 소요 되었다. 전체적으로 일반적으로 보안 리서쳐들이나 오펜시브 시큐리티 리서쳐들이 그 동안 공부해 왔고 관심이 많았던, exploit-focused mitigation들이 있다. 메모리 커럽션등에 대항해서 만들어진 ASLR, DEP, CFG, CET 같은 기술들이 이 범주에 들어 간다. 두번째로 Post-exploit mitigation들이 있다. 이 mitigation들은 exploiting 자체에 집중하기 보다는 exploit 성공후의 행위들, 즉 쉘코드나 프로세스 인젝션등의 behavior에 집중한다. 대표적으로 EMET이나 WDEG, ASR, ACG 등을 들 수 있다. 세번째로는 하드웨어적인 가상화 기술에 기반한 VBS (Virtualization Based Security)가 있다. VBS는 사실 mitigation의 끝판왕으로 볼 수 있는데, 자세한 것은 다음 기회에 설명하겠다. 그 외에 domain-specific한 mitigation들 (SMBv3)이나 PPL처럼 process의 self-protection과 관련된 mitigation 등등이 존재한다.

CategoryMethods
Exploit-focused mitigation ASLR/DEP/CFG/CET/…
Post-exploit mitigationEMET/WDEG/ASR/ACG
VBS (Virtualization Based Security)UMCI/KMCI/HVCI/HyperGuard/Credential Guard
Process protection/isolationPPL/WDAG/Windows Sandbox
Domain-specific mitigationSMBv3

오늘은 첫번째로 Exploit-focused mitigation들에 대해서 알아 보겠다.

위의 도표와 같이 Exploit-focused mitigations들은 해커들과 벤더 사이의 지난 15년에서 20년 사이의 전쟁을 잘 보여 준다. 사실 해킹이나 exploit이라는 개념 자체가 처음 1988년 모리스웜으로부터 시작되었다. 센드메일 서버의 스택 오버 플로우 취약점을 통해서 전파된 이 웜은 위의 도표에서 Stack OverflowReturn Address Overwrite 두가지 방법을 통해서 Control Flow를 획득한 것으로 볼 수 있다. 그 당시 DEP라는 개념이 없었으므로 쉘코드는 바로 스택에서 사용할 수 있었고 이는 바로 Default +X Memory 방식이 될 것이다. 또한 ASLR이 존재하지 않으니 Memory Contents Weakness 카테고리에서는 Instruction Address Prediction을 썼을 것이다.

그 이후 30년의 시간이 흘렀지만, exploit과 mitigation 사이의 전쟁은 계속 되고 있다. Microsoft가 ASLR을 윈도우즈에 도입한 것도 2007년에 출시한 Windows Vista를 통해서 였다. 놀랍게도 이미 Morris Worm이 나온지 20여년이 흐른 후였다. 그 마저도 여러가지 엔트로피 문제 등으로 인해서 정말로 어느 정도 안전하다고 볼수 있는 ASLR은 Windows 8 이후에 구현 되었다.

중간의 길고 긴 여러 역사들을 다 뛰어 넘어서, 지금의 상황은 어떠할까? 지금은 Windows 8.1 과 Windows 10 플랫폼에 CFG가 도입 된지 시간이 좀 되었고, 중요 윈도우즈 프로그램들은 CFG가 모두 enable된 상태로 나온다. 예를 들어 Edge 등은 CFG가 도입 된지 조금 되었고, Office 제품군의 경우 64비트의 경우 CFG가 도입 되었다.

특히나 이 CFG로 인해서 그나마 많은 베네핏을 본 제품은 Adobe Flash Player이었다. 2010년대 초반 3-4년 정도 그리고 2016년 경 이후로 급격히 많은 Flash Player 0-day 들이 양산 되었는데, 사실 CFG를 도입하면서 상당수 컨트롤이 되었다. 이후에는 CFG bypass를 하는 exploit들이 종종 나왔지만, 그 전에 비해서 상당히 고 난이도의 exploit 방법론을 사용하지 않으면 안되었고, 그 만큼 exploit을 제작할 수 있는 공격자들의 범위도 줄어 들게 되었다. 나는 이 과정에 직접 참여하여 실제 데이타와 리버스 엔지니어링 결과 등을 제공하면서 결과적으로 Adobe Flash Player 자체의 보안성을 강화 시키는 작업과 동시에 결국 Adobe Flash Player 자체를 업계에서 퇴출 시킬 수 있는 여러 데이타를 제공하는데에 일조를 했다. 리버스 엔지니어링과 정확한 분석이 어떻게 현실 보안에 영향을 줄 수 있는지에 대한 흥미로운 사례가 될 것이다.

지금 가장 큰 윈도우즈 exploit mitigation의 아킬레스건은 아이러닉칼하게도 “Return Address Overwrite”와 ROP이다. 두가지 exploit 방법론의 역사는 너무나도 길다. ROP가 가장 먼저 언급된 논문은 2008년 UCSD생들이 내어 놓은 Return-oriented Programming: Exploitation without Code Injection이다. 이렇게 보면 10년 정도 밖에 안된 것 같지만, 사실 ROP는 1997년 발표된 Solar Designer의 return-into-libc 방법의 개념적 확장정도로 볼수도 있기 때문에 거의 20년 이상의 역사가 있다고 볼 수 있다. 아직까지 하드웨어, 소프트웨어적으로 “Return Address Overwrite”과 ROP를 직접적으로 방어할 수 있는 좋은 방법은 없다. 시중에 나온 방법들은 모두 그 side-effect를 탐지하거나 방어하는 방법들이다. 이러한 두가지 문제는 Intel이 앞으로 출시할 CPU들에 탑재될 CET (Control-flow Enforcement Technology)를 통해서 해결 될 것으로 기대하고 있다. 하지만, 이미 CET에 대한 많은 weakness들이 블랙햇 등의 컨퍼런스를 통해서 논의되고 있는 실정이다.

그렇다면, Windows Mitigations 트레이닝에서 제공하는 가치는 무엇인가? 일단 이러한 여러 exploit 방법론과 mitigation 방법론에 대한 정확한 정보와 최신 트렌드를 제공할 것이다. 또한 hands-on을 통해서 실제 exploit이나 유사한 mock-up exploit을 통해서 어떻게 mitigation bypass들이 일어 나고, bypass를 어떻게 다시 mitigate하는지에 대해서도 논의해 볼 예정이다. 만약 소프트웨어를 개발하는 벤더라면 이러한 유형의 정보는 굉장히 중요할 수 있다.

현실적으로 소프트웨어의 모든 취약점을 없앨 수 있는 방법은 존재하지 않는다. 이러한 취약점은 많은 경우 mitigation을 통해서 중화 시키는 것이 때로는 효율적인 방법이다. 중화 시키는 과정에서는 항상 그에 상응하는 비용이 따른다. ASLR도 도입 초기 얼마나 많은 compatibility issue와 그것을 걱정하는개발자들의 저항에 부딪혔을까? CFG를 지금 가지고 있는 코드 베이스에 적용시키려고 한다면, 한번에 모든 코드들이 제대로 작동할 것인가? 아니면, compatibility issue가 생길 가능성이 있는가? 생긴다면, 어떻게 해결해야 할까?

이러한 mitigation들의 최대 약점은 어떠한 mitigation들이 100% 모든 mitigation target들에 적용되어야 한다는 것이다. CFG를 예로 들면 99%의 indirect call을 instrument해서 call target check 루틴을 넣어도, 단 1개의 instrument 되지 않은 indirect call 만 찾으면 사실 게임 오버가 되는 경우가 많다. 이러한 mitigation miss를 어떻게 찾아 내고 검증할 것인가? 그렇다면 이렇게 번거로운 CFG를 도입하는 것이 과연 앞으로 자사 소프트웨어가 가질 exploit 문제들을 모두 해결해 줄 수 있을까? 기술적인 디테일과 방법론을 알지 못한다면, 이러한 질문에 절대 답할 수 없다. 또한 이러한 의사 결정은 결국 보안 예산을 효율적으로 사용할 수 있는 토대가 된다. Mitigation이라는 것에 벤더들이 눈을 돌리면서 그나마 해커들과 벤더들의 게임은 해볼만 한 것이 되었다라는 점을 잘 상기해 볼 필요가 있다. 여기에 이 트레이닝의 진정한 의미가 있다.


이번 트레이닝을 통해서 이러한 기술적인 정보와 스스로 조직 내에서 이러한 리서치를 행할 수 있는 기반과 토대를 마련하기 바랍니다. 티켓 구매는 OnOffMix로 고고… 만약 기업 컨설팅을 원할 경우 다음 Training Interest Form을 작성하시고, 아래의 폼에서 “Describe you needs”란에 “컨설팅 원함”을 명기해 주면 됩니다.

Leave a Reply