분류 전체보기
-
암호학 3주차보안/CRYPTOGRAPHY 2024. 3. 15. 15:07
1. 암호학 : 정보를 보호하기 위한 언어학적 및 수학적 방법론을 다루는 학문 좁은 의미: 제삼자로부터 정보를 보호하는 방법에 대한 연구 - 키생성, 암호화, 복호화 - 키 생성: 암호화 및 복호화에 사용할 키를 만드는 과정 - 암호화: 키를 이용해 평문을 암호문으로 변환하는 과정 - 복호화: 송신자가 암호문을 전송하면 수신자가 키를 이용해 암호문을 평문으로 복화화 -> 암호 시스템: 암호화와 복호화로 정보가 전달되는 체계 + 인코딩 : 암호화와 유사하게 데이터를 다른 형태로 변환하는 것 데이터의 기밀성 고려 안 함 누구나 디코딩해서 원문을 구할 수 있음 압축도 인코딩의 예시 2. 배타적 논리합과 합동식 배타적 논리합(eXclusive OR, XOR) : 입력으로 들어온 두 인자가 서로 다를 때,..
-
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..