[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
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드GangSeok Lee
2012 CodeEngn Conference 07
Secuinside는 코스콤에서 주최, 연합해킹그룹 HARU, 고려대 정보보호대학원에서 주관하는 국제 해킹대회 및 보안컨퍼런스로써 얼마전 개최된 해킹대회 예선전 문제들을 풀기위해 사용한 분석기술과 ASLR과 NX를 우회하는 새로운 익스플로잇 기술에 대해서 소개한다.
http://codeengn.com/conference/07
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Item 14 : Declare functions noexcept if they won't emit exceptions. +윤석준
Item 15 : Use constexpr whenever possible. +이동우
Item 16 : Make const member functions thread safe. +제한재
[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
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드GangSeok Lee
2012 CodeEngn Conference 07
Secuinside는 코스콤에서 주최, 연합해킹그룹 HARU, 고려대 정보보호대학원에서 주관하는 국제 해킹대회 및 보안컨퍼런스로써 얼마전 개최된 해킹대회 예선전 문제들을 풀기위해 사용한 분석기술과 ASLR과 NX를 우회하는 새로운 익스플로잇 기술에 대해서 소개한다.
http://codeengn.com/conference/07
[C++ Korea] Effective Modern C++ Study item14 16 +신촌Seok-joon Yun
[C++ Korea] Effective Modern C++ Study item14 16 +신촌
Item 14 : Declare functions noexcept if they won't emit exceptions. +윤석준
Item 15 : Use constexpr whenever possible. +이동우
Item 16 : Make const member functions thread safe. +제한재
[C++ Korea 2nd Seminar] C++17 Key Features SummaryChris Ohk
C++은 10년 만에 C++11/14를 발표하면서 '모던 C++'이라는 이름으로 발전했습니다. 그만큼 새로운 기능들이 많이 추가되었습니다. 그리고 2017년, C++은 C++17이라는 이름으로 또 한 번의 발전을 준비하고 있습니다. 3년 주기로 빠르게 변화하는 모던 C++에 대비하기 위해, C++17에 추가될 주요 기능들을 살펴보고자 합니다.
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
이미 많은 개발자들이 C#의 장점을 누리고 있으나, 본 PT에서는 높은 성능과 생산성을 동시에 달성하기 위해 C/C++로 개발된 native 게임 코드에 스크립트 언어로서 C#을 통합 할 수 있는 방법을 제시한다. 이를 위해 오픈소스 .Net 프레임웍인 Mono의 사용방법과 모바일 플랫폼에서의 특이사항들을 자세히 설명한다.
또한, C/C++언어에 C#을 비롯한 다양한 스크립트 언어를 효율적으로 혼합하여 게임을 구현할 수 있는 아키텍처를 제시한다. clang과 reflection을 이용하여 서로 다른 언어 간 인터페이스 노출을 자동화하고, 게임 내 오브젝트의 생명주기를 자동으로 관리할 수 있는 기법에 대해 설명한다.
2. 과제의 목적 및 요구사항
- 간단한 Shell의 구현으로 실제 CLI환경의
프로그램수행 알고리즘과 pipe의 작동 메커니즘을 알 수 있도록 한다.
1. Batch mode / Interaction mode 의 구분
2. 명령의 구분
2-1 일반명령 구분자
2-2 “|” (pipe) 명령 구분자
3. 기타 shell 명령 수행 시 오류 처리
3. 과제의 목적 및 요구사항
ERR 종료 ERR 진행 예외처리
잘못된 개수의 argument 명령이 없음 명령줄이 빔
배치파일이 존재하지 않음 매우 긴 명령 명령줄에 불필요 공백
“ | | ” Quit없이 끝나는 Batch file
파이프가 양 끝 단에 존재 Ctrl + D 를 통한 종료
- 예외처리
4. 구성도
Main()
Mode select
Check(pipe_location)
Shell_process()
Get_token(‘|’)
Check(command.lengh )
Check(quit command)
Make command process
Make_tree()
Make fork() tree
Execute(command)
5. Data flowchart
Input user CMD
1 CMD String
“ | n”
“ ”
For(num of command){
fork();
}
execvp
(command_tok[0], command_tok);
Number of
commands
While(isquit)
Command tokens
6. CMD argument
• Get_token()함수를 이용, 반환 시 문자열 배열과 배열의 크기를
반환하여 명령 수에 따른 fork()를 수행 할 수 있도록 함.
13. 예외처리 list
ERR 종료
잘못된 개수의 argument
Batch file을 찾을 수 없음 Fopen 함수의 반환이 NULL일 경우
종료
ERR 진행
명령을 찾을 수 없음 Perror함수를 통해 ERR출력
중첩 파이프 ERR 출력 후, 1개 파이프 처리
양 끝 단에 파이프 존재 최초 CMD string 획득 시 char 배열의
양끝을 읽어 에러표기
예외처리
비어있는 명령줄 Token의 길이가 0일 경우 break
불필요 공백 Token 획득 시 무시
Quit없이 끝나는 Batch file
feof 함수 활용 EOF를 찾는다.
Ctrl + D
14. 구현 Check list
대화모드에서 명령어가 수행된 뒤, 프롬프트가 뜨는가 Y
배치모드에서 명령줄의 명령어들이 수행되지 전에 그 명령줄이 출력되는가 Y
한 명령줄에 여러 개 의 명령어들을 2개이상 넣었을때, 그 개수만큼만 에러메시지가 출력되는가? Y
‘;’과 같은 특수문자를 명령줄에 넣었을 때 인자로 인식되는가? Y
Quit가 여러 명령어들과 같이 한 명령줄에서 수행되었을 때, 다른 명령어들이 수행되지 않는 것
이 분명한가?
Y
첫 quit명령어를 수행 했을 때, 다음 명령 줄들은 모두 무시되는가? Y
16. 과제 수행 후 고찰
• fork를 통해 명령을 수행 함으로써 exec()함수로 인한 shell
process의 code부를 보호할 수 있었으며, 이는 계속해서 사용자
명령을 받아 처리할 수 있게 하였다.
• pipe()함수의 수행 시 kernel은 내부메모리에 IPC를 위한 자리를
할당하게 되며, 프로세서간 메시지가 할당된 메모리보다 클 경우
내부 메모리를 재 할당하여 늘리는 작업을 수행하게 된다. 이러
한 kerne작업을 막기 위해 편향된 fork() tree를 구성하여 여러
pipe를 생성하게 하여, 병렬로 프로세스를 수행하게 하였다.
17. 참고 자료
• http://wiki.falinux.com/ (C라이브러리 함수 참조)