Exploit Tech: Shellcode # 서론 1. 들어가며 🚪 - 익스플로잇(exploit): 해킹 분야에서 상대 시스템을 공격하는 것 - 익스플로잇은 '부당하게 이용하다'라는 뜻이 있는데, 상대 시스템에 침투하여 시스템을 악용하는 해킹과 맥락이 닿음 - 셸코드 셸코드 개념 orw 셸코드 작성 및 디버깅 execve 셸코드 작성 코스 요약 및 리뷰 퀴즈 2. 셸코드 🐚 - 셸코드(Shellcode): 익스플로잇을 위해 제작된 어셈블리 코드 조각을 의미 - 일반적으로 셸을 획득하기 위한 목적으로 셸코드를 사용해서, "셸"이 접두사로 붙었음 - 만약 해커가 rip(명령어 포인터 레지스터)를 자신이 작성한 셸코드로 옮길 수 있으면 해커는 원하는 어셈블리 코드를 실행시킬 수 있음 → 어셈블리어는 기계어와..
Tool: pwntools # 서론 1. pwntools의 등장 배경 - 파이썬으로 페이로드를 생성하고, 파이프(|)를 통해 이를 프로그램에 전달할 수 있음 - 그러나 익스플로잇이 조금만 복잡해져도 위와 같은 방식은 사용하기 어려워짐 - 그래서 해커들은 펄, 파이썬, C언어 등으로 익스플로잇 스크립트, 또는 바이너리를 제작하여 사용함 - 파이썬으로 여러 개의 익스플로잇 스크립트를 작성하다 보면 자주 사용하게 되는 함수들이 있는데, 이런 함수들을 반복적으로 구현하는 것은 비효율적임 - 그래서 시스템 해커들은 이들을 모아 pwntools라는 파이썬 모듈을 제작함 > 이제는 익스플로잇의 대부분이 pwntools를 이용하여 제작 및 공유됨 2. pwntools 설치 - pwntools는 깃헙에 오픈 소스로 공개..
x86 Assembly🤖: Essential Part(2) # 서론 - 운영체제의 핵심 자료구조인 스택, C언어의 함수에 대응되는 프로시저, 그리고 시스템 해킹의 관점에서 매우 중요한 시스템콜과 관련된 어셈블리를 배움 스택: push, pop 프로시저: call, leave, ret 시스템콜: syscall # x86-64 어셈블리 명령어 1. Opcode: 스택 🧱 - x64 아키텍처에서는 다음의 명령어로 스택을 조작할 수 있음 push val // val을 스택 최상단에 쌓음 스택은 확장 될 때 기존 주소보다 낮은 주소로 확장되기 때문에 아래로 자람 pop reg // 스택 최상단의 값을 꺼내서 reg에 대입 2. Opcode: 프로시저 📜 - 프로시저(Procedure): 특정 기능을 수행하는 코드..
x86 Assembly🤖: Essential Part(1) # 서론 - 컴퓨터 속에는 복잡한 논리적 인과관계가 존재하고, 여러 개체가 상호작용하며, 그 세계에서 통용되는 기계어(Machine Code)가 있음 - 해커가 하는 일은 그 거대한 세계의 허점을 공격하여 시스템을 장악하는 것 - 시스템 해커: 컴퓨터의 언어로 작성된 소프트웨어에서 취약점을 발견해야 함 - David Wheeler: EDSAC을 개발하면서 어셈블리 언어(Assembly Language)와 어셈블러(Assembler)라는 것을 고안 - 어셈블러(Assembler): 일종의 통역사, 개발자들이 어셈블리어로 코드를 작성하면 컴퓨터가 이해할 수 있는 기계어로 코드를 치환 > 어셈블리어가 기계어보다는 인간이 이해하기 쉬웠으므로, 개발자들은..