Skip to content

BoB “보안 개론” 강의 1학기 개요 및 2학기 내용

August 23, 2012

안녕하세요, GrayHash 수석 컨설턴트 이승진입니다.

저는 현재 지식경제부와 KITRI에서 운영하고 있는 BoB(Best of the Best) 프로그램에서 멘토로 활동하고 있습니다. BoB는 올해 처음 출범하여서 1기입니다. 여기서 저는 멘티들에게 진로나 학습 방향 상담 및 강의를 진행하고 있습니다.

이번 글에서는 BoB 1학기에 대한 개요, 그리고 2학기 과정에 대해서 간략히 알아보겠습니다.

 

 

저는 루멘소프트의 선임연구원 “신동휘” 멘토님과 함께 “보안 개론” 수업을 담당하였습니다. 대학교에서 진행되는 일반적인 보안 개론 수업(Introduction to computer security)은 보안의 전반적인 내용에 대해서 배웁니다. 예를 들어, 암호학, 네트워크, 시스템, 웹, 악성코드 등에 대해서 배우죠.

다행히 BoB에는 보안 개론 이외에 다양한 보안 과목이 존재합니다. 가령, 암호학이나 OS, 네트워크 수업이 별도로 있습니다. 덕분에, 보안 개론에서는 “보안” 자체에 대해서 좀 더 집중할 수 있게 되었습니다.

 

 

먼저, BoB 과정에 대해서 간략하게 소개를 드리겠습니다. BoB는 총 3학기로 구성되어 있는데, 다음과 같습니다.

  – 1학기: 2개월 과정의 강의
  – 2학기: 4개월간 진행되는 프로젝트
  – 3학기: 심화 강의 + 프로젝트 (예정)

BoB가 시작된지 약 2개월이 지났고, 1학기가 끝나갑니다. 그 동안 BoB “보안 개론” 수업은 보안에 관한 전반적인 지식, 동향, 산업의 이해를 다루었습니다. 학생들의 지식 수준이 천차만별이었고, 교육 기간이 길지 않기 때문에 아쉽지만 자세한 실습을 해보거나 심화 내용을 다루지는 못했습니다.

 

 

짧게나마 2개월 동안 진행한 강의 내용의 특징을 간략히 알아보겠습니다.

  – 추상적으로 학습하는 취약성 원리의 이해
  – Attack surface
  – 보안 동향 및 산업 이야기

여기서 제가 담당한 부분은 취약성 원리의 이해와 Attack surface였고, 이 수업에서는 시스템 해킹에서 발생하는 취약점 유형들과 그에 대한 mitigation들에 대해 다루었습니다. 학생들은 DEP, ASLR, Heap Spray, Timing attack, Virtual machine escape, ROP, Sandbox, Memory leak 등의 개념에 대해 배웠습니다. 또 간단한 interpreter를 직접 제작해보기도 했었습니다.

이 과정들은 컴퓨터공학도가 아니거나 컴퓨터를 많이 접해보지 못한 학생들도 쉽게 이해할 수 있도록 추상적으로 강의가 진행되었습니다.

 

 

