목록Lecture (5)
Sechack
지난 시간에는 Return to Shellcode기법을 실습해보았습니다. 하지만 일반적인 환경에서는 다양한 보호기법들로 인해서 Return to Shellcode와 같은 단순한 공격은 거의 먹히지 않습니다. 이번 시간에는 우리의 exploit을 방해하는 보호기법들이 무엇이 있는지 알아보도록 하겠습니다. NX bit NX bit는 code영역을 제외한 다른 메모리 영역에서 실행권한을 빼버리는 보호기법입니다. 조금만 생각해보면 스택, 힙과 같은 데이터 저장을 위해서 존재하는 메모리 공간에 굳이 실행권한이 존재할 이유가 없습니다. 따라서 실제 실행되는 opcode가 들어가있는 code영역을 제외하고 나머지 메모리 공간에서는 실행권한을 빼버리더라도 프로그램 실행에는 지장이 없습니다. 먼저 NX bit가 걸려있지..
이번 시간에는 시스템 해킹의 기초이자 매우 중요한 취약점인 Stack Buffer Overflow에 대해서 알아보겠습니다. Buffer Overflow는 할당된 메모리 공간을 넘어서 다른 메모리에까지 데이터를 입력할 수 있는 취약점입니다. 줄여서 BOF라고 많이 부릅니다. BOF에는 크게 두가지 종류가 있습니다. 첫번째는 Stack영역에서 발생하는 Stack Buffer Overflow이고 두번째는 Heap영역에서 발생하는 Heap Overflow입니다. BOF가 발생하는 원인은 다양합니다. gets, scanf와 같은 입력 길이 검증이 없는 안전하지 않은 함수를 사용해서 발생하기도 하고 size체크를 하는 안전한 함수를 사용하지만 integer overflow와 같은 로직상의 버그로 안해서 발생되기도 ..
이번 시간에는 시스템 해킹을 하는데 매우 강력한 python모듈인 pwntools에 대해서 알아보겠습니다. pwntools는 현재 Wargame이나 CTF에서 pwnable분야의 ELF exploit 문제를 풀이할때 거의 필수적으로 사용되는 모듈입니다. 다른 사람의 풀이를 보더라도 대부분 pwntools를 이용해서 exploit을 작성한다는 것을 알 수 있습니다. 따라서 해킹 대회를 준비하거나 Wargame으로 시스템 해킹 실력을 늘리고 싶은 분들께서는 pwntools사용법은 필수적으로 알아야 합니다. 이 강의에서도 앞으로 쭉 exploit은 pwntools를 이용해 작성할 것이므로 이번 시간에 pwntools의 기본적인 사용법을 알아가시기 바랍니다. pwntools의 본질은 자동화 입니다. 시스템 해킹..
이번 시간에는 Shellcode가 무엇인지 이해하고 직접 Shellcode를 만들어보는 실습을 할 것입니다. Shellcode는 메모리에 올리면 바로 실행을 할 수 있는 기계어 조각입니다. 시스템 해킹에서도 프로그램의 흐름을 변조할 수 있을때 메모리에 Shellcode를 올리고 Shellcode가 있는 메모리 주소로 프로그램의 흐름을 바꿔서 원하는 Shellcode를 실행시키는 방식의 공격이 상황에 따라서 유용하게 쓰입니다. 그러면 이러한 Shellcode는 어떻게 만들어질까요? 지금부터 그 과정을 함께 실습해보도록 합시다. 실습하기 전에 지난시간에 만들어두었던 ubuntu 20.04를 부팅시켜주세요. cd ~ mkdir pwnable cd pwnable sudo apt install nasm Shell..
시스템 해킹, pwnable이라고 많이들 부릅니다. 시스템 해킹은 소프트웨어를 분석해서 취약점을 찾고 셸을 따거나 root권한을 휙득하는 등 소프트웨어의 취약점을 이용해서 시스템을 장악해버리는 행위를 말합니다. 바이너리를 분석해서 취약점을 찾는것이기 때문에 Pseudocode의 형태인 C언어와 기계어와 1대1로 매칭되는 어셈블리 언어는 필수적으로 선행되어야 원활하게 시스템 해킹을 학습하실 수 있습니다. 그러면 일단 시스템 해킹을 공부하기 위한 ubuntu환경부터 구축해보겠습니다. Heap exploit을 공부하기 전까지의 모든 실습은 ubuntu 20.04에서 진행할 것이므로 다른 버전을 설치하시면 실습에 지장이 생길 수 있습니다. VMware, VirtualBox, wsl2, Docker등등 windo..