2013 CodeEngn Conference 08
최근 국내/외에서는 멀티플레이어 게임이 유명세를 타고 있다. 이에 맞게 멀티플레이어 게임에 대한 보안 기술 역시 발전하고 있지만, 일반적으로 게임 보안은 게임의 룰을 깨버릴 수 있는 어뷰징(Abusing) 버그를 막는 데 주력하고 있다. 많은 멀티플레이어 게임들이 어뷰징 버그를 막는데 주력하느라, 게임 클라이언트의 취약성에 대한 보안을 놓치고 있다. 게임 클라이언트의 보안의 중요성을 강조하기 위해 BoB 1기에서 진행한 '멀티플레이어 게임 취약점 점검' 프로젝트의 결과물인 Starcraft-Broodwar remote code execution취약점을 설명하고, 취약점을 발견하기 위해 진행한 과정과 Exploit 과정들을 소개한다.
http://codeengn.com/conference/08
Cusomizing Burp Suite - Getting the Most out of Burp ExtensionsAugust Detlefsen
This lecture gives pentesters and security tool developers an overview of the APIs available to extend the Burp Suite intercepting proxy. Using open-source examples developed by the author I illustrate a number of key areas for anyone wishing to create extensions for Burp Suite:
- Passive scanning
- Active scanning
- Identifying insertion points
- Request modification
The presentation includes code samples and links to actual open source Burp Suite plugins developed by the author.
XSS is much more than just <script>alert(1)</script>. Thousands of unique vectors can be built and more complex payloads to evade filters and WAFs. In these slides, cool techniques to bypass them are described, from HTML to javascript. See also http://brutelogic.com.br/blog
Cusomizing Burp Suite - Getting the Most out of Burp ExtensionsAugust Detlefsen
This lecture gives pentesters and security tool developers an overview of the APIs available to extend the Burp Suite intercepting proxy. Using open-source examples developed by the author I illustrate a number of key areas for anyone wishing to create extensions for Burp Suite:
- Passive scanning
- Active scanning
- Identifying insertion points
- Request modification
The presentation includes code samples and links to actual open source Burp Suite plugins developed by the author.
XSS is much more than just <script>alert(1)</script>. Thousands of unique vectors can be built and more complex payloads to evade filters and WAFs. In these slides, cool techniques to bypass them are described, from HTML to javascript. See also http://brutelogic.com.br/blog
Evening out the uneven: dealing with skew in FlinkFlink Forward
Flink Forward San Francisco 2022.
When running Flink jobs, skew is a common problem that results in wasted resources and limited scalability. In the past years, we have helped our customers and users solve various skew-related issues in their Flink jobs or clusters. In this talk, we will present the different types of skew that users often run into: data skew, key skew, event time skew, state skew, and scheduling skew, and discuss solutions for each of them. We hope this will serve as a guideline to help you reduce skew in your Flink environment.
by
Jun Qin & Karl Friedrich
Kernel Recipes 2019 - Faster IO through io_uringAnne Nicolas
Since the dawn of time, Linux has had to make do with inferior IO interfaces. Native Linux AIO supports only a niche application class (O_DIRECT), and even for that use case, it’s far too slow for modern storage. This talk will detail io_uring, a modern IO interface for Linux, that’s both fully featured and performant.
Jens Axboe
Why is My Stream Processing Job Slow? with Xavier LeauteDatabricks
The goal of most streams processing jobs is to process data and deliver insights to the business – fast. Unfortunately, sometimes our streams processing jobs fall short of this goal. Or perhaps the job used to run fine, but one day it just isn’t fast enough? In this talk, we’ll dive into the challenges of analyzing performance of real-time stream processing applications. We’ll share troubleshooting suggestions and some of our favorite tools. So next time someone asks “why is this taking so long?”, you’ll know what to do.
.NET 7 is loaded with new features and specially covering Minimal API features like Endpoint Filters,
Route groups, Authentication Improvements, Endpoint metadata providers and
Unit Testing. This PPT covers the basics of API, Minimal API and new features.
If you're new to API and Minimal, you should be able to understand everything.
We start with why you should use task queues. Then we show a few straightforward examples with Python and Celery and Ruby and Resque.
Finally, we wrap up with a quick example of a task queue in PHP using Redis.
https://github.com/bryanhelmig/phqueue
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현NAVER Engineering
네이버 오픈소스 세미나 - Performance does matter
2019.07.11
<세션 요약>
네이버 서비스에서 사내 서버리스 플랫폼까지 흘러가는 트랜잭션을 추적하고 분석하기 위해 개발한 Pinpoint의 Apache Openwhisk 플러그인과 그 개발 과정을 소개합니다.
Apache Openwhisk는 서버리스 플랫폼을 구축할 수 있는 오픈소스 프로젝트로 스칼라 언어와 Akka 라이브러리를 사용한 Actor 모델에 기반하고 있습니다. 스칼라 언어로 작성된 애플리케이션을 위한 Pinpoint 플러그인을 만들면서 겪었던 문제들과 해결했던 과정들을 위주로 설명드릴 예정입니다.
<연사 소개>
네이버에서 Serverless 플랫폼을 개발하고 있으며, 다양한 오픈소스 프로젝트에 관심이 많습니다.
Apache Openwhisk contributor로 활동하면서, Openwhisk 기반 서버리스 플랫폼의 트레이싱을 위한 Pinpoint 플러그인을 개발하고 컨트리뷰션을 진행하고 있습니다.
This document contains various methods to hack or pentest the web-server and web-applications.
1. A person can use it as hand book for hacking websites.
2. All contents of these hand book is searched and taken out from various other websites & blogs...
3. Use these knowledge for education purpose only.
Temporal-Joins in Kafka Streams and ksqlDB | Matthias Sax, ConfluentHostedbyConfluent
Joins in Kafka Streams and ksqlDB are a killer-feature for data processing and basic join semantics are well understood. However, in a streaming world records are associated with timestamps that impact the semantics of joins: welcome to the fabulous world of _temporal_ join semantics. For joins, timestamps are as important as the actual data and it is important to understand how they impact the join result.
In this talk we want to deep dive on the different types of joins, with a focus of their temporal aspect. Furthermore, we relate the individual join operators to the overall ""time engine"" of the Kafka Streams query runtime and explain its relationship to operator semantics. To allow developers to apply their knowledge on temporal join semantics, we provide best practices, tip and tricks to ""bend"" time, and configuration advice to get the desired join results. Last, we give an overview of recent, and an outlook to future, development that improves joins even further.
This talk introduces Spring's REST stack - Spring MVC, Spring HATEOAS, Spring Data REST, Spring Security OAuth and Spring Social - while refining an API to move higher up the Richardson maturity model
[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
Evening out the uneven: dealing with skew in FlinkFlink Forward
Flink Forward San Francisco 2022.
When running Flink jobs, skew is a common problem that results in wasted resources and limited scalability. In the past years, we have helped our customers and users solve various skew-related issues in their Flink jobs or clusters. In this talk, we will present the different types of skew that users often run into: data skew, key skew, event time skew, state skew, and scheduling skew, and discuss solutions for each of them. We hope this will serve as a guideline to help you reduce skew in your Flink environment.
by
Jun Qin & Karl Friedrich
Kernel Recipes 2019 - Faster IO through io_uringAnne Nicolas
Since the dawn of time, Linux has had to make do with inferior IO interfaces. Native Linux AIO supports only a niche application class (O_DIRECT), and even for that use case, it’s far too slow for modern storage. This talk will detail io_uring, a modern IO interface for Linux, that’s both fully featured and performant.
Jens Axboe
Why is My Stream Processing Job Slow? with Xavier LeauteDatabricks
The goal of most streams processing jobs is to process data and deliver insights to the business – fast. Unfortunately, sometimes our streams processing jobs fall short of this goal. Or perhaps the job used to run fine, but one day it just isn’t fast enough? In this talk, we’ll dive into the challenges of analyzing performance of real-time stream processing applications. We’ll share troubleshooting suggestions and some of our favorite tools. So next time someone asks “why is this taking so long?”, you’ll know what to do.
.NET 7 is loaded with new features and specially covering Minimal API features like Endpoint Filters,
Route groups, Authentication Improvements, Endpoint metadata providers and
Unit Testing. This PPT covers the basics of API, Minimal API and new features.
If you're new to API and Minimal, you should be able to understand everything.
We start with why you should use task queues. Then we show a few straightforward examples with Python and Celery and Ruby and Resque.
Finally, we wrap up with a quick example of a task queue in PHP using Redis.
https://github.com/bryanhelmig/phqueue
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현NAVER Engineering
네이버 오픈소스 세미나 - Performance does matter
2019.07.11
<세션 요약>
네이버 서비스에서 사내 서버리스 플랫폼까지 흘러가는 트랜잭션을 추적하고 분석하기 위해 개발한 Pinpoint의 Apache Openwhisk 플러그인과 그 개발 과정을 소개합니다.
Apache Openwhisk는 서버리스 플랫폼을 구축할 수 있는 오픈소스 프로젝트로 스칼라 언어와 Akka 라이브러리를 사용한 Actor 모델에 기반하고 있습니다. 스칼라 언어로 작성된 애플리케이션을 위한 Pinpoint 플러그인을 만들면서 겪었던 문제들과 해결했던 과정들을 위주로 설명드릴 예정입니다.
<연사 소개>
네이버에서 Serverless 플랫폼을 개발하고 있으며, 다양한 오픈소스 프로젝트에 관심이 많습니다.
Apache Openwhisk contributor로 활동하면서, Openwhisk 기반 서버리스 플랫폼의 트레이싱을 위한 Pinpoint 플러그인을 개발하고 컨트리뷰션을 진행하고 있습니다.
This document contains various methods to hack or pentest the web-server and web-applications.
1. A person can use it as hand book for hacking websites.
2. All contents of these hand book is searched and taken out from various other websites & blogs...
3. Use these knowledge for education purpose only.
Temporal-Joins in Kafka Streams and ksqlDB | Matthias Sax, ConfluentHostedbyConfluent
Joins in Kafka Streams and ksqlDB are a killer-feature for data processing and basic join semantics are well understood. However, in a streaming world records are associated with timestamps that impact the semantics of joins: welcome to the fabulous world of _temporal_ join semantics. For joins, timestamps are as important as the actual data and it is important to understand how they impact the join result.
In this talk we want to deep dive on the different types of joins, with a focus of their temporal aspect. Furthermore, we relate the individual join operators to the overall ""time engine"" of the Kafka Streams query runtime and explain its relationship to operator semantics. To allow developers to apply their knowledge on temporal join semantics, we provide best practices, tip and tricks to ""bend"" time, and configuration advice to get the desired join results. Last, we give an overview of recent, and an outlook to future, development that improves joins even further.
This talk introduces Spring's REST stack - Spring MVC, Spring HATEOAS, Spring Data REST, Spring Security OAuth and Spring Social - while refining an API to move higher up the Richardson maturity model
[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
[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
[2012 CodeEngn Conference 07] singi - NFC, Play on real worldGangSeok Lee
2012 CodeEngn Conference 07
최근 스마트폰의 보급율이 높아지면서 NFC에 대한 관심이 많아졌다. NFC는 10cm 거리에서 기기간의 통신을 가능하게 해주는 근거리 통신 프로토콜이다. NFC에 대한 기본 개념과 통신원리, 국제/국내 표준을 알아보고, 국내 스마트폰에서 NFC가 들어간 장치의 스펙을 알아 본다. 그리고, 어떤 환경에서 NFC서비스가 사용될 수 있는지와 현재 사용되고 있는 서비스들도 간단하게 볼 예정이며 NFC를 이용하여 교통카드를 위조했던 해킹사례를 간단하게 알아본다. 마지막으로, 실제 NFC기기를 프로그래밍하여 이용, 조작을 해보도록 한다.
http://codeengn.com/conference/07
[2012 CodeEngn Conference 07] 퍼다우크 - Manual UnPack by DebuggerGangSeok Lee
2012 CodeEngn Conference 07
실행압축 툴의 본래 취지는 크게 크래커로부터 개발자들의 소프트웨어를 보호하고 온라인 상으로 전송되는 바이너리의 크기를 줄여주는 순기능 역할과 악성코드나 불법적인 바이너리의 내용이나 분석을 어렵게 만드는 역기능 역할의 양면성이 존재한다. 학문적인 접근으로, 실행압축에 대한 리버스엔지니어링 도전은 더 나은 소프트웨어에 대한 발전과 더불어 안전한 소프트웨어 산업 발전을 증진시키는 촉매제 역할을 할 수 있다고 본다. Themida와 UPX 알고리즘을 디버거로 따라가면서 살펴보는 것은 리버시엔지니어에게 안티디버깅을 비롯하여 가상화, 다형성 등의 원리를 이해하고 공부하는데 많은 도움을 줄 것으로 기대한다.
http://codeengn.com/conference/07
[2007 CodeEngn Conference 01] amesianx - Art of HookingGangSeok Lee
2007 CodeEngn Conference 01
ActiveX Binary 조작 및 후킹 ActiveX Binary 조작을 하지않는 범용적 COM 후킹 키보드 후킹은 크래커가 가장 직관적으로 접근하는 해킹수단 등에 대해서 설명하고 ActiveX의 COM에 대해 알아본다. (키보드 후킹의 한계는 사용자 입력을 예상하기 힘들고 정확히 어떤 행동 중인지 포착하는 인공지능적 해킹이 어려운 점이 있다.)
http://codeengn.com/conference/01
[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] 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
[2014 CodeEngn Conference 10] 노용환 - 디버거 개발, 삽질기GangSeok Lee
2014 CodeEngn Conference 10
MS 에게 속았어요
Windows 운영체제가 지원하는 디버거 지원 기능들과 브랜치 트레이서를 구현하기 위한 몇 가지 방법들을 소개하고, Windows 커널에 이미 구현되어있는 하드웨어 기반 브랜치 트레이서 코드 분석과 여기에 존재하는 의도된(?) 버그를 살펴본다.
http://codeengn.com/conference/10
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
[2013 CodeEngn Conference 08] manGoo - Windows 8 ExploitGangSeok Lee
2013 CodeEngn Conference 08
Exploit으로 인한 보안 위협은 어제 오늘만의 문제가 아니다. 그에 따라서, Windows Version이 Update 되면서 다양한 Memory Protection 기능으로 Exploiting 으로 인한 공격을 방어하게 되었다. Exploiting Technique에 대한 History를 살펴 보며, Windows 8에서 Memory 관리 하는 방법 및 Memory Protection 방법에 대해서 살펴 볼 것이다. 이러한 변화로 인해 Exploiting 공격에 있어 어떤 방법으로 접근해야 될 지 알아보도록 하자.
http://codeengn.com/conference/08
[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
웹브라우저 구조에 따른 자바스크립트 난독화 알아보기
이제는 인터넷 없이 생활조차 하기 힘든 세상으로 킬러 어플리케이션로 자리잡았다. 이러한 인터넷 환경에서 웹 사이트 방문만으로 악성코드에 감염 될 수 있다. 이 공격을 드라이브-바이 다운로드 (Drive-By Download)로 불리며, 웹 해킹, 소프트웨어 취약점, 악성코드를 같이 사용하는 공격 기술이다. 그리고 공격에 사용되는 별개의 기술들을 하나로 묶어 주는 것이 자바스크립트로 탐지와 분석을 어렵게 하기위해 난독화를 사용한다. 그러면, 왜 자바스크립트 난독화가 생길 수 있는지 브라우저 컴포넌트 구조를 통해 알아보고, 종류에 대해 알아본다. 그리고 자바스크립트 난독화를 해제하기 위한 방법론에 대해서도 알아본다.
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
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드GangSeok Lee
2012 CodeEngn Conference 07
Secuinside는 코스콤에서 주최, 연합해킹그룹 HARU, 고려대 정보보호대학원에서 주관하는 국제 해킹대회 및 보안컨퍼런스로써 얼마전 개최된 해킹대회 예선전 문제들을 풀기위해 사용한 분석기술과 ASLR과 NX를 우회하는 새로운 익스플로잇 기술에 대해서 소개한다.
http://codeengn.com/conference/07
[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
Baekjoon Online Judge(https://www.acmicpc.net) 에서 채점할 때 사용하는 샌드박스에 대한 간단한 설명을 담고 있습니다.
2012년 10월에 작성한 파일이라서 현재 사용하는 방식과는 많은 차이가 있고, 기초적인 수준의 샌드박싱을 다룹니다.
전체목차: https://netpple.github.io/docs/make-container-without-docker/
pid namespace는 컨테이너 안에서 독자적인 "process tree" / "process id 체계"를 제공합니다. 어떻게 가능한 것일까요? 이를 이해하기 위하여 proc filesystem과 pid 쳬계에 대해서 얘기합니다. 그리고 프로세스 트리의 최상위인 특별한 프로세스 pid1 에 대하여도 다룹니다
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
열혈 취약점 헌터들의 고분군투기!
취약점을 찾게되면 어떤 일이 벌어질까? 급전이 필요한 외롭고 찌질한 대한민국 해커들의 급전을 위한 취약점 찾기 여행기. 과연 우리는 취약점을 찾고 급전을 만들어 외롭고 찌질한 이 상황을 타개할 수 있을 것인가?
http://codeengn.com/conference/10
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] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석GangSeok Lee
2013 CodeEngn Conference 09
게임 보안 제품의 보안성이 강화됨에 따라 해킹툴의 공격 기법 또한 다양해 지고 있다. 몇 몇 해킹툴은 게임에 접근하기 위해 OS의 디버깅 메커니즘 악용한다거나 시스템 프로세스로 위장하게 되는데 이와 같은 몇가지 변칙적인 기법에 대해 알아보고자 한다.
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
2009 CodeEngn Conference 03
새로운 CTF 운영 단체로 인하여 전체적으로 변화된 스타일 등을 간략히 알아보고 DEFCON CTF 2009 Binary Leetness 분야의 100부터 500까지의 문제를 풀이해본다.
http://codeengn.com/conference/03
[2009 CodeEngn Conference 03] sionics, kaientt - (파일바이러스 치료로직 개발자 입장에서 본) 파일 ...GangSeok Lee
2009 CodeEngn Conference 03
일반적으로 악성코드의 치료는 대부분 해당 악성코드 파일 자체를 삭제하여 제거하는 것으로 해결된다. 하지만 Virut, Sality, Parite등과 같이 정상파일에 감염되어 기생하는 파일바이러스는 반드시 원래의 정상파일로 복구시켜야 한다. 일반적인 악성코드의 악성행위를 분석하는 악성코드 분석가의 입장이 아닌 악성행위보다는 원래의 정상파일로 돌려야하는 치료로직을 개발하는 파일바이러스 치료로직 개발자 입장에서 파일바이러스를 분석해본다.
http://codeengn.com/conference/03
[2013 CodeEngn Conference 08] CherishCat - 각종 취약점과 대응방안 & 해킹, 보안 문제풀이GangSeok Lee
2013 CodeEngn Conference 08
보안사고는 사소한 취약점으로부터 시작되어 악용될 수 있다. Hard한 방법이나 별다른Hacking Tool을 사용하지 않은 간단한 발상으로 취약점을 찾아내어 보자. software부분과 Web Site부분에서 악용될 수 있는 여러 가지 취약점들을 실제 사례를 통해서 설명한다. 마지막으로 각종 해킹/보안 관련 문제들을 연습해볼 수 있는 War-Game사이트인 hack-me.org에 등록되어있는 문제들을 풀어본다. 국내외 해킹방어대회에서 다루는 문제들의 기반이 되는 기초적인 접근방법을 hack-me_Challenges를 통해서 입문자들도 알기 쉽게 각 문제유형들을 알아본다.
http://codeengn.com/conference/08
2013 CodeEngn Conference 08
안드로이드 악성앱 필터링을 위한 시스템을 주로 다루려고 하고, 특히 요새 큰 관심이 쏠리는 스미싱 앱을 위주로 내용을 진행하면서 안드로이드 어플리케이션의 정적분석 및 동적분석 방법 그리고 해당 분석으로 얻을 수 있는 내용들이 어떤 것이 있는지를 예시를 통해 알아본다.
http://codeengn.com/conference/08
[2013 CodeEngn Conference 08] Homeless - Android 악성앱 필터링 시스템
[2013 CodeEngn Conference 08] pwn3r - Pwning multiplayer game - case Starcraft Broodwar
1. Pwning multiplayer games
- case Starcraft-Broodwar
Kwon Hyuk (pwn3r) | B10S | 2013/07/13
www.CodeEngn.com
2013 CodeEngn Conference 08
2. Outline
1. Introduce
1. Who am I?
2. Summary
3. Why multiplayer game?
4. Choosing target
2. Starcraft
1. What is starcraft?
2. Attack vectors
3. Fuzzing starcraft
1. Structure of map file
2. Attack scenario
3. Fuzzing scenario
4. Exploitable crashes
4. Exploitation
1. Heap spray
2. Process continuation
5. Conclusion
1. Timeline
2. I have talked about ..
3. Q & A
3. Chapter 1: Introduce
1) Who am I?
2) I wall talk about ..
3) Why multiplayer game?
4) Choosing target
4. 1. Introduce
Name : Kwon Hyuk
Age : 19
FB : http://fb.com/kwonpwn3r
Blog : http://pwn3r.tistory.com
Job : 고삼완전체
$ whoami
5. 1. Introduce
- BoB 에서 진행했던 ‘멀티플레이어 게임 취약점 점검’ 프로젝트
- Multiplayer game 중 하나인 Starcraft-broodwar에서 발견한
RCE(remote code execution) 취약점과 공략하기까지의 과정
- 간단한 Exploitation 기술들
I will talk about ..
6. 1. Introduce
1. 수 많은 게임 이용자
- 통계자료를 대지 않아도 다들 알고 있는 엄청난 이용자 수
2. 게임 보안의 불균형한 발전
- Multiplayer 게임의 시장규모와 이용자 수가 증가함에 따라 게임보안도 발
전함.
- But, 게임의 룰에서 탈출하는 Abusing bug를 막는 데에 주력하여 취약성
측면에서의 보안을 놓치고 있음.
3. 다양한 공격벡터
- 게임에 따라 Map, Chatting, Image, Sound 등 다양한 공격 벡터가 존재함.
4. Just for fun
- 취약점 찾다가 잘 안되면 게임 한판 ㄱㄱ
Why multiplayer game?
7. 1. Introduce Choosing target
-현재 가장 유명한 게임 - 그림으로 대화하는 기능
- 음성 채팅 기능 - 그림 영상 정보를 주고받는 기능
13. 3. Fuzzing
Starcraft
1) 확장자
- .scm / .scx
2) File format
- MPQ compressed file format
(MPQ = Mike O’Brien Pack)
- 맵 파일은 하나의 MPQ 압축파일.
- 맵을 구성하는 파일들이 하나의 MPQ 압축 파일에 압축되어 있는 구조
Map file structure
14. 3. Fuzzing
Starcraft
3) MPQ decompressed
: MPQ 압축파일에 압축된 파일들
- (listfile)
=> 압축된 파일명 list
- stareditscenario.chk
=> 맵의 설정 정보를 저장하는 핵심 파일
- etc ..
=> 그 외 게임설정에 따라 음악파일, 그래픽 파일 등이 추가될 수 있다.
Map file structure
MPQ
Decompress
15. 3. Fuzzing
Starcraft
4) Scenario.chk
1) 맵의 실질적인 설정 정보가 저장된 파일
2) 섹션 단위로 구성됨.
3) TYPE, VER, OWNR, TRIG, … 등 39개 종류의 Section이 존재.
4) [Section name] [Section size] [Section data] 가 반복된 단순한 구조
( 4 byte ) ( 4 byte ) ( n byes )
Map file structure
16. 3. Fuzzing
Starcraft
취약점 발생시점에 따른 공격 시나리오
1) Victim이 악성 맵으로 방을 Open하다가 취약점 유발
- Victim에게 악성 맵을 전송해주고, Victim이 해당 맵으로 방을 개설하는 과
정에서 취약점이 유발됨.
- 악성 맵을 인터넷에 유포해도 해당 맵을 받아서 방을 개설할 사람들은 많지
않기 때문에, 공격대상이 적어 파급력이 떨어짐.
2) 공격자가 악성 맵으로 방을 Open하고, Victim이 접속시 취약점 유발
- 공격자가 만든 방에 접속하는 Victim은 모두 취약점이 유발됨.
- 감염된 Victim은 퇴장시켜버리면 또 다른 Victim들의 접속을 기다릴 수 있
기 때문에 파급력이 높음.
3) 공격자가 악성 맵으로 방을 Open하고, 게임 시작 시 취약점 유발
- 공격자가 만든 방에 접속하고, 게임을 시작하면 Victim은 같은 방에 있는
Victim은 모두 취약점이 유발됨.
- 게임을 시작해야 감염이 된다는 점 때문에, 한번에 방에 입장할 수 있는 최
대인원(8명)까지만 취약점을 유발시킬 수 있음.
(2번에 비해 파급력이 떨어지긴 하지만, 자동화 시킨다면 낮지 않은 파급력)
Attack scenario
17. 3. Fuzzing
Starcraft
1) Victim이 악성 맵으로 방을 Open하다가 취약점 유발
- Victim에게 악성 맵을 전송해주고, Victim이 해당 맵으로 방을 개설하는 과
정에서 취약점이 유발됨.
- 악성 맵을 인터넷에 유포해도 해당 맵을 받아서 방을 개설할 사람들은 많지
않기 때문에, 공격대상이 적어 파급력이 떨어짐.
Attack scenario
Choosing mapVictim
Vuln
TriggeresSend
Map file
Attacker
18. 3. Fuzzing
Starcraft
2) 공격자가 악성 맵으로 방을 Open하고, Victim이 접속시 취약점 유발
- 공격자가 만든 방에 접속하는 Victim은 모두 취약점이 유발됨.
- 감염된 Victim은 퇴장시켜버리면 또 다른 Victim들의 접속을 기다릴 수 있
기 때문에 파급력이 높음.
Attack scenario
Victim
Attacker Choosing map
& Create game Vuln
Triggeres
방제목:
2:2 로템 ㄱㄱㄱ
Send
Map file
Join the game
19. 3. Fuzzing
Starcraft
3) 공격자가 악성 맵으로 방을 Open하고, 게임 시작 시 취약점 유발
- 공격자가 만든 방에 접속하고, 게임을 시작하면 Victim은 같은 방에 있는
Victim은 모두 취약점이 유발됨.
- 게임을 시작해야 감염이 된다는 점 때문에, 한번에 방에 입장할 수 있는 최
대인원(8명)까지만 취약점을 유발시킬 수 있음.
Attack scenario
Victim
Attacker Choosing map
& Create game
방제목:
2:2 로템 ㄱㄱㄱ
Send
Map file
Join the game
Vuln
Triggeres
Start game!
20. 3. Fuzzing
Starcraft
Scenario 1
- 1개의 Client 필요
Client 1 : 스크립트가 맵 파일을 조작한 후 Strarcraft를 실행하여 방을 개설함.
Scenario 2
- 2개의 Client 필요
Client 1 : Starcraft를 실행하여 UDP 모드로 방을 개설하고, 스크립트가 Starcraft
프로세스의 메모리에 있는 맵 파일을 조작함을 반복
Client 2 : 스크립트가 Starcraft를 실행하여 UDP 모드에서 Client ( 1 )이 개설한
방에 참가함을 반복 -> Exception 발생여부 확인
Fuzzing scenario
21. 3. Fuzzing
Starcraft
Scenario 1.
- 1개의 Client 필요
Client 1 : 스크립트가 맵 파일을 조작한 후 Strarcraft를 실행하여 방을 개설함.
Fuzzing scenario
익셉션 발생?
Stacraft 실행
Client 1
맵 파일 퍼징
Client 1
방 개설 (+게임시작)
Client 1
NO
YES
Log crash
Client 1
Start
22. 3. Fuzzing
Starcraft
Scenario 1.
장점
- 스크립트 작성이 간단함.
- 1대의 클라이언트만 필요
단점
- 맵 파일을 압축 해제하지 않고 조작할 경우, 방을 개설할 때에 크래시가
발생하기 때문에 압축 해제를 할 때에만 적용 가능한 시나리오
Fuzzing scenario
23. 3. Fuzzing
Starcraft
Scenario 2.
- 2개의 Client 필요
Client 1 : Starcraft를 실행하여 UDP 모드로 방을 개설하고, 스크립트가 Starcraft
프로세스의 메모리에 있는 맵 파일을 조작함을 반복
Client 2 : 스크립트가 Starcraft를 실행하여 UDP 모드에서 Client ( 1 )이 개설한
방에 참가함을 반복 -> Exception 발생여부 확인
Fuzzing scenario
Start
익셉션 발생?
Stacraft 실행
Client 2
메모리의 맵 파일 퍼징
Client 1
UDP모드 방 입장
Client 2NO
YES
Log crash
Client 1
Stacraft 실행
Client 1
UDP모드 방 개설
Client 1
24. 3. Fuzzing
Starcraft
Scenario 2.
장점
- 타 플레이어가 방에 접속하는 상황에서 퍼징할 수 있음.
- 방을 만드는 Client는 메모리에 있는 맵 파일을 조작하기 때문에, 방을 한
번만 열어두면 됨.
단점
- 구현이 어려움.
- 구현이 힘듬.
- 구현이 짜증남.
Fuzzing scenario
25. 3. Fuzzing
Starcraft
취약점 발생 시점
압축해제 유무
방 접속 시 취약점 유발 방 접속 후
게임 시작 시 취약점 유발
압축 해제 전 ① ②
압축 해제 후 ③ ④
Fuzzing scenario
27. 3. Fuzzing
Starcraft
Scenario 2 적용
동작
1) Client 1 : UDP 모드로 방 개설
2) Client 1 : 메모리에 올라와 있는 맵 파일 조작 (압축 해제 전/후)
3) Client 2 : UDP 모드에서 Client 1이 개설한 방 입장
4) Client 1 : Client 2에게 맵 파일 전송
5) Client 2 : 익셉션 발생여부 확인
①, ③ 압축 해제 전, 후 + 게임 시작 전
28. 3. Fuzzing
Starcraft
Scenario 2 적용
구현
Client 1 : Immunity debugger의 pycommand 이용 (Memory read/write)
Client 2 : 키보드 단축키를 이용해 매크로 형식으로 구현
①, ③ 압축 해제 전, 후 + 게임 시작 전
29. 3. Fuzzing
Starcraft
Problem 1) MPQ 압축 포맷을 자동으로 decompress 시켜야 함.
=> 외국에서 MPQ 포맷 파싱을 위해 만들어둔 stormlib라는 오픈소스 라이브러
리 이용.
Sub problems
30. 3. Fuzzing
Starcraft
Problem 2) UDP 모드로 게임 목록 확인 후 10초가 지나면 더 이상 같은
게임이 검색되지 않음.
=> 직접 udp로 broadcast 패킷을 전송하여 해결
Sub problems
33. Quiz !
2) 제가 소개했던 공격벡터를 제외한 다른 멀티플레이어
게임에서의 공격벡터를 50자 이내로 서술하시오 (5점)
뜬금없이 책 뿌립니다
34. 3. Fuzzing
Starcraft
압축을 해제 하기 전에 맵을 조작 시
1) 방을 개설하다가 익셉션이 발생
2) 방을 개설/입장하자마자 익셉션이 발생
게임 시작자체가 불가능
따라서 Scenario 1 제외.
② 압축 해제 전 + 게임 시작 후
Vuln
Triggered
Vuln
Triggered
36. 3. Fuzzing
Starcraft
Scenario 2 적용
동작
1) 파일 조작
2) Starcraft 실행 -> 방 개설
3) 게임 시작
4) 익셉션 발생여부 확인
구현
- 키보드 단축키를 이용해 매크로 형식으로 구현 (1, 3번 케이스와 같은 방식)
④ 압축 해제 후 + 게임 시작 후
37. 3. Fuzzing
Starcraft
- Fuzzing scenario ( 4 )에서 27종류의 unique crash획득
(다른 시나리오에서도 crash는 발생했지만 종류가 다양하지 않으며
exploitable하지 않음)
- 이 중 2종류는 Exploitable하다고 판단 및 Exploit 작성
(나머지는 exploitable하지 않거나 분석 중)
Result
38. 3. Fuzzing
Starcraft
Case ( 1 ) ADD [edi*4 + DATA_TABLE], ebx
Range of EDI : 0x00000000 ~ 0x0000ffff (Controllable)
Range of EBX : 1 or -1 (Fixed)
- 임의의 주소에 ebx 값(1 or -1)을 더할 수 있는 취약점.
-> DATA_TABLE 메모리 뒤에 있는 함수포인터 값을 반복적으로 ADD하여 원
하는 코드의 주소로 바꿔준 후, 함수포인터가 호출되도록 하여 공략.
Case ( 2 ) CALL [edx* 4 + FUNC_TABLE]
Range of EDX : 0x00 ~ 0xff (Controllable)
- FUNC_TABLE은 0x3c * 4의 크기를 가지며, 그 뒤로는 쓰레기 값이 들어가
있음.
- EDX를 0x3d~ 0xff 사이의 값으로 넣어주면, 쓰레기 값을 코드 주소로서 호
출할 수 있음.
-> 쓰레기 값이 나타내는 주소에 쓸만한 가젯이 있거나, 맵 파일의 데이터가
있다면 best case.
-> 아니라면 Heap spray로 해당 메모리를 할당시켜 공략.
Exploitable crashes
40. 4. Exploitation
Crash case (2)
CALL [edx* 4 + FUNC_TABLE]
- 기존 FUNC_TABLE의 크기는 0x3c * 4이지만, edx의 크기를 제한하지 않음.
- edx 값을 0x3c < idx <= 0xff 의 범위로 만들어주면 FUNC_TABLE에 있는
정상 함수포인터가 아닌, 쓰레기 값을 호출하다가 crash발생.
How to exploit?
FUNC_TABLE
Handler1 Handler2 Handler3 Handler4
…………...... …………...... …………...... …………......
Handler39 Handler3a Handler3b Handler3c
Trash value Trash value Trash value Trash value
EDX: 0x0000003d
Crash
43. 4. Exploitation
1) What is heap spray?
- One of exploitation technique
- Heap에 nop와 쉘코드를 spray하듯이 엄청나게 뿌려서 원하는 메모리에 쉘
코드를 할당시키는 기술.
Heap spray
Allocated
Allocated
Allocated
Allocated
Allocated
Allocated
HEAP
(nop + shellcode)Heap spray!
44. 4. Exploitation
2) How to heap spray at Starcraft Broodwar?
- Browser나 Flash처럼 script를 사용할 수 없음.
- 맵 파일 데이터를 무작정 넣는다고 해서 그대로 메모리에 올라가지 않음.
‘STR ’ section in scenario.chk
- STR (String) section : 맵에서 필요로 하는 문자열을 저장해두는 section
- Starcraft는 scenario.chk파일의 STR section을 파싱할 때 STR section의
size를 제한하거나 검사하지 않음.
- STR section에 있는 값은 heap메모리에 그대로 복사됨.
Heap spray
46. 4. Exploitation
- 일반적으로 임의의 코드를 실행하는 Exploit을 작성했을 때, 코드의 실행이
끝나면 해당 process는 종료되거나, 크래시로 이어짐.
- 하지만 취약점이 발생하지 않았을 때의 환경(Stack, Register, …)을 복구해
주어 Process가 종료되지 않고 정상적으로 Continue 되도록 해주는 것을
Process continuation이라 부름.
- 취약점의 유형이나 상황마다 Process continuation을 구현하는 방법은 다
양함.
Advanced Exploitation
– Process continuation
Process
정상 실행
취약점 발생 Crash/
Terminated
47. 4. Exploitation
CALL FUNC_TABLE[idx]
- 이 경우에선 취약점의 특성상 process continuation을 구현하기가 굉장히
간단함.
- 취약점은 함수 포인터 테이블에서 잘못된 인덱스에 있는 함수를 호출함으
로써 발생함.
즉, 원래 정상적인 인덱스를 참조했을 때에 반환되는 레지스터/메모리 상
태를 만들어주고 return하면 정상 프로세스 흐름을 이어갈 수 있음.
(하지만 운이 좋게도 레지스터 상태를 함수 호출 전과 똑같이 유지한 채
return해도 정상 프로세스 흐름을 이어감.)
Advanced Exploitation
– Process continuation
48. 4. Exploitation
1) PUSHAD와 같은 명령으로 레지스터 상태를 보존
2) 목표하는 쉘코드 실행
- 단, 쉘코드가 esp아래에 있는 값을 변경하거나 스택 외에 메모리에 있는 값을
변경하면 안됨.
3) POPAD로 레지스터 상태를 함수 호출 직후로 복구
Advanced Exploitation
– Process continuation
51. 5. Conclusion
- 2012/12/24
- Exploitable crash 발견 & 취약점 원인 분석 완료
(but, Heap spray할 방법 모름)
- 2013/02/02
- Heap spray할 방법 찾음 -> Exploit 작성 완료
- 2013/02/15
- Process continuation 성공
- 2013/02/27
- 취약점 분석 보고서 작성 & Blizzard 취약점 신고 담당 메일로 패치 권고.
- ~ 2013/05/04 응답 없음
- 2013/05/05
- 취약점 패치 재권고
- ~2013/07/13 응답 없음
~ 현재
- 응답 없음
Timeline
52. 5. Conclusion
• Multiplayer 게임들의 공격 벡터
• 맵 파일을 공격 벡터로 하여 취약점 점검하기
• Strarcraft 공략 story
• Heap spray
• 매우 간단한 process continuation
• 심준보 멘토님 짱짱
I have talked about ..