완료됨
PIE와 ASLR

안녕하세요 PIE기법이 ASLR에서 코드영역까지 강화해서 주소를 랜덤화 시키는 기술이라고 배웠습니다.
그렇다면은 ASLR에서 다른 스택 힙등의 영역을 랜덤화 할때 알파값을 더해서 주소를 랜덤화 시키는걸로 알고있는데 ASLR과 PIE를 동시 적용하면은 코드 영역과 다른 영역들의 알파값이 동일한건가요??

PIE와 ASLR 동시적용된 워게임을 풀다가 이해가 안가서 질문 드립니다.
만약 둘이 같은 알파값이라면 둘 중 하나의 bypass기법으로만 하면 되고
둘이 다른 알파값이라면 rop등을 사용해 aslr알파값을 알아내고 그다음 pie값을 알아내고 뭐 이렇게 해야하나요?

#시스템해킹 #배경지식
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
avatar
5un9hun
세계수

미숙하지만 설명드립니다.

ASLR 보호기법은 서버 즉, 바이너리를 실행시키는 운영체제내에서 제공하는 기능이고, PIE 보호기법은 바이너리 자체에서 적용되는 기술입니다.

ASLR 보호기법은 스택, 힙 등의 영역이 실행시켰을 때마다 변합니다. 하지만 code, bss, data 섹션등의 주소는 고정적인 주소를 가질 수 있습니다.

반면에 PIE 보호기법은 code, bss, data 섹션 등의 주소가 고정되어 있지 않고, offset 으로만 존재하는 것을 볼 수 있습니다. 따라서 바이너리를 실행시킬 때, random한 base 주소와 offset을 더한 값으로 결정되는 것입니다. 해당 섹션들은 ASLR이 걸려있어도 PIE 보호기법이 걸려있지 않다면 고정된 주소를 가집니다.

만약 ASLR이 걸려있지 않다면 PIE 기법이 적용되어있어도 주소가 고정이 됩니다. 따라서 사실상 PIE기법이 의미를 상실하게됩니다.

다음 실습 사진으로 결과를 확인해볼 수 있습니다.

ASLR(X), PIE(X)
image.png

ASLR(X), PIE(O)
image.png

ASLR(O), PIE(X)
image.png

ASLR(O), PIE(O)
image.png

그래서 마지막에 주신 질문처럼 만약 스택값과 PIE base 값을 알아내야 할 경우에는 스택의 주소와, PIE값의 주소를 따로 구해주셔야 합니다.

2024.04.08. 13:10