ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.