현재는, 1학기 과정이 끝나가기 때문에 학생들 평가를 위해 퀴즈와 과제를 많이 내고 있습니다. 보안 개론은 학기 중 여러 개의 과제가 부여되었는데, 평가에 반영되는 과제는 3개입니다. 각 과제를 간략히 요약하면 다음과 같습니다.

 

  1) Validator 우회하여 허가되지 않은 Instruction 실행

    – 구글 크롬 NACL은 웹 브라우저 상에서 Native client 바이너리가 실행되기 전에 자체 제작한 Validator를 이용하여 바이너리에 허가되지 않은 명령어가 포함되었는지 검사합니다. 가령, system call 류의 명령어는 direct로 호출될 수 없고, 만약 이런 류의 명령어가 포함된 경우엔, 바이너리를 실행하지 않습니다.

    – 본 과제에서는, 공격자는 “mov/inc/dec/jmp” 명령어만 실행 가능하고, Validator는 명령어들을 에뮬레이팅하지 않는다는 가정하에 “sysret” 명령을 실행하는 방법에 대해 알아내는 것이 문제였습니다.

    – CISC의 특징을 이용하여, 명령어들의 중간으로 점프하는 방식으로 “sysret”를 실행하도록 유도하는 문제였습니다.

 

  2) 기본 Fuzzer 제작

    – 파일 포맷 Fuzzer는 기본적으로 Runner, Mutator, Catcher로 구성되어 있습니다. Advanced한 개념은 들어가지 않았지만, 학생들이 자신들만의 퍼저를 구현해본다는 점에서 추진한 과제입니다.

    – 현재 진행 중인 과제이며, 실제 많은 학생들이 자신들만의 버그(크래쉬)를 찾았습니다. (크래쉬를 찾지 못해도 점수는 깎이지 않으며, 과제를 충실히 구현했는지에 대해서만 평가를 합니다.)

 

  3) Timing issue가 관련된 Challenge 제작

    – 개인적으로 Timing attack은 가장 흥미로운 보안 취약점 유형 중에 하나라고 생각합니다. Timing attack의 개념은 아주 단순하지만, 실제 프로그램에서 이러한 유형의 취약점을 찾아내기는 쉽지 않습니다.

    – 본 과제는, 학생들이 직접 Timing issue가 관련된 문제를 제작해보는 것입니다. 학생들은 BoB 강의에서 이미 Race condition이나 암호 처리 루틴에서 발생할 수 있는 Timing issue에 대한 기본 개념은 배운 상태입니다.

    – Timing issue에 관한 문제를 제작하는 것은, 경험있는 해커에게도 쉬운 것이 아닙니다. 이런 유형의 문제를 푸는 것은 비교적 쉽지만, 좋은 문제를 만드는 것은 고난이도의 작업입니다.

    – 이러한 과제를 낸 이유는, 학생들의 수준과 배경이 천차만별이기 때문이었습니다. 어떠한 학생들은 BoB에 들어오기 전부터 해킹 지식이 충분한 반면, 어떠한 학생들은 약간의 프로그래밍 지식만 있었기 때문입니다.

    – Timing issue 문제를 제작하는 것은, 본인에게 충분한 idea만 있다면 보안과 관련된 지식이 없더라도 가능합니다. 즉, 보유하고 있는 배경 지식과 관련 없이, 학생들의 창의력과 보안(해킹)에 관한 센스를 평가할 수 있는 항목이라 판단하여 출제하였습니다.

    – 이 과제 역시 현재 진행 중입니다.

 

 

이상입니다. 학생들이 열의를 갖고 1학기 과정에 참가해주었으며, 저를 비롯하여 다른 멘토분들 역시 많은 노력을 해주셨습니다.

2학기에는 강의 과정이 없으며, 프로젝트 위주로 진행될 예정입니다. 다양한 프로젝트가 준비 중이며, 제가 담당한 프로젝트의 주제는 “BoB Bug 원정대” (줄여서 BBB) 입니다.

현재 BBB 프로젝트 팀이 구성되지 않아 구체적인 계획과 목표는 정하지 못했지만, 주로 국내 소프트웨어의 취약점을 발견할 예정이고, 발견한 버그는 국내 보안 인프라 수준을 향상시키기 위해 각 벤더에게 리포트를 할 계획입니다.

프로젝트 팀원은 4명을 예상하고 있으며, 발견할 버그의 목표 갯수는 최소 50~100개를 예상하고 있습니다.

BBB 프로젝트를 통해 다음과 같은 효과를 기대하고 있습니다.

  – 버그 헌팅 경험 습득
  – 취약점 리포트를 통한 국내 보안 수준 향상
  – 오펜시브 리서치 커뮤니티 활성화
  – 업계에서 원하고 있는 인력 양성

기회가 된다면 2학기 과정에 대해서도 포스팅을 하겠습니다. BoB 학생들의 활약상을 기대해주시기 바랍니다!

 

Advertisements

From → Security Misc

3 Comments
  1. Anonymous permalink

    교육 내용을 보니… 멘티들이 진입 장벽이 높은 오펜시브 리서치에 좀 더 쉽게 다가갈 수 있겠네요 ^^
    아… 저도 듣고 싶어요 ㅠ_ㅜ

댓글을 남겨주세요.

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: