보안/SYSTEM HACKING
-
dreamhack stage 4 - Exploit Tech:Shellcode보안/SYSTEM HACKING 2024. 3. 15. 16:05
0. 서론 익스플로잇(Exploit) :해킹 분야에서 상대 시스템을 공격하는 것/ 부당하게 이용하다 라는 의미 상대 시스템에 침투해 시스템을 악용 시스템해킹의 익스플로잇과 9가지 공격기법을 소개할 것이다. 1. 셸코드(Shellcode) : 익스플로잇을 위해 제작된 어셈블리 코드 조각 시스템해킹에서의 셸 획득 중요성 - execve 셸코드 해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 해커는 원하는 어셈블리 코드가 실행되게 할 수 있다. - -> 어셈블리어는 모든 명령을 CPU에 내릴 수 있다. 셸코드의 구성과 목적 - 셸코드는 어셈블리어로 구성된다. - 공격 수행 대상 아키텍처와 운영체제, 셸코드의 목적에 따라 다르게 작성된다. - 공유되는 셸코드는 범용적으로 작성되어 시스템 환경을..
-
dreamhack stage 3 - Tool:pwntools보안/SYSTEM HACKING 2024. 3. 15. 14:04
1. pwntools 의 등장 배경 1. 초기: 파이썬으로 공격 페이로드를 생성하고 파이프를 통해 프로그램에 전달하는 방식으로 익스플로잇 수행 2. 익스플로잇 수행에 있어서의 단점 발견 익스플로잇이 조금만 복잡해져도 파이썬으로 공격 페이로드를 생성하고 파이프를 통해 프로그램에 전달하는 방식은 사용하기 어려워졌다. 페이로드를 생성하기 위해 복잡한 연산/프로세스와 반복적으로 데이터를 주고받 아야 할 수도 있게 되었다. 또한 파이썬으로 여러 개의 익스플로잇 스크립트를 작성하면 자주 사용하는 함수 (패킹함수, 언패킹 함수)가 많다. 3. pwntools의 등장 이 함수들을 계속 구현하는 것은 비효율적이므로 시스템 해커들은 집대성하여 pwntools 라는 파이썬 모듈을 제작했다. pwntools로 익스플로..
-
dreamhack stage 3 - Tool:gdb보안/SYSTEM HACKING 2024. 3. 15. 13:02
STAGE 3 Tool:gdb 1. 디버거 버그(bug): 실수로 발생한 프로그램의 결함 디버거(Debugger) : 버그를 없애기 위해 사용하는 도구 만든 배경: 버그를 잡는 어려움을 해결하기 위해 개발된 도구 작동 과정: 프로그램을 어셈블리 코드 단위로 실행 + 실행 결과를 사용자에게 보여줌 -> 개발자는 디버거를 사용해 코드의 문제점을 찾을 수 있다. 그런데, 디버거로 인해 누구나 버그 탐색의 효율을 높일 수 있게 되었지만 버그 발견이 쉬워지면서 해커들은 취약점을 발견하기 쉬워졌다. 2. gdb & pwndbg 2-1. 정의와 설치, 예제 gdb (GNU debugger) : 리눅스의 대표적인 디버거 - 다양한 플러그인들이 개발되었고 Ubuntu 18.04에는 기본적으로 설치되어 있다. ..
-
dreamhack stage 2 - x86 Assembly보안/SYSTEM HACKING 2024. 3. 15. 12:46
STAGE 2 x86 Assembly x86 Assembly:Essential Part(1) 0. 서론 기계어(Machine Code)라는 언어가 있다. 시스템 해커는 컴퓨터의 언어로 작성된 소프트웨어에서 취약점을 발견해야 한다. 그런데 기계어는 0과 1로만 구성되어있어 이해하기 어렵다. --> David Wheeler 가 EDSAC을 개발하면서 어셈블리 언어와 어셈믈러를 고안했다. 어셈블러는 어셈블리어로 코드를 작성하면 컴퓨터가 이해할 수 있는 기계어로 코드를 치환해준다. --> 기계어를 어셈블리 언어로 번역하는 역어셈블러를 개발했다. 기계어로 구성된 소프트웨어를 역어셈블러에 넣으면 어셈블리 코드로 번역된다. 1. 어셈블리어와 x86-64 어셈블리 언어 : 컴퓨터의 기계어와 치환되는 언어 - 기계어..
-
dreamhack stage 2 - Computer Architecture보안/SYSTEM HACKING 2024. 3. 15. 11:44
STAGE 2 Computer Architecture Background: Computer Architecture 0. 서론 컴퓨터 구조, 명령어 집합 구조, 인텔의 x86-64에 대해 알아볼 예정 컴퓨터 과학을 배워야 하는 이유 시스템 해킹의 기술은 컴퓨터 과학에 뿌리를 두고 있다. 컴퓨터는 여러 부품의 도움으로 작동한다. CPU: 컴퓨터의 작동에 핵심이 되는 연산 처리 저장장치: 데이터를 저장 GPU: 그래픽 데이터 랜카드: 네트워크 통신 사운드 카드: 소리 데이터 처리 ... --> 서로 다른 부품이 모여 기계가 작동하게 하는 것은 기본 설계가 존재하기 때문이다. 여기에서 설계를 컴퓨터 구조(Computer Architecture) 라고 한다. 명령어 집합구조(Instruction Set Arc..
-
dreamhack stage 2 - Linux Memory Layout보안/SYSTEM HACKING 2024. 3. 15. 09:42
STAGE 2 Linux Memory Layout Background: Linux Memory Layout 0. 서론 컴퓨터는 크게 CPU와 메모리로 구성되어 있다. CPU - 실행할 명령어와 명령어 처리에 필요한 데이터를 메모리에서 읽고 Instruction Set Architecture (ISA)에 따라 이를 처리하고 연산의 결과를 다시 메모리에 적재한다. - CPU의 동작과 메모리 사이에는 밀접한 연관이 있다 : 공격자가 메모리를 악의적으로 조작 가능하다면 이는 메모리가 오염됐다고 표현한다 --> 이를 유발하는 취약점 == 메모리 오염 (Memory Corruption) 취약점 많은 공격기법이 메모리 오염을 기반으로 한다. 커리큘럼에서 소개할 내용: Stack Buffer Overflow..