System_hacking

🌇│System_Study/📕│Dreamhack_Hacking

Mitigation: Stack Canary

스택 카나리(Stack Canary) 스택 버퍼 오버플로우로부터 반환 주소를 보호하는 기법 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법입니다. 카나리 값의 변조가 확인되면 프로세스 강제 종료! BOF로 RET를 덮으려면 반드시 카나리를 먼저 덮어야하므로 카나리 값을 모르는 공격자는 반환 주소를 덮을 때 카나리 값을 변조하게 됩니다. 그러하다면 변조가 확인되어 공격자는 실행 흐름을 획득하지 못하게됩니다. TMI. 카나리라는 이름의 유래 카나리 보호 기법의 이름은 카나리아(Canary)라는 새에서 유래되었습니다. 19세기, 20세기에는 일산화탄소 농도의 측정 기술이 부족했고, 탄광에서 유출된 일산화탄소에 광부가 중독사하는 ..

🌇│System_Study/📕│Dreamhack_Hacking

Exploit Tech: Return Address Overwrite

서론 이제 스택 오버 플로우를 활용한 RET를 변조해 셸을 획득하는.. 그런 워게임을 해봅시다 아래는 예제예요 // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main() { char buf[0x28]; init(); printf("Input: "); scanf("%s", buf); return ..

🌇│System_Study/📕│Dreamhack_Hacking

Exploit Tech: Shellcode

익스플로잇(Exploit) 해킹 분야에서 상대 시스템을 공격하는 것으로 침투하여 시스템을 악용하는 해킹과 맥락이 같음 첫 번째 공격기법인 셸코드이며, 지금까지 배운 지식을 점검하고 gdb 사용에 익숙해지는 시간이 되어봐요 셸코드 익스플로잇을 위해 제작된 어셈블리 코드 조각 일반적으로 셸을 획득하기 위한 목적으로 셸코드를 사용해, 특별히 "셸"이라는 접두사 붙음 셸을 획득하는 것은 매우 중요해요, 그 이유는 뒤에 나와요 만약 해커가 rip를 자신이 작성한 셸코드로 옮길 수 있으면 익스플로잇이 되요! 셸코드는 어셈블리어로 구성되므로 공격을 수행할 대상 아키텍처와 OS에 따라, 그리고 셸코드의 목적에 따라 다르게 작성됩니다 또한 밑 링크는 아키텍처 별 범용적 셸코드! shell-storm | Shellcode..

🌇│System_Study/📕│Dreamhack_Hacking

Tool: pwntools

pwntools의 간단 설명 탄생 배경과 설치 방법 지난 시간에 파이썬과 파이프(|)를 통해 간단한 스택 오버플로우 익스플로잇을 했죠 파이썬으로 페이로드를 생성하고, 파이프를 통해 이를 프로그램에 전달했죠 그러나 익스플로잇이 좀만 복잡해도 위 방법은 이용이 불가능합니다. 페이로드를 생성하기 위해 복잡한 연산과 프로세스와 반복적 데이터 송수신이 가능해야죠 그래서 해커들은 perl, python c언어 등으로 익스플로잇 스크립트, 또는 바이너리를 제작해 사용했죠 더 자세히 알고 싶다면 소켓 프로그래밍을 배우시면 돼요 파이썬으로 여러 개의 익스플로잇 스크립트를 작성하다 보면, 자주 사용하게 될 함수가 있죠 예로 리틀 엔디안의 바이트 배열로 바꾸는 패킹 함수, 또는 그 역을 수행하는 언패킹 함수 등이죠 익스플로..

🌇│System_Study/📕│Dreamhack_Hacking

Tool: gdb

​🐛Debug(ger)란? CS(Computer Science)에선 실수로 탄생한 프로그램의 결함을 bug라고 칭함 설치 sudo apt-get install gdb git clone https://github.com/pwndbg/pwndbg cd pwndbg ./setup.sh GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy Exploit Development and Reverse Engineering with GDB Made Easy - GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy gi..

