2014 CodeEngn Conference 10
열혈 취약점 헌터들의 고분군투기!
취약점을 찾게되면 어떤 일이 벌어질까? 급전이 필요한 외롭고 찌질한 대한민국 해커들의 급전을 위한 취약점 찾기 여행기. 과연 우리는 취약점을 찾고 급전을 만들어 외롭고 찌질한 이 상황을 타개할 수 있을 것인가?
http://codeengn.com/conference/10
http://codeengn.com/conference/archive
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석GangSeok Lee
2014 CodeEngn Conference 11
DTrace를 보안 관점에서 활용해보자!
DTrace 프레임워크는 솔라리스 기반으로 개발된 동적 추적 프레임워크로 현재 Solaris, Mac OS X, BSD 등에 적용되고 있다. 프레임워크는 운영체제 개발 시점에 커널에 통합된 프레임워크로 사용자 및 커널 레벨의 다양한 정보(메모리나 CPU, 파일시스템, 네트워크 자원의 모니터링이나 특정 함수의 인자 추적 등)를 동적으로 분석할 수 있게 하여 애플리케이션 테스팅에 주로 활용되고 있다. 이러한 장점을 활용하여 최근에는 보안 관점에서 프레임워크를 사용하는 경우가 늘어나고 있다. 퍼징 모니터링이나, 바이너리 동적 분석과 같은 취약점 분석, 악성코드 동적 분석, 루트킷 개발이 한 예이다. 본 발표에서는 DTrace가 무엇인지 살펴보고, 윈도우의 filemon의 기능을 구현해보도록 한다. 이 발표를 통해 분석가에게 생소할 수 있는 Mac OS X의 바이너리 분석에 도움이 될 것이라 생각한다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론GangSeok Lee
2013 CodeEngn Conference 09
MS 윈도우의 원데이 패치에 대해서 분석 및 접근 방법을 살펴본다. 또한, 최근에 나온 원데이 취약점 패치 분석을 진행하며 필요한 팁에 대해서 알아보고자 한다.
http://codeengn.com/conference/09
http://codeengn.com/conference/archive
[2014 CodeEngn Conference 11] 이경식 - 동적 추적 프레임워크를 이용한 OS X 바이너리 분석GangSeok Lee
2014 CodeEngn Conference 11
DTrace를 보안 관점에서 활용해보자!
DTrace 프레임워크는 솔라리스 기반으로 개발된 동적 추적 프레임워크로 현재 Solaris, Mac OS X, BSD 등에 적용되고 있다. 프레임워크는 운영체제 개발 시점에 커널에 통합된 프레임워크로 사용자 및 커널 레벨의 다양한 정보(메모리나 CPU, 파일시스템, 네트워크 자원의 모니터링이나 특정 함수의 인자 추적 등)를 동적으로 분석할 수 있게 하여 애플리케이션 테스팅에 주로 활용되고 있다. 이러한 장점을 활용하여 최근에는 보안 관점에서 프레임워크를 사용하는 경우가 늘어나고 있다. 퍼징 모니터링이나, 바이너리 동적 분석과 같은 취약점 분석, 악성코드 동적 분석, 루트킷 개발이 한 예이다. 본 발표에서는 DTrace가 무엇인지 살펴보고, 윈도우의 filemon의 기능을 구현해보도록 한다. 이 발표를 통해 분석가에게 생소할 수 있는 Mac OS X의 바이너리 분석에 도움이 될 것이라 생각한다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
[2013 CodeEngn Conference 09] 제갈공맹 - MS 원데이 취약점 분석 방법론GangSeok Lee
2013 CodeEngn Conference 09
MS 윈도우의 원데이 패치에 대해서 분석 및 접근 방법을 살펴본다. 또한, 최근에 나온 원데이 취약점 패치 분석을 진행하며 필요한 팁에 대해서 알아보고자 한다.
http://codeengn.com/conference/09
http://codeengn.com/conference/archive
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석GangSeok Lee
2013 CodeEngn Conference 09
게임 보안 제품의 보안성이 강화됨에 따라 해킹툴의 공격 기법 또한 다양해 지고 있다. 몇 몇 해킹툴은 게임에 접근하기 위해 OS의 디버깅 메커니즘 악용한다거나 시스템 프로세스로 위장하게 되는데 이와 같은 몇가지 변칙적인 기법에 대해 알아보고자 한다.
http://codeengn.com/conference/09
http://codeengn.com/conference/archive
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석GangSeok Lee
2013 CodeEngn Conference 09
게임 보안 제품의 보안성이 강화됨에 따라 해킹툴의 공격 기법 또한 다양해 지고 있다. 몇 몇 해킹툴은 게임에 접근하기 위해 OS의 디버깅 메커니즘 악용한다거나 시스템 프로세스로 위장하게 되는데 이와 같은 몇가지 변칙적인 기법에 대해 알아보고자 한다.
http://codeengn.com/conference/09
http://codeengn.com/conference/archive
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study KOGangSeok Lee
2014 CodeEngn Conference 11
IE 원데이로 시작하는 실전 익스플로잇!
BOF, FSB, UAF 등의 메모리 커럽션 취약점을 워게임, CTF 통해서 배우게 되지만 비교적 더 낮은 난이도에도 불구하고 실제 상용 프로그램에 대해서는 막연한 느낌뿐인 학생들이 많은 것 같다. 웹브라우저에서 발견되는 취약점 중 가장 흔한 UAF에 대해 설명하고 비교적 최신에 발견된 CVE-2014-0322, CVE-2014-1776 두가지 전형적인 IE 브라우저 UAF 취약점을 익스플로잇하는 방법을 설명하려고 한다. 추후 사례로 소개되는 두 가지 취약점에 대해 직접 학습이 가능하도록 단계별 튜토리얼을 별도 제공하고자한다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
[2012 CodeEngn Conference 07] M-Stoned - iThreatGangSeok Lee
2012 CodeEngn Conference 07
그동안 Mac 사용자들은 악성코드로부터 안전하다는 믿음이 있었고 Apple사 역시 마케팅에 활용했었다. 이런 믿음은 2012년 4월, 전 세계 65만대의 Mac 컴퓨터가 Flashback에 감염되고 Mac 사용자에 대한 표적공격 악성코드가 발견되면서 Mac 또한 악성코드의 위협으로부터 완전히 자유로울 수 없음이 확인됐다. 지금까지 발견된 주요 Mac 악성코드에 대해 알아보고 Mac 악성코드 분석 방법과 분석시 유의 사항에 대해 발표한다.
http://codeengn.com/conference/07
2009 CodeEngn Conference 03
새로운 CTF 운영 단체로 인하여 전체적으로 변화된 스타일 등을 간략히 알아보고 DEFCON CTF 2009 Binary Leetness 분야의 100부터 500까지의 문제를 풀이해본다.
http://codeengn.com/conference/03
[4th revolution] new technology security education material] android security...james yoo
Interest in mobile security is increasing due to the development of the future environment. Through the diagnostic criteria of mobile security, we have made the diagnostic case for beginners to study and study. I hope it helps many people.
[2012 CodeEngn Conference 06] x82 - 모바일 스마트 플랫폼 원격, 로컬 취약점 공격 분석GangSeok Lee
2012 CodeEngn Conference 06
모바일 스마트 플랫폼(스마트폰, 태블릿PC, 스마트TV)에 존재하는 pointer de-reference 취약점과 use-after-free 취약점을 대상으로 시도되는 heap spraying 공격 기법과 자동화된 drive-by download 공격 코드를 소개할 예정이고 최근 2년간 스마트 플랫폼의 커널과 어플리케이션 내에 존재했던 로컬 취약점을 통한 권한 상승 공격 기법에 대해 설명한다.
http://codeengn.com/conference/06
[2014 CodeEngn Conference 11] 박한범 - 가상화 기술과 보안GangSeok Lee
2014 CodeEngn Conference 11
가상화와 보안의 합작
가상화 기술은 대상체를 추상화된 리소스로 가상화하여 활용할 수 있는 기술이다. 가상화 기술이 하드웨어 차원에서 지원되기 시작한 이후로 CPU가 제어하는 자원을 하드웨어 레벨에서 가상화 할 수 있게 되었다. CPU가 하드웨어 수준에서 가상화를 지원하기 위해 설계된 구조와 인터페이스가 존재하는 계층이 기존에 운영체제에서 사용하던 Ring 0~3 계층 상위에 추가되면서 이를 보안에서 활용하는 시도들이 있어왔으며 대표적으로 ARM TrustZone 아키텍처가 있다. TrustZone과 같은 아키텍처는 운영체제와는 다르게 오직 보안에 관련된 서비스와 기능만을 탑재한 보안전용운영체제를 먼저 상주시킨다. 운영체제가 특권/사용자 계층을 나누어 사용자 계층에서 하드웨어 자원에 접근하는 것을 막고 대신 요청을 받아 처리함으로서 하드웨어 자원을 보호했던 것과 유사하게 보안/일반 계층으로 나눠 보안이 필요한 동작시에 보안전용운영체제가 요청을 받아 처리하는 구조를 갖고, 일반 계층은 격리되어 보안 계층에 접근할 수 없으므로 보안성을 한층 높힌 구조이다. 본 발표는 가상화 기술에 대한 개괄적 설명과 이를 활용한 PS/2 키로거를 제작 I/O를 가로채는 과정을 살펴보고 운영체제 상위 권한이 어떤 의미를 갖는지 그리고 CPU하드웨어 레벨의 강력한 권한을 체험하는 것을 통해 가상화 기술의 특성을 파악해보자 한다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
[2014 CodeEngn Conference 11] 남대현 - iOS MobileSafari Fuzzer 제작 및 FuzzingGangSeok Lee
2014 CodeEngn Conference 11
모바일환경에서 Borwser Fuzzing을 하고 싶었고, 나만의 Fuzzing시스템을 만들고 싶었다.
iOS(Jailbreak환경)에서 MobileSafari를 대상으로 24시간/7일, Fuzzing 도중 Crash가 발생하여 MobileSafari가 종료되더라도 MobileSafari를 재시작시켜서 Fuzzing을 시도하는 시스템을 제작하였다. 어떻게 구성했고, ASLR을 어떻게 극복하였는지 공유하고자 한다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
[2014 CodeEngn Conference 11] 김기홍 - 빅데이터 기반 악성코드 자동 분석 플랫폼GangSeok Lee
2014 CodeEngn Conference 11
악성코드도 모으면 돈이 된다!
일반적으로 하나의 악성코드를 분석하기 위해서는 정적 분석, 동적 분석, 디스어셈블 등의 여러 가지 분석 방법이 동원된다. 하지만 수십, 수백만의 악성코드를 분석하기 위해서는 우리가 할 수 있는 방법은 어떤 것들이 있을까? 또한 하나의 악성코드에 연관된 여러가지 팩트들을 어떻게 연결시켜서 분석 할 수 있을까? 하나가 아닌 수십만의 악성코드를 분석했을 때 추가적으로 추출 할 수 있는 정보는 없을까? 이러한 질문들을 해결 하기 위해서 요즘 빅데이터 기반의 악성코드 분석 기법이 많이 사용된다. 빅데이터 기반의 악성코드를 분석하기 위한 방법과 주요 팩트 들은 어떤 것들이 있을지 알아보고 이를 자동화 하기 위한 플랫폼 개발에 대한 이야기를 해볼 수 있도록 한다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
2014 CodeEngn Conference 11
웹브라우저 구조에 따른 자바스크립트 난독화 알아보기
이제는 인터넷 없이 생활조차 하기 힘든 세상으로 킬러 어플리케이션로 자리잡았다. 이러한 인터넷 환경에서 웹 사이트 방문만으로 악성코드에 감염 될 수 있다. 이 공격을 드라이브-바이 다운로드 (Drive-By Download)로 불리며, 웹 해킹, 소프트웨어 취약점, 악성코드를 같이 사용하는 공격 기술이다. 그리고 공격에 사용되는 별개의 기술들을 하나로 묶어 주는 것이 자바스크립트로 탐지와 분석을 어렵게 하기위해 난독화를 사용한다. 그러면, 왜 자바스크립트 난독화가 생길 수 있는지 브라우저 컴포넌트 구조를 통해 알아보고, 종류에 대해 알아본다. 그리고 자바스크립트 난독화를 해제하기 위한 방법론에 대해서도 알아본다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
[2014 CodeEngn Conference 11] 박세한 - IE 1DAY Case Study ENGangSeok Lee
2014 CodeEngn Conference 11
IE 원데이로 시작하는 실전 익스플로잇!
BOF, FSB, UAF 등의 메모리 커럽션 취약점을 워게임, CTF 통해서 배우게 되지만 비교적 더 낮은 난이도에도 불구하고 실제 상용 프로그램에 대해서는 막연한 느낌뿐인 학생들이 많은 것 같다. 웹브라우저에서 발견되는 취약점 중 가장 흔한 UAF에 대해 설명하고 비교적 최신에 발견된 CVE-2014-0322, CVE-2014-1776 두가지 전형적인 IE 브라우저 UAF 취약점을 익스플로잇하는 방법을 설명하려고 한다. 추후 사례로 소개되는 두 가지 취약점에 대해 직접 학습이 가능하도록 단계별 튜토리얼을 별도 제공하고자한다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
2014 CodeEngn Conference 11
안드로이드에서의 부트킷 동작방식 알아보기
부트킷 악성코드는 부팅 과정에서 악성코드를 감염시켜 악성코드가 실행 시 자신의 존재를 숨겨 백신에서 악성코드의 탐지와 치료를 어렵게 하기위해 사용되는 방식이다. 이러한 Oldboot 부트킷 악성코드가 올해초 2014년 1월에 안드로이드에서 발견되었다. 따라서 본 발표에서는 이 안드로이드 상에서 사용된 부트킷의 동작 방식과 특이점에 대해서 다룰 예정이다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
2014 CodeEngn Conference 11
안드로이드에서의 부트킷 동작방식 알아보기
부트킷 악성코드는 부팅 과정에서 악성코드를 감염시켜 악성코드가 실행 시 자신의 존재를 숨겨 백신에서 악성코드의 탐지와 치료를 어렵게 하기위해 사용되는 방식이다. 이러한 Oldboot 부트킷 악성코드가 올해초 2014년 1월에 안드로이드에서 발견되었다. 따라서 본 발표에서는 이 안드로이드 상에서 사용된 부트킷의 동작 방식과 특이점에 대해서 다룰 예정이다.
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
[2014 CodeEngn Conference 11] 정든품바 - 웹성코드GangSeok Lee
2014 CodeEngn Conference 11
웹페이지를 조작한다면 무엇을 해보시겠습니까 ?
우리는 매일 인터넷을 사용하지만 접속하는 웹페이지마다 변조되었다는 의심을 해보는 경우는 거의 없다. 웹브라우저가 웹페이지를 읽어오는 과정과 이를 이용해서 조작되는 과정을 알아보고 악성코드 제작자 입장이 되어 무엇을 할 수 있는지 알아보자
http://codeengn.com/conference/11
http://codeengn.com/conference/archive
[2014 CodeEngn Conference 10] 정광운 - 안드로이드에서도 한번 후킹을 해볼까 (Hooking on Android)GangSeok Lee
2014 CodeEngn Conference 10
앱의 라이브러리를 내맘대로~
후킹은 이미 분석이나 개발등 다양한 목적으로 많이 사용되고 있다. 기존의 함수 후킹을 ARM 아키텍처 환경인 안드로이드에서 어떻게 구현했는지에 대해 알아보고 구현된 도구를 통해 안드로이드 환경에서 후킹을 어떻게 활용할 수 있는지에 대해 알아본다.
http://codeengn.com/conference/10
http://codeengn.com/conference/archive
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기GangSeok Lee
2014 CodeEngn Conference 10
MS 에게 속았어요
Windows 운영체제가 지원하는 디버거 지원 기능들과 브랜치 트레이서를 구현하기 위한 몇 가지 방법들을 소개하고, Windows 커널에 이미 구현되어있는 하드웨어 기반 브랜치 트레이서 코드 분석과 여기에 존재하는 의도된(?) 버그를 살펴본다.
http://codeengn.com/conference/10
http://codeengn.com/conference/archive
[2013 CodeEngn Conference 09] x15kangx - MS Office 2010 문서 암호화 방식 분석 결과GangSeok Lee
2013 CodeEngn Conference 09
컴퓨터로 문서 작성 시 주로 사용되는 프로그램 중 MS Office가 문서에 암호를 설정 할 때 동작하는 과정을 발표하고자 한다. 알고리즘 분석은 IDA와 ollydbg를 활용하여 분석하였으며, 결과적으로 Brute force 공격 가능성 여부에 대한 생각 또한 공유하고자 한다..
http://codeengn.com/conference/09
http://codeengn.com/conference/archive
[2013 CodeEngn Conference 09] proneer - Malware TrackerGangSeok Lee
2013 CodeEngn Conference 09
최근 조직의 침해는 조직의 보안 환경이 강화되면서 장기간에 걸쳐 일어난다. 목적을 달성할때까지 지속 매커니즘을 사용하여 시스템에 잠복하거나 다른 시스템으로 이동해간다. 이런 상황에서 악성코드가 사용하는 지속 매커니즘은 무엇이 있는지, 그리고 침해사고를 조기에 인지하여 악성코드의 유입 경로를 찾을 수 있는 방안을 살펴본다.
http://codeengn.com/conference/09
http://codeengn.com/conference/archive
[2013 CodeEngn Conference 09] BlueH4G - hooking and visualizationGangSeok Lee
2013 CodeEngn Conference 09
리버서들이나 어플리케이션 분석가 들에게 hooking이란 뗄레야 뗄수가 없는 존재이다. 이러한 후킹을 위해 detours 등 매우 많은 라이브러리도 나와 있지만, 많은 수의 어플리케이션을 분석하거나, 심플하게 내부 플로우만 살펴보기에는 생각보다 손이 많이가는게 사실이다. 이를 좀 더 손쉽고 심플하도록 구현해 보고, visualization 을 도입하여 좀더 직관적으로 분석할 수 있도록 해 볼 것이다.
http://codeengn.com/conference/09
http://codeengn.com/conference/archive
[2013 CodeEngn Conference 09] wh1ant - various tricks for linux remote exploitsGangSeok Lee
2013 CodeEngn Conference 09
시간이 지나면 지날수록 리눅스에서는 보안 기술에 의해 원격 공격이 힘들어지고 있다. 원격 버퍼 오버플로우 공격을 위한 몇가지 트릭을 공개할 것이다. 지금까지 공격은 주로 취약점 코드에 의존성이 높거나 brute force를 사용한 방식이였다. 이번 발표에서의 공격 기술은 NULL 을 우회하여 exploit을 1바이트씩 분할하고 취약한 서버에 파일을 생성한뒤 공격하며, 단순 brute force방식에 벗어나 ASLR를 어떻게 빨리 찾아내는지 보여줄 것이다.
http://codeengn.com/conference/09
http://codeengn.com/conference/archive
[2013 CodeEngn Conference 09] 김홍진 - 보안컨설팅 이해 및 BoB 보안컨설팅 인턴쉽GangSeok Lee
2013 CodeEngn Conference 09
기업의 보안 취약점을 분석하고 이에 대한 대응 방안을 제시하는 보안 컨설팅에 대해 알아본다. 아울러, 보안컨설턴트 양성을 위해 BoB에서 진행하고 있는 보안컨설팅 인턴쉽과정에 대해 소개한다.
http://codeengn.com/conference/09
http://codeengn.com/conference/archive
[2010 CodeEngn Conference 04] Max - Fighting against BotnetGangSeok Lee
2010 CodeEngn Conference 04
사이버 전쟁의 대표적 공격 무기가 되어버린 봇넷은 네트워크가 점점 초고속화되고, 복잡해진 상황속에서 7.7 DDoS와 같은 DDoS 공격, 인터넷 계정이나 금융 정보등과 같은 개인 정보 유출 등이 봇넷을 통해 이루어지고 있는 상황이다. 이에 해당 주제 발표에서는 실제 사이버상에서 운영되고 있는 봇넷들을 분석해 보며, 그들의 추구하는 봇넷 비즈니스 모델을 찾아보려 한다. 또한, 봇넷의 설계, 운영, 관리, 대응에 관한 시연 그리고 봇넷들간의 전쟁에 대해 이야기하고자 한다.
http://codeengn.com/conference/04
[2010 CodeEngn Conference 04] window31 - Art of Keylogging 키보드보안과 관계없는 키로거들GangSeok Lee
2010 CodeEngn Conference 04
각종 논문 데이터나 기타 연구자료들을 살펴보면 키보드보안의 한계점에 대해 지목하고 그것에 대한 보완 대책을 논의하고 있는 내용이 많다. 물론 그러한 학문적인 접근도 중요하지만, 실제 키로깅을 하고 있는 해커의 입장에서는 어떤 식으로 키입력과 계정을 가져가는지 해커의 접근 방법을 살펴보는 것도 필요하다. 일반적으로 해커들은 커널 레벨이나 하드웨어 지식 베이스에 입각한 난해한 기법보다는, 보다 간편하며 실용적인 방법을 통해 계정을 가져간다. 그리고 그 같은 행위는 현재 키보드보안의 커버 범위를 뛰어넘는 새로운 기법을 보여주는 경우가 대다수이다. 이런 상황을 배경으로 실제 기업에서 발생하고 있는 사례나, 유저의 감염케이스를 리버스 엔지니어링으로 살펴보는 시간을 마련했다. 바이너리 해킹의 예술을 맛볼 수 있는 Art of Keylogging 발표에서 키 입력 탈취에 대한 새로운 트렌드를 소개한다.
http://codeengn.com/conference/04
2010 CodeEngn Conference 04
2010년 5월 22~24일, 세계 최대의 해커들의 축제인 DEFCON 18의 CTF 예선이 열렸습니다. Kaist 보안동아리 GoN 팀으로 참여하면서 느낀 이번 DEFCON CTF 예선에 대한 전반적인 리뷰와 함께, 여러 문제 분야들 중 Binary l33tness, Pwtent pwnables 분야의 문제들의 풀이를 해보고자 한다. (Defcon 18 CTF 예선전 전체 529팀에서 6위로 본선진출)
http://codeengn.com/conference/04
2009 CodeEngn Conference 03
문서화되지 않은 파일포맷을 리버싱하는 방법은 크게 2가지가 있다. 첫번째는 해당파일을 읽는 프로그램을 리버싱하는 방법과 두번째는 파일 자체를 리버싱하는 방법이 있으며 이번 발표에서는 2번째 방법에 대해 설명하려고 한다.
http://codeengn.com/conference/03
2. Introduction
• 소프트웨어 취약점의 정의
• 소프트웨어 취약점의 위험성
– 설계한 소프트웨어의 보안 매커니즘을 파괴
– 예상하지 못한 소프트웨어의 동작으로 탐지하기 어려움
– 소프트웨어 개발 업체 : 기업의 신뢰성 위협
– 소프트웨어 사용 업체 : 기업의 보안 매커니즘을 위협
소프트웨어의 결함이나 체계ㆍ설계상의 허점으로 인해
사용자(특히 공격자)에게 허용된 권한 이상의 동작이나
허용된 범위 이상의 권한을 부여하는 약점을 의미한다
5. Introduction
• 소프트웨어 취약점 관련 용어정리
– 취약점(Vulnerability)
• 이용하여 권한을 획득할 수 있는 소프트웨어 적인 버그
– 공격코드(Exploit)
• 취약점을 공격할 수 있는 코드
– 개념증명 코드(PoC Code)
• 취약점을 증명할 수 있는 코드
– 시스템 소유(System Pwned)
• 취약점을 이용하여 해당 시스템을 점유하였을 때 사용하는 표현
– CVE : Common Vulnerabilities and Exposures
• 취약점에 대한 정보를 모아놓은 List-up
– 취약점 공개(Vulnerability Disclosure)
6. Software Bug Hunting 이란 ?
• 소프트웨어 취약점을 특정 이득을 위해 찾아내는 행위
소프트웨어의 결함이나 체계ㆍ설계상의 허점을 고의적으로 찾아내어
금전적인 이득, 사이버 테러의 예방, 해커적인 명성획득 등의
특정 이득을 노리는 일련의 행위
7. Bug Bounties
• Samsung SMART TV
– https://samsungtvbounty.com/
• Tipping Point ZDI
– http://www.zerodayinitiative.com/about/benefits/
9. Stories of Bug Hunters
• Pwn2Own In CanSecWest
– 가장 잘 알려진 Bug Hunter들의
Exploit 기술을 선보이는 대회
– 매년 캐나다 CanSenWest에서 열림
– Google, Tipping Point, Adobe 등이 스폰
• The Pwnie Award
– 매년 유명 Hacker들이 그 해 발견된 취약점 중 우수한 취약점에
대해 시상식을 통해 포상을 하는 제도
12. Business Model
• 취약점을 알고 있어도 고치기 어렵다
– 정확한 취약점의 공격원리
– 프로그램의 안정성
– 개발 프로세스의 부재
– 취약점 관리 프로세스의 부재
– 뛰어난 프로그래머의 부족
– 공격 코드 작성과 프로그래밍이 가능한 인재의 부족
13. Business Model
구 분 국산 소프트웨어 외산 소프트웨어
취약점 발견 능력 미비 유명 해커의 고용
취약점 패치 능력 미비 자체적인 교육
취약점 관리 능력 없음 프로그램 운용
취약점 대응/독립 팀 존재 없음 자체 팀 존재
취약점 대응 능력 국가기관에 의존 TF구성
외부 전문가 활용 미비 많음
취약점 신고 창구 운용 미비 프로그램 운용
국산 소프트웨어는 잠재적으로 많은 보안 취약점을 지니고 있음
전문적으로 소프트웨어 취약점을 관리하는 인력이나 시스템이 없음
14. 소프트웨어 취약점 점검
• White Box Testing
– 소프트웨어에 대한 전권을 행사할 수 있을 때 취약점을 점검
• 소프트웨어 개발사
• 적법한 절차의 소프트웨어 취약점 점검사
• Black Box Testing
– 소프트웨어에 대한 일부, 혹은 전혀 권한을 행할 수 없을 때 점검
• 특수한 경우의 적법한 절차의 소프트웨어 점검사
• Bug Bounty를 노리는 Bug Hunter
• 악의적인 Hacker (공격자)
15. 소프트웨어 취약점 점검 방법
• 소스코드 점검 ( Source Code Auditing )
– 주로 White Box Testing에 사용
– 실제로 생각보다 난이도가 높음
• 소프트웨어 역공학( Reverse Code Engineering )
– 주로 Black Box Testing에 사용
– 취약점을 점검하는 사람에 따라 차이가 큰 편
• 퍼징 ( Fuzzing )
– 주로 Black Box Testing에 사용
– 자동화된 툴을 사용하여 취약점을 점검
– Every Hacker Make Own Fuzzers !
• 기타
16. 취약점의 종류
• Software Bug Diagram
– 소프트웨어 버그는 엄청나게 종류가 많다
– 모든 버그가 모두 공격 가능한 것은 아니다
Program
Bug
Exception
Crash
Vulnerability
17. 취약점 일반론
• Untrusted Input & Object
– 사용자(특히 공격자)가 조작할 수 있는 입력 혹은 객체
Program
Bug
Exception
Crash
Vulnerability
Inputs
Files,
Networks,
System
Objects,
Keyboard
Inputs,
ETC
Outputs
Files,
Networks,
System
Objects
Hacker
Needs
This
Flows
30. Use After Free
• Use – After – Free 취약점
– C++ 에서 Class 생성자인 new와 delete 연산에서도
같은 문제가 존재
– C++은 객체의 Use-after-free가 일어날 경우 Method의 함수포
인터를 조작할 수 있는 경우가 있음
멤버변수
number
Count()
함수포인터
(접근가능)
31. Use After Free
• Use – After – Free 취약점
– C++ 에서 생성자와 소멸자 기본 등록되는 경우
Use-After-Free와 만나면 매우 위험함
Constructor
MemberVariable
MemberFunction
Destructor
•생성자
•함수 포인터
•멤버 변수
•number
•멤버 함수
•count()
•소멸자
•함수 포인터
접근
가능
32. Use After Free
• Use – After – Free in Javascript
객체 생성
객체 소멸
2개의 Event
동시 발생
34. Type Confusion
: Flash Player Case
• Action Script Bytecode는 3단계를 거쳐서 실행된다
검증단계
(Verification
Process)
생성단계
(Generation
Process)
실행단계
(Execution
Process)
Bytecode가 안전한지 검사
Bytecode => Machine Code
Machine Code 를 실행
35. Type Confusion
: Flash Player Case
• Action Script Bytecode는 3단계를 거쳐서 실행된다
검증단계
(Verification
Process)
생성단계
(Generation
Process)
실행단계
(Execution
Process)
Verification Flow
수행흐름에 따라
안정성을 검증
Execution Flow
수행흐름에 따라
안정성을 검증
36. Type Confusion
: Flash Player Case
• Action Script Bytecode 검증은 Block 을 기반으로 계산된다
• Block의 구분은 jump와 같은 Branch 류의 명령을 기반한다
37. Type Confusion
: Flash Player Case
• 검증실패 1 : callpropvoid는 Object type을 필요하는데,
Integer type의 인자가 같이 들어감
• 검증실패 2 : “1 params”로 하나의 인자를 명시했는데,
2개의 인자가 들어감
44. Type Confusion
: Flash Player Case
• Verification Process 를 우회
• Atomic Confusion 을 통해 Crash 유발
45. Type Confusion
Class A
Call A.a()
Class B
Function B.a()
: return int
Class C
Function C.a()
: return string
Confusion
[Class B의 주소] -> [a() 함수의 주소] -> [함수 호출]
[Class B ? C ?의 주소] -> [???????] -> [Crash]
46. Bug Hunting 방법론
• Method 1 : Using Information or Open Vulnerbility
– 공개된 취약점을 재 조합하여 취약점을 찾아냄
– 일반적으로 프로그래머의 실수는 다시 재발하는 경우가 많음
• Method 2 : Source Code Auditing
– 활용할 수 있는 소스코드들을 Program이 Import했는지 확인
– 그 뒤 Source Code를 활용하여 취약점을 검색
• Method 3 : Top-Down Analysis
– 상위 High-level의 관점에서 부터 가장 낮은 Low-Level까지
– 데이터의 흐름이나 시스템의 약점을 조사하는 방법
47. Bug Hunting 방법론
• Method 4 : Reverse Engineering
– 소프트웨어 역공학을 통해 프로그램의 취약점을 조사
– 디버거나 디스어셈블러의 도움을 활용함
• Method 5 : Fuzzing ( Brute Force Testing )
– 프로그램의 입/출력부의 랜덤한 값을 입력하여 취약점을 조사
– 자동화하기 매우 편리함
• Method 6 : Dynamic Analysis
– 프로그램의 동작방식을 이용하여 취약점을 조사
– Dynamic Binary Instrumentation 이나 Debugger를 이용
48. Method 1(Practice 1)
: Using Information or Open Vulns
• 공개된 취약점의 정보를 조합하여 취약점 발견
Gomplayer
Exploit Code
KMPlayer
Pot Player
Choco Player
54. Method 4(Practice 5)
: Reverse Engineering
• 소프트웨어 역공학을 통해 취약점을 조사하는 방법
– 가장 중요한 것은 조작할 수 있는 값을 찾아내는 것
55. Method 5
: Fuzzing
• 프로그램이 받아들이는 Input을 랜덤하게 발생기켜
프로그램의 취약점을 찾아내는 방법
• 현재 매우 인기있는 취약점 발견 방법론
• 대부분 Memory와 관련한 취약점을 찾는데 집중
• 매우 다양한 Fuzzing Framework들이 구성되어 있음
58. Taint Analysis
• Taint Analysis 의 효과 : Bug Hunting에 대한 응용
– Find Tainted EIP Register
– Find Tainted Function Pointers
– Find Tainted Stack Arguments
– Find Tainted Data Structure Using System
• Taint Analysis 의 효과 : Exploit detection
– Preprocessing : 0-day Exploit detection
• Rechability Problem의 해결
– How can I make PDF File to execute code block #937
• Mov [edi * 2], esi
– Packet으로부터
Memory Access가 edi, esi로
이어지는지를 판단
59. Dynamic Binary Instrumental
• Binary 실행시 원하는 Code를 삽입하는 기술
• 프로그램을 다시 컴파일하거나 링킹하지 않음
• 실행하는 동안 원하는 루틴을 찾을 수 있음
• 실행중인 프로그램을 분석하는데 탁월함
Mov eax, ebxCode 1 Code 2
60. Method 3
Putting All
• 취약점을 찾는데 정형화된 Flow는 없음
• 주의할 점
– 프로그램마다 특성이 있고 그 특성을 파악하는 것
– 공격자의 입장에서 생각하는 것
– 개발자는 사람이다 : 실수를 반드시 한다
– 모든 버그는 공격할 수 있다고 가정한다
Method1 Method2
Method 4
Method 5
Method 6
www.CodeEngn.com
2014 CodeEngn Conference 10