background

    [Lazenca][Development of Kernel Module] 02.Character Device Drivers

    [Lazenca][Development of Kernel Module] 02.Character Device Drivers

    Character Device Drivers 버퍼 캐시(Buffer cache)를 사용하지 않고 데이터를 한번에 하나의 문자를 읽고 쓰는 드라이버이다. 예) Keyboad, Sound card, Printer 드라이버 이외에도 Block Device, Network Device 드라이버가 있다. 블록 디바이스 드라이버는 버퍼 캐시를 통한 임의 접근과 블록단위로 입출력이 가능하다. 예) 하드디스크 네트워크 디바이스 드라이버는 네트워크 스택과 네트워크 하드웨어 사이에 위치해 데이터의 송수신을 담당한다. 예) Ethernet, Network interface card struct file_operations file_operations 구조체는 Character Device, Block Device Drive..

    [Linux Kernel] Device Driver

    [Linux Kernel] Device Driver

    리눅스 커널 익스플로잇을 공부하기 위해 나름대로 정리한 글입니다. 틀린 내용이 있을 수 있습니다. 리눅스는 모놀리딕 아키텍처가 아닌 모듈로 구성되어 있기 때문에 성능은 낮은 대신, 유지 보수가 용이하다. 이 말인 즉슨 무언가를 추가하고 제거하는 것이 USB를 꽂았다 제거하듯이 간편하다는 의미이다. 리눅스 커널 아키텍처는 다음과 같다. 유저는 시스템 콜로 커널에게 작업을 요청하게 된다. (인터럽트 발생) 그럼 커널은 요청 받은 작업을 수행하고 유저에게 결과를 리턴해준다. 리눅스 커널은 모든 것들을 파일로 인식하고 처리한다고 했다. 이는 장치(device)도 예외는 아니다. 장치 제어를 위해 필요한 것이 바로 장치 드라이버(device driver)이다. 장치 드라이버는 하드웨어의 모든 기능들을 수행할 수 ..

    [Lazenca][Development of Kernel Module] 01.Hello world!

    [Lazenca][Development of Kernel Module] 01.Hello world!

    이 예제는 ubuntu 18.10에서 진행된다. 여기서 다운받아서 vmware로 가상머신 하나 만들어줬다. https://old-releases.ubuntu.com/releases/18.10/ gcc가 설치되어 있어야 한다. lazenca0x0@ubuntu:~$ uname -a Linux ubuntu 4.18.0-11-generic #12-Ubuntu SMP Tue Oct 23 19:22:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux lazenca0x0@ubuntu:~$ gcc --version gcc (Ubuntu 8.2.0-7ubuntu1) 8.2.0 Copyright (C) 2018 Free Software Foundation, Inc. This is free soft..

    [fuzzing101] Exercise 1 - Xpdf (CVE-2019-13288)

    [fuzzing101] Exercise 1 - Xpdf (CVE-2019-13288)

    개요 첫 번째 예제는 Xpdf PDF 뷰어 퍼징이다. 목표는 XPDF 3.02에서 CVE-2019-13288에 대한 크래시/PoC를 찾는 것 이다. CVE-2019-13288은 조작된 파일을 통해 무한 재귀를 일으킬 수 있는 취약점이다. 프로그램에서 호출된 각 함수는 스택에 스택 프레임을 할당하므로 함수가 너무 많이 반복적으로 호출되면 스택 메모리가 고갈되고 프로그램이 중단될 수 있다. 이는 DoS 공격에 활용될 수 있다. https://cwe.mitre.org/data/definitions/674.html 환경 해당 예제는 ubuntu 20.04 버전을 권장하고 있으며 vmware 파일을 제공하고 있다. (pw: fuzz) https://drive.google.com/file/d/1_m1x-SHcm7M..

    gdbinit setting

    vi ~/.gdbinit source ~/pwndbg/gdbinit.py #source ~/.gef-2024.01.py #source ~/peda/peda.py source ~/Pwngdb/angelheap/gdbinit.py define hook-run python import angelheap angelheap.init_angelheap() end end 원하는 plugin 외에는 source 주석 처리 (py 파일 경로 정확해야 함)