🌇│System_Study/📕│Dreamhack_Hacking

Quiz: x86 Assembly

Quiz: x86 Assembly 1 위 문제를 해석한 부분이며, Dreamhack의 내용입니당 앞썬 내용에서 대충 명령어와 해당 레지스터에 대한 설명을 했으므로 간략하게 설명하고 넘어갈께요 dl : RDX(64byte) → EDX(하위 32byte) → DX(하위 16byte) → DL(하위 8byte) 1. mov dl, BYTE PTR[rsi+rcx] dl = rdx 8byte low_data > dl = 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x10 0x57656c636f6d6520 0x400000 | 0x57656c636f6d6520 rcx = 0x1 result = -1 5 result is flase so.. code excute X

🌇│System_Study/📕│Dreamhack_Hacking

x86 Assembly: Essential Part

해커의 언어: 어셈블리💬 PC에서 복잡한 논리적 인과관계, 여러 개체가 상호작용하며 그 세계에서 통용되는 기계어(Machine Code)언어 핵심! 시스템 해킹을 할 때는 컴퓨터 언어, 운영체제, 네트워크, 암호학 등 다양한 배울 것들이 존재하지만, 그중 시스템 해커가 가장 기본적으로 습득해야 하는 지식은 컴퓨터 언어에 관한 것임! 시스템 해커는 컴퓨터의 언어로 작성된 소프트웨어에서 취약점을 발견해야 하기 때문 그런데 문제는 PC 언어인 기계어가 너무 이해하고 작성하기 힘들기에 난해한 기계어를 바꾼 사람이 있으니, 컴퓨터 과학자 중 한 명인 David Wheeler는 EDSAC을 개발하면서 어셈블리 언어(Assembly Language)와 어셈블러(Assembler)라는 것을 고안 어셈블러는 일종에 통역..

🌇│System_Study/📕│Dreamhack_Hacking

Linux Memory Layout

1. 리눅스 메모리 구조(Memory Layout) 프로세스 가상메모리의 각 구역이 어떤 정보를 담고 있는지 이해하는 것이 핵심! 더보기 📜개요📜 세그먼트란 코드 세그먼트 데이터 세그먼트 BSS 세그먼트 스택 세그먼트 힙 세그먼트 CPU는 실행할 명령어와 명령어 처리에 필요한 데이터를 메모리에서 읽고, Instruction Set Architecture(ISA)에 따라 이를 처리합니다. 그리고 연산의 결과를 다시 메모리에 적재합니다. CPU의 동작과 메모리 사이에 밀접한 연관이 있음을 의미 공격자가 메모리를 악의적으로 조작할 수 있다면 조작된 메모리 값에 의해 CPU도 잘못된 동작할 수 있습니다. 이를 메모리가 오염됐다고 표현하며, 이를 유발하는 취약점을 메모리 오염(Memory Corruption) 취..

🌇│System_Study/📕│Dreamhack_Hacking

Computer Architecture

1. 컴퓨터 구조(Computer Architecture) 컴퓨터 과학에서는 PC설계를 여러 하드웨어가 개발되고, 이들을 조립해서 컴퓨터가 완성한 것이 컴퓨터 구조! 더보기 📜개요📜 컴퓨터 구조(Computer Architecture) 명령어 집합 구조(Instruction Set Architecture, ISA) 범용 레지스터(General Register) 세그먼트 레지스터(Segment Register) 플래그 레지스터(Flag Register) 명령어 포인터 레지스터(Instruction Pointer Register, IP) 컴퓨터는 각자 다른 기능을 수행하는 여러 부품들의 도움으로 작동합니다. CPU는 컴퓨터의 작동에 핵심이 되는 연산을 처리하고, 저장장치는 데이터를 저장합니다. 이 외에도 G..

Jastes
'System_hacking' 태그의 글 목록