전체 글

· Fuzzing
1. 분석 대상 TCPdump란? CLI 환경에서 실행하는 패킷 가로채기 프로그램 tcp/ip 뿐만 아니라 컴퓨터에 부착된 네트워크를 통해 송수신되는 기타 패킷을 가로채고 표시하는 기능도 있음 Main Topic ASan Sanitizers 2. CVE Code CVE-2017-13028 TCPdump 4.9.2 이전 버전에서 BOOTP packet parsing 도중 out-of-bounds를 통해 임의 메모리의 값을 읽어오는 취약점 3. CVE 관련 정보 Reference https://nvd.nist.gov/vuln/detail/CVE-2017-13028 https://techlog.gurucat.net/273 https://stone-t.tistory.com/9 4. 분석 환경 Ubuntu 20...
· Kernel
1. 소개 본격적인 Kernel exploit tech에 들어가기 앞서 커널 공간을 디버깅 하기위해 qemu 설치와 사용법 등을 알아보자. Qemu ? Linux의 대표적 에뮬레이터 이다. bzImage, cpio 와 같은 이미지 파일을 통해 가상머신을 구동시킬 수 있다. x86, ARM 등 다양한 아키텍처를 지원한다. 왜 Qemu를 사용할까 ? ELF 바이너리를 exploit 할때 버그를 일으키면 프로세스가 종료되고 끝이지만 우리가 사용하는 커널 공간을 조작하다 에러가 발생할 경우 치명적으로 다가올 수 있다. Qemu는 동적 디버깅을 위한 옵션을 지원하기 때문에 디버깅이 좀 더 수월하다는 장점이 있다. 2. 레퍼런스 본 글에서 필요한 예제파일은 ptr-yudai님의 github에 올라와 있는 파일을 사..
· Kernel
1. 소개 필자는 System Hacking에 관한 공부를 진행하며 기본적인 stack과 관련된 취약점, heap exploit, vtable 과 관련된 정보는 한글로 된 정보도 많고 예제도 많기 때문에 충분히 실습과 이론적인 공부를 하기 어렵지 않았다. 그런데, 최근 Linux Kernel에 관심을 갖게 되며 공부를 진행하던 중 Kernel에 관한 정보와 이론은 영어나 외국어로 작성되어 있는 자료가 많았고, 한국어 자료의 경우 찾기 어렵거나 일부 블로그의 정보만으로는 공부하기가 쉽지 않다. 그래서 여러 레퍼런스 자료들을 참고하고 실습하며 Kernel 이론 부터 exploit 까지 블로그로 작성해보려한다. 2. 레퍼런스 전반적인 내용은 Pwanyable blog에 기초를 두고 작성하겠다. https://..
· Pwnable
1. 소개 Pwn 분야를 처음 접하게 되면 가장 많이 어렵다고 느끼는 부분인 Pwnable의 꽃 ROP에 대해서 알아보자 선행 학습 요소 Calling Convention Buffer Overflow Stack Memory Cumputer Architecture ROP란? Return Oriented Programming(이하 ROP)은 가젯이라고 불리는 코드 조각들을 사용하여 공격자가 임의의 코드를 실행하고 프로그램의 흐름을 바꾸는 기초 기법이다. 말그대로 공격자가 원하는 대로 실행 흐름을 바꿀 수 있기 때문에 공격이 가능할 경우 엄청난 피해를 일으킬 수 있다. How to use? 필요한 프로그램들로는 gdb(pwndbg, peda, gef), pwntools, python 등의 프로그램이 사용된다...
· Fuzzing
1. 분석 대상 libexif란? C언어 기반의 리눅스 라이브러리이다. exif file을 parsing 해주는 기능을 가지고 있다. How to Fuzz? libexif는 라이브러리이기 때문에 libexif를 사용하는 프로그램을 설치하여 fuzzing 해야 한다. Main Topic Afl-clang-Ito Fuzz libraries Eclipse IDE 2. CVE Code CVE-2009-3895 libexif 0.6.14 버전에서 exif-entry.c 파일에 exif_entry_fix() 함수가 올바르지 않은 EXIF 이미지 파일 사용시 Heap Base Buffer Overflow를 통해 공격자가 임의의 코드를 삽입 혹은 DoS 공격을 할 수 있는 취약점 3. CVE 관련 정보 Referenc..
· Fuzzing
1. 분석 대상 Xpdf란? PDF 뷰어 및 관련 명령행 도구들을 사용할 수 있는 오픈 소스 프로그램 Main Topic Afl-clang-fast Afl-fuzz GDB 2. CVE Code CVE-2019-13288 Xpdf 3.02 버전에서 Parser.cc 파일의 Parser::getObj() 함수가 무한히 호출되어 DoS 공격이 발생되는 취약점 3. CVE 관련 정보 Reference https://nvd.nist.gov/vuln/detail/CVE-2019-13288 https://github.com/antonio-morales/Fuzzing101/tree/main/Exercise%201 4. 분석 환경 Ubuntu 20.04 환경에서 진행 Xpdf 3.02 Download wget https..
· Pwnable
Asm 명령어 중에 Syscall 이라는 명령어가 있다. Syscall 명령어는 x86-64 아키텍처 기준으로, rax, rdi, rsi, rdx 총 4가지 레지스터의 정보를 통해 여러 함수를 실행한다. (몇몇의 syscall 명령어는 더 많은 레지스터를 사용하기도 한다.) 우선적으로, rax 레지스터의 값으로 어떤 함수를 실행할지 결정하게 되는데, 각 값에 따른 함수의 종류는 아래 링크에 정리되어 있다. https://chromium.googlesource.com/chromiumos/docs/+/master/constants/syscalls.md Chromium OS Docs - Linux System Call TableLinux System Call Table These are the system c..
· Dreamhack
코드 세그먼트(Code Segment) 실행 가능한 기계 코드가 위치하는 영역으로 텍스트 세그먼트 라고도 불린다 프로그램이 동작하려면 코드를 실행할 수 있어야 하므로 이 세그먼트에는 읽기 권한과 실행 권한이 부여된다 쓰기 권한을 제거하는 이유는 공격코드 삽입이 쉬워지기 때문 main 함수가 컴파일 되면 기계 코드로 변환되는데, 이 기계 코드가 코드 세그먼트에 위치한다 데이터 세그먼트(Data Segment) 컴파일 시점에 값이 정해진 전역 변수 및 전역 상수들이 위치한다 CPU가 이 세그먼트의 데이터를 읽을 수 있어야 하므로, 읽기 권한이 부여됨 데이터 세그먼트는 다시 쓰기가 가능한 것과 불가능한 것으로 분류되는데, 전역 변수와 같이 프로그램이 실행되면서 값이 변할 수 있는 데이터 들이 위치하는 세그먼트..
· Dreamhack
컴퓨터 구조(Computer Architecture) 폰노이만 구조 중앙처리장치 - 버스 - 메모리 의 구조로 되어 있음 중앙처리장치는 연산, 버스는 데이터 통로, 메모리는 연산할 데이터를 보내는 역할 중앙처리장치에도 레지스터라는 메모리가 있는데, 연산속도가 데이터 교환보다 빠르므로 병목을 방지하고 원활한 연산을 위해 레지스터가 존재함 명령어 집합 구조(Instruction Set Architecture, ISA) x86, ARM 등의 명령어 집합 구조가 존재함 x86-64는 intel의 64비트 아키텍처이다 아키텍처의 64비트, 32비트는 중앙처리장치가 한 번에 처리할 수 있는 데이터의 양 다른말로 WORD 라고 부르는데, 32비트 아키텍처의 경우 가상메모리 공간이 상대적으로 적어서 고성능의 소프트웨어..
igunis
불여우령