Wargame/pwn.college

    Intercepting Communication - payload

    보호되어 있는 글입니다.

    Building a Web Server - payload

    보호되어 있는 글입니다.

    Talking web - payload

    보호되어 있는 글입니다.

    Program interaction - 1~142

    대략 2주에 걸쳐서 다 푼 것 같다. 전반적으로 리눅스 기본 명령어 사용법으로부터 시작하여 bash, shellscript, python을 토대로한 기초적인 문법을 공부할 수 있는 문제로 구성되어있다. 나중에는 file description의 사용법에 대한 문제가 나오는데, stdin / out을 어떻게 조작할 수 있는지에 대해 배울 수 있다. file description 문제는 예를 들어 bash script로 stderr인 fd 3을 통해 값을 받는다던지 하는 문제인데, 기본 stdin fd인 1을 어떻게 3으로 바꿀 것인가에 대한 고민의 연속인 셈이다. 다만, 정해진 방법으로 꼭 풀어야하는 것은 아니니 이를 잘 활용하면 된다. (ex. shellscript로 문제 프로그램을 실행해야하는 조건이 있..

    kernel security -level 10~12

    1. intro 2. code 및 분석 2.1. code 생략 2.2. 분석 level 10 : level9 + ASLR이다. level 11,12 : 유저 영역에 플래그를 읽어들인 뒤 플래그 파일을 삭제하고, 커널 영역에서 쉘코드를 실행한다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 생략 3.2. 공격 준비 level 9와 10의 페이로드가 동일하다. 다만, 주소를 어떻게 설정하느냐인데, 가상 머신을 실행할 때 커널 함수 base address가 매번 변경되지만, 처음 설정된 주소 그대로 유지되기 때문에 dmesg를 통해 적절히 레지스터에서 주소를 가져와 오프셋을 계산하면 된다. 물론 일반적인 상황은 아니지만... level 11과 12의 페이로드가 동일하다. 둘 다 플래그를 삭제해버리지만, 유..

    kernel security level9

    1. intro 2. code 및 분석 2.1. code 생략 2.2. 분석 device_write로 유저 영역에서 값을 받아 0x108 위치를 참조하여 call 한다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 임의 함수 실행 가능. 3.2. 공격 준비 임의 함수를 실행 가능하기에 결국은 어떤 함수를 실행하는지가 포인트이다. 커널에서도 execve나 system 함수와 같이 명령어를 실행해주는 함수가 있는데, 그것이 run_cmd 이다. 마찬가지로 rdi에 해당 함수의 인자를 담고있는 주소를 넣고 run_cmd 함수를 실행해주면 된다. 4. exploit 생략

    pwn.college - kernel security payload

    보호되어 있는 글입니다.

    kernel security level8

    1. intro 2. code 및 분석 2.1. code 생략 2.2. 분석 특정 바이너리에서 모듈을 load하는데, 이 때 seccomp가 걸려있어 write 함수 이외에는 사용할 수 없게된다. 다만, 모듈 내에서 바이너리로부터 전달받은 쉘코드를 실행해준다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 seccomp bypass 3.2. 공격 준비 개인적으로 내가 이걸 풀었다는게 레전드라고 생각한다. 물론 힌트를 다소 참고하긴 했지만... 유저 영역에서의 seccomp는 결국 커널 영역의 특정 주소에 실행 가능 (또는 불가) 한 함수에 따라 bit setting을 해두고, 이를 참조하며 실행 여부를 판단한다. https://docs.google.com/presentation/d/1YMlOERClX6..

    kernel security level1~7

    1. intro 2. code 및 분석 2.1. code 생략 2.2. 분석 기초적인 kernel exploit 기법에 대해서 배울 수 있다. 3. 취약점 확인 및 공격 준비 3.1. 취약점 생략 3.2. 공격 준비 level 1~5까지는 커널 모듈에서 함수 호출 시 특정 값과 비교하며 권한 상승을 일으켜준다. level6~7에서는 모듈에서 쉘코드를 실행시켜주기에 shellcode를 작성해야하는데, 권한 상승을 일으켜주는 부분만 구현하면 쉽게 풀 수 있다. level8부터 시작이나 마찬가지인데, seccomp를 통해 실행 가능한 함수를 제한한다. 즉 prepare_kernel_cred와 같은 함수 사용이 불가능해지며 이를 어떻게 우회할 것인가가 주된 사항이다. 4. exploit 생략.

    Kernel security - 명령어 사용법

    서론 사실 커널 디버깅을 위해서는 사전 준비가 다소 필요하다. 하지만 pwn.college에서는 이를 위해 대부분의 사항을 준비해두어서 명령어 하나로 모두 처리할 수 있다. 처음에 다소 헤멧기에 정리해둔다. 모듈 디버깅 소스파일이 제공되지 않기에 커널 모듈을 직접 ida로 열어서 확인해야한다. 기본 명령어 기본적으로 vm 명령을 통해 모든 작업이 가능하다. hacker@vm_kernel-security-level-1-0:~$ vm usage: vm [-h] [--kaslr] [--no-kaslr] {connect,exec,start,stop,restart,logs,debug,build} ... vm: error: the following arguments are required: command virtu..