이메일을 적으시면 보안관련 소식을 받을수 있습니다.
이메일:

안녕하세요. 마플입니다.
제가 이곳에 글을 적겠다고 신청했을때 리눅스 커널에 대해서 다루겠다고 했습니다. 

제가 커널을 공부할 때를 생각해보니, 
참으로 커널을 공부하는 것은 답이 안나오는 일입니다.

OS라는 것은 수십년의 역사를 가지고 신과 같은 엔지니어들의 정수가 모여있는 소프트웨어 예술입니다.
그 깊이는 한두권의 책을 봐서 얻기 어렵습니다.

그래서 제가 어거지로 짧은 지식을 가지고 커널을 다루겠다는 것은 만용이라는 생각이 들었습니다.


앞으로 이 곳에 올리는 글은 크게 두 가지 방향을 잡을 생각입니다.
첫 째는, 보안 관련 기술을 습득하는 방법이고
둘 째는, 그 기술을 활용하는 방법입니다.



자~ 그럼 시작해볼까요?


 제가 혼자 끄적끄적 해본 프로젝트  중에 [Vmware 가상머신을 이용한 Window kernel analyze 방안] 이 있습니다. 간략히 설명하자면 Physical memory 를 dump 한 뒤에 windows 에서 커널이 crash될때 생성하는 파일인 crash dump 해더를 덧씌워 windbg로 분석하는 환경을 구축하는 방법에 대한 것이었습니다. 
 
 특히 vmware같은 툴을 사용할 때의 큰 장점은 물리 메모리에 대한 접근 제한을 OS가 할 수 없다는 점, 그렇기 때문에 malware같은 녀석이 방해공작이나 은닉을 할 수 없다는 장점이 있습니다. 헌데 지금와서 생각해보면 Qemu 이라는 Open Source Project 같은 경우는 가상머신에 아주 그냥 Debugger를 붙혀 놨습니다. -_-; Qemu에서 특정 키를 누르면 바로 디버거 모드가 되고 이는 OS와는 무관하게 동작합니다. 

 다시 주제로 돌아와 상기 프로젝트를 완성하기 위해 제가 참고한 참고문헌을 나열해보면 아래와 같습니다.
 [1] Mariusz Burdach - BlackHat06 발표자료

http://www.blackhat.com/presentations/bh-usa-06/BH-US-06-Burdach.pdf

[2] Andreas Schuster – DMP File Structure

http://computer.forensikblog.de/en/2006/03/dmp_file_structure.html

[3] Taehwa Lee – 가상 메모리를 물리 메모리로 변환

http://blogs.msdn.com/kocoreinternals/archive/2009/03/13/9472808.aspx

[4] 정덕영 - Windows 구조와 원리 ( 한빛 미디어 )

[5] Mark E. Russinovich & David A.Solomon – MICROSOFT WINDOWS INTERNALS ( 정보문화사 )

[6] 이석희, 김현상, 이상진, 임종인 - 윈도우 시스템에서 디지털 포렌식 관점의 메모리 정보 수집 및 분석 방법에 관한고찰 ( 고려대학교 정보보호대학원 논문 )

[7] MJ0011 – Analyzing VMware OperatingSystem & Detecting Rootkit from Outside ( PoC 2009 발표자료 )



 실제로 참고한 곳을 다 기재하면 수백곳이 넘을 겁니다. ㅎㅎ; 참고문헌이 말대로 참고한 곳을 기재하기보다 이 문서를 작성하면서 참고하면 좋을 곳이라는 중의미를 갖습니다. 

