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

안녕하세요.

아저씨이노학난성 마플입니다.

 

이번 2011 Boanin 팀블로그 일원으로 활동하게 되었습니다. 잘 부탁드리겠습니다.

 

 

이번 글의 주제는 취약점 분석의 끝없는 깊이 입니다.

부제는 해커로서 가장 폼나는 시스템 해커가 되기 위한 길 입니다.

 

 

글을 시작하기에 앞서,

이 글은 오로지 필자의 지식 생각에 기반을 둔 글로,경험했던 내용을 토대로 이렇게 하면 시스템 해커가 될 수 있지 않을까?” 라는 필자의 지향점을 말하고 있습니다. 그러므로 모든 내용은 충분히 생각과 검토를 거쳐서 받아들이시길 바랍니다.

 

 

서론

1.     필자가 보는 취약점 분석 업무의 현실

 취약점 분석 업무는 정말 소수만이 할 수 있는 일입니다. 그 이유는 여러가지가 있겠지만, 우리나라의 특성, 0-day 공격 등에 둔감하고 유지 보수나 가쉽거리 정도로 취급되기 때문이라고 생각합니다. Mass SQL injection 외에 광범위한 공격이 없는 것을 봐도 알 수 있죠. 특히 취약점을 활용한 0-day 혹은 1-day 공격 거기다 시스템이란 단서까지 붙으면 거의 없는 것과 마찬가지입니다.

 

 그래서 보통 취약점 분석 업무는, 취약점 본연보다 백신이나 방화벽 장비 등에 추가할 Pattern 을 뽑아내는데 더 집중되는 게 현실입니다. 그러니 취약점 분석도 그렇게 깊은 수준까지 이뤄지지 않습니다. 그럴 이유도 없고 필요도 없기 때문입니다. 또 다른 쪽으로 활용되는 것은, 취약점 분석팀이 있는 자사의 기술력 광고를 위해 문서를 발행하는 경우입니다. 이 경우가 더 낫다고 생각합니다. 물론 취약점 하나 전부 분석하기 위해 걸리는 시간이 보장될 때 얘기입니다만

 

 , 그렇습니다. 요즘은 어디를 가도 환경이 열악하다고 토로하는 글 들이 많은데 보안 시장도 마찬가지라고 생각합니다. 정보보호학을 전공하신 분은 4년이나 배우므로 조금 더 나을지도 모릅니다. 하지만 저의 경우 그 깊이를 따라가기 버거웠습니다. 그래서 출퇴근 시간도 줄여서 공부하려고 무리해서 강남에 집을 전세로 구했었던 기억이 나네요. 그 때 생각하면 지금도 잠을 못 잡니다. (…)

 

본론

1.     취약점이라고? 어떤 것들이 있을까?

 취약점들에 대한 정보를 얻고 싶으면 exploit-db를 찾아가시면 됩니다. 이 곳에는 보통 외국에서 많이 사용되는 프로그램들에 대한 취약점이 자주 올라오지만, 드물게 IE 취약점이나 OS 관련 취약점들도 올라옵니다. 그리고 자세한 설명을 첨가해놓은 경우도 있으니 잘 찾아보시면 취약점이 어떻게 동작하는지 쉽게 감을 잡으실 수 있을 겁니다.

 한 예로, CVE-2009-2692: Linux kernel proto_ops NULL Pointer Dereference 를 살펴보죠. 이 취약점은 Linux Kernel 취약점으로, 특정 옵션을 주고 Socket을 생성했을 때 sock->ops->sendpage() Null Pointer 가 되는 것을 검증 없이 호출하기 때문에 생깁니다. 아마, 많은 보안 지망생 분들이 여기서 의문이 생기실 겁니다. 안 생기시면, 제가 처음에 드린 말씀을 여기서 되새겨 주세요. 언제나 비판과 검증하는 자세를 잊지 마세요.

 Null-Pointer를 참조하는 것이 어떻게 취약점이 됩니까? Null-Pointer를 참조하면 Computer는 혹은 Architecture는 어떤 동작을 합니까? 혹은 OS는 어떤 동작을 합니까? 이 질문에 답변을 할 수 있어야만, CVE-2009-2692를 분석할 수 있는 최소한의 조건을 갖추신 겁니다.

 

2.     그런 취약점을 분석하기 위한 지식 습득

 그럼 이런 지식을 어떻게 습득할 수 있을까요? 많은 방법론이 있습니다. OS관련해서 리눅스커널분석이나, 서적을 통하는 방법도 있겠고 Windows 관련 서적을 읽는 방법도 있습니다. 제가 추천하는 방법을 알려드리겠습니다.

l  프로그래밍에 자신이 있는가?

Ø  리눅스 커널 소스 분석

l  영어를 잘 하는가?

Ø  잘한다면 Intel® 64 and IA-32 Architectures Software Developer's Manual

l  이도 저도 아니라면 ?

Ø  리눅스나 윈도우 OS 서적

 

3.     그래서 필자가 말하고 싶은 목표점?

 처음 Buffer Overflow 라는 취약점이 등장했을 때, 이 취약점을 발견한 사람은 Compiler 와 System, Architecture 에 깊은 조회가 있었을 거라고 생각합니다. Stack 영역의 사용법에 대해 정확한 지식을 넘는 지혜가 있었고 이를 마음대로 자신의 흐름으로 가져올 수 있는 프로그래밍 능력도 있었습니다. 제가 생각하는 시스템 해킹이란, 이런 사람들에 의해서 선도되는 분야입니다. System-OS-Architecture 에 정통하는 지식과 이를 활용할 수 있는 지혜가 쌓이도록 충분한 수련을 거친 사람들을 말합니다. 지금도 창과 방패의 싸움은 이런 사람들에 의해 주도되고 있습니다. 취약점 분석은 이런 사람들의 뒤를 쫓는 일입니다( 그리고 언젠가는, 나란히^^). 그에 상응하는 공부와 목표를 가지시길 바랍니다.

 

