간단한 Rootkit을 만들었다.
특수 코드인 1018을 입력으로 넣으면 root 권한을 넘겨주는 rootkit을 만들것이다.
(Prototype)
디바이스와 입출력을 하기위해 open, read, write 함수를 정의해준다.
open과 read는 여기서 사용하지 않을 것이므로 모양만 만들어준다.
여기서 write함수를 채워준다.
(write 함수)
입력을 받아서 첫 4자리를 비교한다. 첫 4자리가 1018이라면
root권한인 id를 0으로 만들어준다.
Makefile을 만든다.
(Makefile)
로딩한 후, chmod를 이용하여 /dev 아래에 있는 해당 디바이스를 666으로 만들어준다.
그 이유는 루트 권한이 아닌 일반계정에서 실행할 수 있도록 하기 위해서이다.
(권한 설정)
실행하기 전 권한을 확인한 모습이다.
(권한)
그 후 /dev 아래에 만들어진 normaltic_door 가 있다.
이 디바이스에 1018이라고 입력을 넣는다.
(매직값 입력)
위에서 작성한 write에 의해서 사용자 권한을 0으로 만들어준다.
(root 권한 획득)
간단한 rootkit을 만들어보면서
rootkit의 원리를 이해할 수 있었다.
유저 영역이 아닌, 커널 영역에서 root권한으로 권한상승시킨다는 개념이 이렇게
커널 영역에서 이루어지는 것을 확인할 수 있었다.
* 참조
https://0x00sec.org/t/kernel-rootkits-getting-your-hands-dirty/1485
'Hacking > System Hacking' 카테고리의 다른 글
(RootKit) LKM(Loadable Kernel Module) (0) | 2018.04.03 |
---|---|
malloc에서 사용하는 syscall (0) | 2018.02.21 |
System Hacking - jmp (반복문) (0) | 2017.04.19 |
System Hacking - jmp (분기문) (0) | 2017.04.18 |
System Hacking - 어셈블리어(사칙연산) (0) | 2017.04.14 |