여기서 첫 번째 주제가 나옵니다.  
보안 관련 기술을 습득하는 방법 !!

 혼자서 프로젝트를 진행하면서 정말 많은 지식을 얻을 수 있습니다.
 제가 추천드리는 방법은 이렇습니다.
 "그 관련 기술을 꼭 습득하고 싶다는 생각이 드는 뛰어난 기술을 접해라."
  저 같은 경우는 PoC 2009 에서 MJ0011 의 발표를 보고 '아~! 저거 내가 꼭 한번 해보고 싶은데!!' 라는 생각을 하게 되었습니다. 당연한 얘기지만 바로 시작한게 아닙니다. 그 관련 기술을 꼭 획득하고 싶다는 생각을 한 뒤에, 어느 정도 시간이 지나고 해보게 된 것이죠. 제 생각에 이런 동기는 엄청난 영향을 줍니다. 사람마다 자신에게 추진력을 주는 상황이 다를 수 있기 때문에 제 경우는 한 예로만 생각해시길 바랍니다. 중요한 것은 저마다가 각자의 동기를 갖고 자신에게 없는 기술을 습득하고 싶다는 생각을 갖게 되는 것입니다. ^^

 비슷한 다른 예를 들어보겠습니다.  
 어쩌다가 [Stealth Hooking: another way to subvert the Windows kernel] 라는 문서를 접하게 되었습니다. 유명한 phrack 에 기고되었던 기사입니다. 저는 이 기사에 매료되어서 몇 번을 읽어봤는데, 도무지 이해를 못했습니다. 자신이 모르는 기술에 대해 다룬 글을 보는 건 정말 고역이죠 -_-;... 

 그런데 또 우연히 Gogi님이 쓰신 IDT Hooking 에 대한 글을 읽게 되었습니다. ( 고길고기 : http://gogil.tistory.com ) 그런데 그 소스를 보고 설명을 보는 순간~~! 제명이되쓰요. 는 아니고 그제서야 저 문서가 이해되게 됩니다. 그래서 바로 적용해봤죠. 그렇게 나온게 재밌어보여서 해보는 interrupt object hooking 을 이용한 keyboard hooking 입니다. ( 제 블로그 광고가 아닙니다. ^-^ㅋ ) 

 여기서 제가 말하고자 하는 바는,
 개인이 프로젝트를 진행하는데 처음부터 너무 큰 비용을 들이려고 하지 말라는 겁니다. 어떨지 모르겠지만, 제가 봤을때 처음부터 너무 높은 목표를 정해놓고 그걸 전부 자신이 해내겠다는 생각은 만용입니다. 42.195km를 달리는 마라톤 선수들도 처음부터 42.195km를 뛰지 않을 것입니다. 단계적으로 하나하나 목표를 이루면서 자신을 올려나가면 자연스레 그렇게 될 수 있다고 저는 생각합니다. 그러므로 베낄게 있다면 베끼고 참고할게 있으면 참고하면서 성취해가는 기쁨을 느끼시길 바랍니다. ^^ 

 



 두 번째 주제는 앞으로 제가 이 곳에 글을 쓰면서 직접 보여드리려고 합니다.
 정보수집 과정, 모인 정보를 분석, 최종 산출물을 내놓는 모습까지~!

 

예고편을 올려봅니다!

 

위는 HVM ( Hardware Assisted Virtual Machine ) 을 사용한 프로그램입니다. 
AMD SVM, INTEL VT-X 기반하에서만 동작합니다. 그 외에는 딱히 특별한게 없습니다. 똑같이 0x60, 0x64 포트에 관련된 동작을 합니다. 이는 주제가 아니고, 제가 생각하는 첫 번째는 바로 이 HVM을 활용해 OS Kernel 을 보호하는 방안입니다. 

 아! 오해는 하지 마시길 바랍니다. 
 상기 프로그램의 바탕은 Black Hat 08 에서 발표했던 Shawn Embleton 이 공개한 소스와 KVM, XEN, Gogi님의 keygen 코드, chpie 님의 0x60 hook 소스를 다 짜집기 해서 만든 것입니다. 

 특히 Shawn Embleton이 공개한 소스에는 특정 MSR 에 대한 접근을 제어하는 기반이 이미 있습니다 ^^.
 제가 한다면 뭐... 최대한 간단히 CR0 에 대한 접근 제어 정도를 해볼 생각입니다. CR0 에는 WP 비트가 있죠. 이걸 어떻게 잘 보호하면 애초에 커널 코드 수정자체가 불가능하기 때문에 제일 간단할거 같아서 우선순위를 줬습니다. 


 
두 번째는 정보만 모았고 아직 명확히는 모르는 기술입니다. 
정적 소스 분석 기법을 통해 취약점을 찾는 건데요. 흠... 아직 명확하지가 않습니다. 
 

어쨌든 한다면, 중간코드 IR을 대상으로 하는 방법을 찾고 싶습니다.
기존의 정적 소스 분석 기법에 대한 자료 수집 -> 자료 분석, 습득 -> 가능성 테스트 ( IDA plug-in 등을 통해 최대한 쉽고 빠르게 ) -> 가능하다면 다음 단계 -> gcc등의 오픈 소스 컴파일러를 통해 다양한 언어의 소스를 중간코드(IR)로 변환 하는 방법 -> 중간 코드를 대상으로 정적 소스 분석 기법을 적용 -> 가능하다면 다음 단계 -> Qemu과 같은 오픈 소스 가상머신을 통해 다양한 플랫폼의 binary를 IR로 변환하는 방법 


지금은 아주 많이 첫 번째걸로 생각이 기울어 있네요 ㅎㅎ;

 
이상입니다. 건승하세요~ ^^ 
마플 드림. 
 

 

****************************************************************************************************

본 포스팅의 저작권은 보안인닷컴과 작성자에 있으며 상업적 이용을 배제하며 콘텐츠 이용시에는 반드시 출처와 링크를 이용해 주시기 바랍니다. 무단도용은 저작권법에 저촉을 받습니다..

****************************************************************************************************

Posted by 알 수 없는 사용자
,