분류 전체보기

Task? - 리눅스의 태스크는 프로그램의 실행단위를 나타낸다. - 사용자가 어떤 프로그램을 실행하면, 태스크가 생성되고 프로그램의 코드가 실행된다. - 리눅스에서는 하나의 프로세스 및 스레드가 각각의 태스크로 구성된다. - 많은 현대 운영체제는 여러개의 태스크를 생성해두고, 각각에 실행 시간을 배분하는 방식으로 태스크를 관리한다. - 여기서 다수의 태스크를 관리하는 것을 멀티 태스킹, 실행시간을 배분하는 것을 스케줄링이라 한다..! - 각 태스크는 커널 메모리에 task_struct구조체로 표현되는데, 여기에 태스크의 여러 정보가 저장되어 있다. - 그 중에는 사용자 신원 및 권한과 관련된 정보도 있어서, 이를 조작하는 것이 커널 익스플로잇의 주된 목표가 되기도 한다. 리눅스 권한 - 리눅스는 운영체제..
- 리눅스 커널 디버깅은 일반적인 ELF 바이너리 디버깅과 크게 다르지 않다. - 다만 커널은 운영체제의 핵심적인 기능을 수행하기 때문에, 커널에 브레이크 포인트를 걸고 디버깅하면 커널이 브포에 도달한 순간 운영체제가 정지하게 된다는 차이점이 존재한다. - 따라서 디버깅의 대상이되는 커널과 디버거를 분리하여 디버깅을 진행해야 한다. 커널 모듈이란? - 커널은 한 번 컴파일 되고, 운영체제로 기능하기 시작하면 이를 수정하기 쉽지 않다. - 그런데 커널의 권한으로 실행되야 하는 많은 장치 드라이버의 경우 빈번하게 개발되고 패치되고 있으며, 커널에 심각한 보안상의 문제가 발생하면 이를 즉각적으로 패치하여야 한다. - 따라서 리눅스 개발진은 부족한 확장성을 개선하기 위해 커널에 필요한 기능을 탈부착할 수 있도록..
- 사용자 모드 프로그램을 익스플로잇 할 때는 익스플로잇이 잘못되어도 해당 프로그램을 재실행 하면 되지만, 커널 익스플로잇의 경우 크래시가 발생하면 운영체제 전체가 정지된다. - 이 경우 시스템을 재부팅해야지만 익스플로잇을 다시 테스트해 볼 수 있다. - 따라서 로컬에서 진행하는 것이 아닌 가상머신을 이용하여 운영체제를 구동시키는 환경을 만들어야 한다. - 가상머신을 사용할 경우 크래시가 발생해도 그 영향이 가상환경 내로 제한되며, 한번에 여러개의 가상 머신을 구동할 수 있기 때문에 익스플로잇을 테스트하기 용이하게 해준다. 그럼 커널을 ELF바이너리 처럼 실행할 수 없는건가? - 커널 이미지를 일반 바이너리처럼 실행하면 Segmentation Fault가 발생하며, 이는 커널 이미지의 베이스 주소가 커널..
Kernel? - 커널이란 중심부라는 뜻으로, 운영체제의 주요기능을 담당하는 시스템 프로그램이다. - 운영체제가 부팅된 순간부터 종료될 때까지 커널은 메모리에 상주하며 하드웨어 제어, 응용 프로그램을 메모리에 로딩하는 등의 기능을 수행한다. 운영모드 - 시스템에는 파일, 장치, 프로세스등 여러가지의 자원이 존재한다. - 커널은 응용 프로그램이 시스템 자원을 요청할 때(시스템 콜) 권한에 따라 접근을 제어한다. - 커널은 메모리를 커널 공간(Kernel Space), 사용자 공간(User Space)로 나눈다. 사용자 모드 - 프로세서가 사용자 모드(User Mode)에 있을 때, 실행중인 프로세스는 사용자 공간에만 접근할 수 있다. - 각 프로세스는 서로 독립적인 메모리 공간을 가지며 서로의 메모리에 접..
Frame Faking - Fake EBP로 더 잘 알려진 이 기법은 가짜 스택 프레임 포인터를 만들어 프로그램의 실행 흐름을 제어하는 기법이다. - 일종의 스택 pivoting이라고 볼 수 있다. - return 주소 뒤로 더이상 덮어쓰지 못하여 일반적인 ROP나 RTL이 불가능할 때 사용할 수 있다. Leave & Ret Instruction - Frame Faking을 공부하기 전에 먼저 알야할 것이 Reave, Ret 명령의 동작과정이다. Leave - Leave 명령은 2개의 명령으로 나누어져 동작한다고 볼 수 있다. - 실제로 2개로 나누어진 명령은 아니고 내부적으로 이런 식으로 동작한다고 보면 된다. 1. 현재 RBP에 저장되어 있는 값을 RSP에 저장. 현재 함수에서 사용한 스택 프레임을 ..
· CTF
현재 SaturnX팀에 들어가있는 상태였는데 굉장히 운이 좋게 연합팀으로 DEFCON 예선에 참여할 수 있게 되었다. 굉장한 고수분들과 오프라인으로 대회를 할 수 있는 정말 엄청난 기회였다. 사실 여기서 벽을 매우 크게 느끼고 방학 때 포너블 공부를 열심히 하기로 마음 먹었다. 정말 아쉽게도 본선은 가지 못했다... 문제 푸는데 거의 도움을 주지 못하고 앉아만 있었던 것 같다. 대회 시간 48시간 중에 4시간 잤다...(앉아있기 장인ㅋㅋㅋ) 그래도 대회가 토요일에 시작했었던 것 같은데 일요일 새벽에 Live CTF를 한 문제 풀었다ㅠㅠ 비록 한문제 그것도 LiveCTF였지만 기분이 정말 좋았다... LiveCTF [Pwn] ptrace-me-maybe 보호기법 fork 함수로 자식 프로세스 생성 자식 프..
kimg00n
'분류 전체보기' 카테고리의 글 목록 (2 Page)