Be myself :: 여러 보호기법

달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

여러 보호기법

Exploit 2014. 7. 11. 20:21

여러가지 보호 기법

윈도우에서 익스플로잇을 막기 위한 여러 가지 보호 기법들이 존재한다. 그 중 SafeSEH와 DEP, stack cookie 에 관해 살펴보고 관련 우회기법을 다룬다.

1 스택쿠키 (/GS보호)
리눅스에서 스택가드(canary)의 개념과 일맥상통한다. [스택쿠키][ebp][eip]이런 식으로 존재하며 함수가 리턴하기 전에 스택쿠키가 변조되었는지 확인하는 함수를 호출한다.
GS보호의 다른 기능은 지역변수들을 재배치한다. 그래서 오버플로가 발생하더라도 지역변수들은 변조되지 않는다.

우회방법: 카나리가 변조되어서 프로그램이 종료되지 않는가? 그렇다면 스택쿠키의 값을 알아내어 그 값을 바뀌게만 하지 않으면 된다. 또는 예외핸들러 구조체를 제어할 수 있다면 SEH오버플로를 일으켜서 스택쿠키가 변조되었는지 프로그램이 확인하기 전에 예외를 일으키면, 우회가 가능하다. 이 부분을 막기 위해 SafeSEH나 DEP같은 보호기법들이 나오게 된다.

2. SafeSEH
SafeSEH옵션으로 컴파일된 모듈은 불행히도 SEH핸들러로 사용이 불가능하다. 다만, SEH핸들러 부분의 주소값이 스택영역에 있지 않고, SafeSEH옵션이 안된 모듈을 사용한다면 가젯으로 이용되기에 충분하다. 즉, 외부(OS)DLL을 이용하는 것이다.

3. SEHOP
좀더 찾아 볼 것.

4. DEP
스택영역에서 실행권한을 없애서 쉘코드를 스택에서 직접 실행할 수가 없게 되었다. 따라서 로드된 모듈들의 가젯들을 모아 쉘코드를 실행시키는 효과를 내서 우회한다.

'Exploit' 카테고리의 다른 글

SEH overwrite 실습  (0) 2014.07.16
C++에서 VTable  (0) 2014.07.12
SEH overwriting  (0) 2014.07.10
윈도우 BOF  (2) 2014.05.28
간단한 Shellcode 만들기  (0) 2014.05.05
Posted by flack3r
|