0x04 pwnable/윈도우즈 어플리케이션 취약점 분석(27)
-
DEP 그리고 ROP (AKA 준나 어렵네)
DEP : Data Execution Prevention 힙 이나 스택과 같은 데이터 영역에서 실행을 금지하는 기법 소프트웨어 기반 : safeSEH 하드웨어 기반 : NX/XD NX : AMD에 있는 실행 방지 페이지 보호 XD : INTEL에 있는 실행 불가능 비트 인텔 보호 정책 설정 레벨은 4가지다. ----------------------------------------------------------------------------- AlwaysOn : 모든 프로세스를 DEP에 의해 보호 => VISTA는 이것땜에 망했다. OptOut : 예외 설정 외 프로세스는 DEP에 의해 보호 (화이트리스트기반인듯) 예외설정에 포함되지 않는 착한애들(OutBoundary)만 DEP에 의해 보호 OptIn..
2018.01.11 -
SEH Handler 우회 공부
SafeSEH : SafeSEH는 SEH 기반 공격 시도를 실시간으로 차단해준다. /safeSEH 컴파일러 스위치를 모든 실행 가능한 모듈에 적용할 수 있다. 스택을 보호하는 대신 예외 핸들러 프레임 체인이 보호되는데, 만약 SEH 체인이 변조되면 애플리케이션은 감염된 핸들러로 점프하지 않고, 종료된다. SafeSEH는 예외 핸들링 체인이 실제 핸들러로 이동하기 전에 변조 여부를 검사한다. 버그 바운티 팁이라고도 볼 수 있겠다. 취약한 애플리케이션이 SafeSEH로 컴파일 되지 않았거나 로드 된 모듈들 중 하나 이상이 SafeSEH로 컴파일 되어 있지 않은 경우, 해당 모듈 또는 애플리케이션 "DLL 파일"에서 POP/POP/RET 주소를 가져온다. Garget : pop pop ret , call eb..
2018.01.09 -
SEH Handler 공부
SafeSEH : SafeSEH는 SEH 기반 공격 시도를 실시간으로 차단해준다. /safeSEH 컴파일러 스위치를 모든 실행 가능한 모듈에 적용할 수 있다. 스택을 보호하는 대신 예외 핸들러 프레임 체인이 보호되는데, 만약 SEH 체인이 변조되면 애플리케이션은 감염된 핸들러로 점프하지 않고, 종료된다. SafeSEH는 예외 핸들링 체인이 실제 핸들러로 이동하기 전에 변조 여부를 검사한다. 버그 바운티 팁이라고도 볼 수 있겠다. 취약한 애플리케이션이 SafeSEH로 컴파일 되지 않았거나 로드 된 모듈들 중 하나 이상이 SafeSEH로 컴파일 되어 있지 않은 경우, 해당 모듈 또는 애플리케이션 "DLL 파일"에서 POP/POP/RET 주소를 가져온다. Garget : pop pop ret , call eb..
2018.01.09 -
SEH 기초공부 1
보호되어 있는 글입니다.
2018.01.09 -
GS 기초 공부 1
GS Guard Stack : Stack의 저장한 RET가 변조 여부를 감지하기 위해 임의의 값을 Stack 보다 윗 부분에 삽입 => 그 임의의 값이 덮여지게 되면 예외처리 루틴을 통해 프로그램이 즉시 종료가 된다. GS Cookie라고도 한다. Visual Studio에서 GS 활성화 하면 다음과 같은 어셈을 볼 수 있다. 00401002 in al,dx 00401003 sub esp,80h 00401009 mov eax,dword ptr [___security_cookie (403000h)] 0040100E xor eax,ebp 00401010 mov dword ptr [ebp-4],eax 예외처리 루틴이 Stack에 존재하는 경우가 SEH이다. 우리는 SEH를 공략해서 우회를 시도한다. Struc..
2018.01.09 -
BOF 기초공부 4
실제 상용프로그램이었던 프로그램을 이용해서 BOF 기초를 익혀보자. 목표 : 계산기 실행 #! Python import struct #bufbuf = ""buf += "\x89\xe2\xda\xc3\xd9\x72\xf4\x5e\x56\x59\x49\x49\x49"buf += "\x49\x49\x49\x49\x49\x49\x49\x43\x43\x43\x43\x43\x43"buf += "\x37\x51\x5a\x6a\x41\x58\x50\x30\x41\x30\x41\x6b\x41"buf += "\x41\x51\x32\x41\x42\x32\x42\x42\x30\x42\x42\x41\x42"buf += "\x58\x50\x38\x41\x42\x75\x4a\x49\x4f\x4e\x68\x58\x49"buf += ..
2018.01.09