본문 바로가기

system

[protostar]배운 부분 정리

반응형

1. return2lib

- plt (procedure linkage table): 외부 라이브러리에서 가져다 쓸 경우 plt를 참조한다.

      ex)0x800808ab puts@plt

- got (global offset table): 함수들의 주소를 담고 있는 테이블. 라이브러리에서 함수를 호출할 때 plt가 got를 참조한다.

 

=>RTL(Return to Library)

: 공유 라이브러리에 있는 함수의 주소를 이용해서 바이너리에 존재하지 않는 함수를 사용할 수 있다.

 

+
DEP (Data Execution Prevention):  데이터 실행 방지로 스택이나 힙에서의 쉘 코드 실행을 막아주는 메모리 보호 기법.
NX bit (Never Execute Bit): NX 특성으로 지정된 모든 메모리 구역은 데이터 저장을 위해서만 사용되며, 
                                           프로세서 명령어가 실행되지 않도록 만들어 준다.

ASLR (Address Space Layout Randomization): 동적 라이브러리의 주소를 프로그램 실행마다 랜덤하게 매핑

 

2. FSB(Format String Bug)

: 포맷 스트링을 이용한 공격 기법으로 printf() 함수의 취약점을 이용한다.

 

3. ROP(Return Oriented Programming)

: 실행 중인 프로그램 코드 안에 존재하는 서브루틴이 return 명령어에 닿기 전에
  선별된 기계 명령어를 간접적으로 실행시키기 위해, 콜 스택의 제어를 통제하는 기술

  - 사용자 제어 메모리 공간에서 명령어 수행을 방지하는 기술(DEP, ASLR)들을 우회하는 코드 인젝션과 같은 기술을 사용하지 않아도 우회       가 가능하다.

 

- ROP: 프로그램을 마음대로 조종할 수 있는 취약점을 발견했지만 코드를 실행 가능한 메모리 영역(excutable memory)에 올릴 수 있는 확실한 방법이 없을 때 사용

 

+ ROP Gadget: ret로 끝나는 연속된 명령어들을 의미. -> 다음 리턴 주소를 가리키는 데에 사용했던 인자들을 pop하고 esp를 다음 리턴
  주소가 있는 스택으로 맞춰, 리턴하기 위해 gadget을 사용한다.

+ .bss section: 초기화되지 않은 전역변수들을 위한 곳 일반적으로 C에서는 모든 변수들이 0으로 초기화된다.
  이 영역은 주소값이 변하지 않는다.

+ off-limit Kernel : OS의 시스템 코드가 로드되는 부분으로, 건들 수 없다.
+ Stack : 프로그램에서 사용되는 각종 환경변수, 파라미터, 리턴값, 지역변수 등의 정보를 담고 있다.
+ libc : 프로그램이 내부에서 사용하는 라이브러리 함수들과 관련된 공유라이브러리 파일이 적재되는 영역

+ Heap : 동적 할당되는 변수의 데이터가 위치하는 영역

+ BSS, Data : 프로그램에서 사용하는 전역변수, 정적변수 등 각종 변수들이 실제로 위치하는 메모리 영역. 변수가 초기화되면 데이터영역, 초기화되지 않으면 bss영역에 있다.

+ Code : 실제 실행되는 기계어 명령어들, 어셈블리 코드가 쌓이는 곳이다. 프로그램이 실행되면 코드영역에 있는 어셈블리 코드가 한줄씩 해석되며 실행 사용자가 커널영역에 접근하지 못하도록 할당해 둔 공간이다.

 

4. Use After Free:

동적할당(Dynamic memory allocated) 된 heap을 free하고 다시 재사용(Dynamic memory reuse) 할 때에 취약점이 발생할 수 있다.

 

5. DFB(Double Free Bug)

malloc()으로 동적메모리를 구성하는 것은 heap chunk라는 자료구조를 하나 선언하는 것과 같다. chunk를 free할 때 일어나는 문제이다. 여기선 unlink가 필수적이다. 만약 공격자가 잘 컨트롤 할 수 있다면 핵심 데이터를 유출하거나(information leak), 함수 포인터 등을 덮어씌워서 공격자가 의도한 코드를 실행할 수 도 있다.(code execution)

 

 

 

참고 링크

shayete.tistory.com/category/Let%27s%20Study/Basic%20System%20Hacking%20Technique

 

'Let's Study/Basic System Hacking Technique' 카테고리의 글 목록

 

shayete.tistory.com

https://nroses-taek.tistory.com/161

반응형

'system' 카테고리의 다른 글

[hackerschool FTZ] trainer1~5  (0) 2021.01.10
[protostar]net1  (0) 2020.11.22
[Protostar]Net 0  (0) 2020.11.17
[protostar]heap3.c  (0) 2020.11.17
[protostar]heap2.c  (0) 2020.11.12