4.     취약점 분석을 하고 싶은 분들에게 드리고 싶은 말.

 취약점은 광범위한 분야의 지식이 필요합니다. 위에서 언급드린 OS 단의 취약점 말고 굳이 예를 들면 BIOS와 같은 더 로우레벨, 또는 분야가 다른 IE 취약점들 그리고 그 exploit 방법인 Heap Spray, ROP 등도 있습니다. 이 쪽의 지식은 리버스 엔지니어링 능력 뿐만 아니라, ASLR 이나 DEP에 대한 지식도 필요합니다. 왜냐면 취약점 exploit 방법은 [취약점발견->exploit->exploit방어방법->방어방법bypass->더 강력한 방어방법-> 더 강력한 bypass 혹은 새로운 취약점 exploit 방법] 의 절차가 끊임없이 반복되기 때문입니다. 그렇기 때문에 자신이 정확히 원하는 분야가 어디인지 잘 생각해보시길 바랍니다. 누구도 모든 분야를 다 잘할 수는 없습니다. 하지만 자신의 전문 분야라고 분야를 하나는 당당히 말할 수 있어야 되지 않겠습니까~?

 

 그리고 다른 하나는, 어디까지 공부할 것인가?” 입니다.

 제가 APIC 를 처음 접했을 때, Programmable 이란 단어를 보고 아니, 프로그래밍 가능한 칩이라고?’ 놀라서 관련 자료를 엄청나게 찾아 다녔던 기억이 납니다. 그 때는 어디서도 명확한 해답을 얻을 수가 없었죠. 아마 공부하는 과정에서 이런 경우를 많이 만나시게 될 겁니다. 그걸 다 알고자 집착해서 쫓아다니시면 답이 나오지 않을 정도로요. 그러니, 공부를 하실때 자신의 목표와 범위를 명확히 하시는게 중요합니다. OS 윗 단의 취약점에 대한 공부만 해도 평생이 걸릴 것입니다. 리버스 엔지니어링만 공부하는데도 한 세월이 걸릴 것입니다. 위에서 말했듯 자신이 당당히, "내가 자신있습니다." 라고 말할 수 있는 공부를 하나는 먼저 만들어 놓으시길 바랍니다. APIC 칩을 프로그래밍 할 수 있게 되면, 보안과 연계되는 쪽은 Rootkit 이나 Keyboard 보안 쪽의 지식이 하나 늘게 되지만 자신의 목표를 두고 봤을 때 그 지식이 도움이 되지 않을 수도 있습니다.  제 경험상, 그리고 생각해봤을 때, "APIC 칩 프로그래밍 할 줄 알아요?" 라고 묻거나 할 줄 안다고 대단하네, 하고 생각해주는 곳은 드뭅니다. 만약 자신이 정말 하고 싶어서 알고 싶어서, 어떤 것을 파고들었다면 결과물을 내십시오. 문서를 작성하든 프로그래밍을 작성하든! 귀찮더라도 남에게 보여줄 수 있는 자료를 남겨놓으세요. 그 문서는 자신이 한 공부를 정리해줄 뿐 아니라, 타인에게 길이 되어주고, 자신의 능력을 인정받을 수 있는 근거가 되어줍니다. 


 저는 애초에 원하는 게 다 아는 것 이었습니다. 그래서 그렇게 삽질을 해왔고, 지금은 APIC칩 프로그래밍 하는 방법도 알고 있습니다. 제 목표가 있었기 때문입니다. 제가 아무 정보도 얻을 수 없던 그 때 그냥 ', 뭐 그런 게 있나보다.'하고 넘어갔으면 아마, 거기서 끝이 났겠죠. 목표가 자신을 끌어올려줍니다

 

결론

 가끔씩 안절부절 못하고 자신의 미래를 걱정하시는 분들을 봅니다. 기술이란 것의 차이가 얼마나 클까요? 아무것도 모르는 사람과 한 분야의 전문가를 두고 봤을 때요. 전 절대 3년이 안 된다고 생각합니다. 바꿔 말해서, 한 분야의 전문가가 되는 데는 3년이면 됩니다. 이것은 유명한 얘기로 1만 시간의 법칙이라고 불리는 것입니다.

 물론 이 1만 시간의 법칙에는, 오로지 수련 시간이라는 단서가 붙기는 합니다. 하지만, 취약점 분석가라는 직업을 얻는데 전문가래야 되느냐? 아닙니다. 신입도 가능하거든요. 그리고 분석가는 일하는 시간을 전부 수련하는 시간으로 돌릴 수 있다는 장점이 있습니다. (경험상?)

 포기하지 말고, 포기하려 하지 말고, 포기할 생각도 마라.”

 답답하고 초조함을 모두 자신의 에너지로 삼으셔서. 2011년에는 원하시는 일 모두 이뤄지고 좋은 일만 생기길 빕니다. 새해 복 많이 받으세요.

 



2011년

Maple 배상.


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

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

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

Posted by 알 수 없는 사용자
,