Initialized Data
Discardable // 버려도 된다! 이 섹션은 지워버려도 됩니다.
(no align
specified)
Read Only
입니다.
또 다시 다른 부분을 찾도록 하겠습니다.
PE 구조에서 IMAGE_FILE_HEADER 에서 Characteristics 부분이 또 달랐습니다.
옵션을 적용시킨 파일 입니다. 옵션 적용 안시킨 파일보다 값이 하나 더 있었습니다.
저 특징을 봐보겠습니다.
Relocation info stripped from file.
파일로부터 재배치 정보가 지워진다.. 라는 뜻입니다.
이것도 아닌거 같네요. 다른 부분을 또 찾아보겠습니다.
IMAGE_OPTIONAL_HEADER에서 DLLCharacteristics 부분이 또한 달랐습니다.
빨간색 네모쳐진 부분이 또 하나 있었습니다.
뭐하는 부분인지 인터넷에서 찾아보았습니다. 그 결과 많은 정보를 얻을 수 있었습니다.
몰랐던 사실인데 이런게 ASLR 이라고 하는군요. 아무튼 저 부분을 클리어 해주면 적용이 안된다고 나와있습니다.
중요한 것은 저 부분을 클리어 해도 힙과 스택은 여전히 랜덤하다고 나오는 군요.
일단은 Imagebase주소만 고정되나 봅니다.
한번 해보도록 하겠습니다.
위와 같이 저 부분을 00으로 수정시켜주고 해당 파일을 실행해보도록 하겠습니다.
ASLR이 적용이 안되었네요.
대부분 상용프로그램을 봐보니 ASLR이 적용이 안되어 있었습니다. 비록 이렇게 우회가 되긴 하지만
VS에서 옵션을 주어서 컴파일 하는 습관을 들이면 좋겠습니다. 요샌 Windows7을 많이 사용하니까요.
그러면 왜 저러한 옵션을 주어야 하는지...에 대한것을 말해보라면 보통 쉘코드를 만들 때 주소를 직접 넣어서 공격을 합니다. 하지만 저렇게 주소가 랜덤하면 공격 성공 확율이 0%로 되겠죠. 주소가 틀리니까요. 주소만 틀린 것이 아니라 스택 주소도 다릅니다. 그래서 공격하기 더 힘든 이유가 보통 쉘코드로 공격할 때 스택에 값을 넣어서 오버플로우를 시켜 공격을 하니까 말이죠. 이미 리눅스는 랜덤 스택을 적용시킨지 오래 됬고 스택에서 코드 실행하는 것 조차 전부 막아놨습니다. 뭐 바이러스 분석을 한다고 했을 때 ASLR이 적용되어 있으면 짜증이 날 탠데요. 그럴 땐 역시 이렇게 우회를 해주고 분석을 하면 될꺼같습니다.
위에서 이렇게 우회하면 Imagebase주소는 고정되지만 힙과 스택은 여전히 랜덤하다고 나왔는데요. 제가 실험해본 결과
스택 주소도 고정이 되는거 같더군요. 궁금하신 분들은 직접 해보세요 ^^ 제가 실험한 환경은 XP, 7 이라서 Vista에서는 어떻게 될련지 확실히는 모르겠네요. ㅜ ㅜ
'My Study > Reversing' 카테고리의 다른 글
WinDbg 어플리케이션 크래쉬 발생 시 자동으로 붙게하기 (0) | 2010.04.20 |
---|---|
피카츄배구 스피드업 ( Vista, Win 7 호환 ) (0) | 2010.04.19 |
IDAStealth 플러그인 (0) | 2010.04.16 |
심볼(Symbol)과 맵(Map) 파일 (3) | 2010.04.16 |
모달 윈도우 무력화 (0) | 2010.04.15 |