Security 4

System Hacking: Shellcode - 1

DreamHack의 System Hacking 로드맵을 기반으로 정리한 글입니다.Exploit Tech: 1. orw Shellcode해킹 분야에서 상대 시스템을 공격하는 것을 익스플로잇(Exploit)이라고 부른다. 익스플로잇은 '부당하게 이용하다'라는 뜻이 있는데, 상대 시스템에 침투하여 시스템을 악용하는 해킹과 맥락이 닿는다. 셸코드(Shellcode)는 시스템 해킹의 익스플로잇과 관련된 공격 기법 중 하나로, 익스플로잇을 위해 제작된 어셈블리 코드 조각을 일컫는다. 일반적으로 셸을 획득하기 위한 목적으로 셸코드를 사용해서, 특별히 '셸'이 접두사로 붙었다. 셸을 획득하는 것은 시스템 해킹의 관점에서 매우 중요하다. 만약 해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 해커는 원하는 어셈블리..

System Hacking: Tool Installation - 2

DreamHack의 System Hacking 로드맵을 기반으로 정리한 글입니다.Tool: pwntools파이썬으로 여러 개의 익스플로잇(취약점 공격) 스크립트를 작성하다 보면, 자주 사용하게 되는 함수들이 있다. 예를 들어 정수를 리틀 엔디언의 바이트 배열로 바꾸는 패킹 함수, 또는 그 역을 수행하는 언패킹 함수 등은 익스플로잇 과정에 거의 항상 필요하다. ※ 리틀 엔디언: 데이터를 메모리에 저장하거나 전송할 때, 값의 하위 바이트(작은 값의 바이트)를 먼저 저장하는 방식이다. 이런 함수들을 반복적으로 구현하는 것은 비효율적이다. 그래서 시스템 해커들은 이들을 집대성하여 pwntools라는 파이썬 모듈을 제작하였다. pwntools 덕분에 익스플로잇 제작은 전과 비교할 수 없을 정도로 간단하고, 쉬워졌..

System Hacking: Tool Installation - 1

DreamHack의 System Hacking 로드맵을 기반으로 정리한 글입니다.Tool: gdb디버거프로그램을 개발할 때는 일반적으로 코드의 논리구조를 신중하게 설계하고, 코드를 작성해 나간다. 그런데 개발 초기에 아무리 신중하게 설계해도, 코드의 규모가 커지다 보면 실수가 발생하기 마련이다. 컴퓨터 과학에서는 이렇게 실수로 발생한 프로그램의 결함을 버그(bug)라고 한다. 개발자들은 농담처럼 개발에 투자한 시간만큼을 버그를 잡는 데 사용한다고 말한다. 그 정도로 이미 완성된 코드에서 버그를 찾는 것은 어렵다. 그래서 이런 어려움을 해소하고자 디버거(Debugger)라는 도구가 개발되었다. 디버거는 문자 그대로 버그를 없애기 위해 사용하는 도구이다. 프로그램을 어셈블리 코드 단위로 실행하면서, 실행 결..

System Hacking: Background - Computer Science

DreamHack의 System Hacking 로드맵을 기반으로 정리한 글입니다.Computer Architecture폰 노이만 구조폰 노이만은 컴퓨터에 연산, 제어, 저장의 세 가지 핵심 기능이 필요하다고 생각했다.근대의 컴퓨터는 연산과 제어를 위해 중앙처리장치(Central Processing Unit, CPU)를, 저장을 위해 기억장치(memory)를 사용한다. 그리고 장치 간에 데이터나 제어 신호를 교환할 수 있도록 버스(bus)라는 전자 통로를 사용한다.▶ 폰 노이만 구조 중앙처리장치CPU는 프로그램의 연산을 처리하고 시스템을 관리하는 컴퓨터의 두뇌이다.프로세스의 코드를 불러오고, 실행하고, 결과를 저장하는 일련의 모든 과정이 CPU에서 일어난다.CPU는 산술/논리 연산을 처리하는 산술논리장치(..