-
kext(kernel extension)Hack/Pwnable 2015. 12. 7. 09:34
맥에서 일종의 드라이버로, 커널의 확장자라고도 할수있다.
기본적으로 kext의 위치는 /System/Library/Extensions/ 경로에 존재한다.
HackCat:~ Songsangjun$ kextstat
Index Refs Address Size Wired Name (Version) UUID <Linked Against>
1 91 0xffffff7f80a43000 0x9c80 0x9c80 com.apple.kpi.bsd (15.0.0) 684DCCA5-DA4D-414C-A013-DCBE7EBCE009
2 8 0xffffff7f80dad000 0x3890 0x3890 com.apple.kpi.dsep (15.0.0) 4493C0E7-9011-4586-A9C1-D507610BFC50
3 110 0xffffff7f80a04000 0x210a0 0x210a0 com.apple.kpi.iokit (15.0.0) 0B5CF638-D9CF-44F6-8F34-E49845599B14
kext의 status 를 보려면 kextstat이라는 명령을 이용하면된다.
현재 로딩되있는 드라이버를 리스트로 뽑아 출력해주는 명령어이다.
저보다 훨씬많지만 생략해서 3개만 출력해두었다.
우리가 경로를 찾고싶다면 아래와같은 명령을 이용하면된다.
HackCat:~ Songsangjun$ kextfind -bundle-id -substring "msdos"
/System/Library/Extensions/msdosfs.kext
HackCat:~ Songsangjun$
msdos 파일시스템에대해서 알아보고싶으면 해당명령을이용해서 그 경로를 찾으면된다.
kext 파일은 위에서 설명했듯이 /System/Library/Extensions 경로에 존재한다.
HackCat:~ Songsangjun$ sudo kextload /System/Library/Extensions/msdosfs.kext
Password:
HackCat:~ Songsangjun$ kextstat
178 0 0xffffff7f82e16000 0xf000 0xf000 com.apple.filesystems.msdosfs (1.10) D4BCC813-35FF-3FA3-8EAC-EF0C93633EB0 <7 5 4 1>
우리가 직접 driver를 로딩시킬수있는데 kextload 명령어를 이용하면된다.
명령을 적용하고나서, kextstat 명령어를 이용해서 확인해보면 정상적으로 로딩되어있는것을 알수있다.
로딩되어있는 라이브러리를 언로딩하기위해서는 아래와같은명령을 사용하면된다.
HackCat:~ Songsangjun$ sudo kextunload com.apple.filesystems.msdosfs
그럼 정상적으로 언로딩이된다.
'Hack > Pwnable' 카테고리의 다른 글
Mac ASLR (0) 2015.12.07 otool (object tool) (0) 2015.12.07 Fake EBP (0) 2015.12.04 FPO(Frame Pointer Overwrite] (0) 2015.12.02 Sigreturn Oriented Programming(SROP) (0) 2015.11.24