absinthe

PEDA 설치하기

System2017. 2. 18. 20:25

1. PEDA

PEDA는 'PEDA - Python Exploit Development Assistance for GDB'으로 BlackHat에서 2012년에 공개되었다. 

기존 GDB의 기능을 확장하여 리눅스 상의 Exploit을 도와준다.


사용요건

1. Linux

2. GDB 7.x (하지만 GDB 7.7버전에서는 동작하지 않으니 버전을 낮추어야 한다.)

3. Python 2.6 이상 (3.x는 안된다.)

4. Utilities: nasm, readelf, objdump



2. 설치

2-1. wget 명령어로 압축파일을 받아준다.

# wget http://ropshell.com/peda/peda.tar.gz




2-2. 압축을 풀어준다.

$ tar zxvf peda.tar.gz




2-3. PEDA를 GDB에 연동시킨다.

$ echo “source ~/peda/peda.py” >> ~/.gdbinit



이제 .gdbinit파일이 존재하는 위치에서 GDB를 실행하면 PEDA가 실행되어야 한다.

하지만 PEDA가 실행이 되지 않을 때가 있다.



3. 실행이 안될 시

GDB 7.7버전에서는 PEDA가 실행이 되지 않는다. GDB 7.7이 Python 3을 사용하기 때문이다.



3-1. synaptic으로 GDB 버전 낮추기

$ apt-get install synaptic



여기서 왼쪽 위의 Settings - Repositories - Other Software에서 

deb http://kr.archive.ubuntu.com/ubuntu/ precise main 를 추가해 준다.



이후 창읃 닫고 Reload를 눌러준다.


오른쪽 위의 검색창에서 GDB를 검색해 선택한 후 



Package - Force Version을 누른 후 7.4버전으로 바꾸어준다.



선택한 후 Apply를 눌러 적용해 준다.

적용 후 설치된 버전이 7.4로 바뀐 것을 확인 할 수 있다.

이후 Package - Lock Version으로 버전을 고정해도 되고 안해도 된다.



다시 GDB를 실행해보면 PEDA가 동작하는 것을 볼 수 있다.


* 만약 Linux의 Python 버전이 2.6.x 미만, 3이상이면 Python을 맞는 버전으로 재설치를 해준다.




참고

https://pypi.python.org/pypi/peda/1.0

- http://kblab.tistory.com/220    //GDB 버전

- https://hexa-unist.github.io/2015/02/25/PEDA-Introduction-Installation/    //Python 버전



'System' 카테고리의 다른 글

linux 메모리 보호 기법 해제(우분투)  (0) 2015.08.01

메모리 보호 기법 해제


스택 실행권한 해제(Non-executable stack)

cat /proc/self/maps 에서 확인

실행권한을 주기 위해서 컴파일 시 -z execstack 옵션 추가

cat /proc/PID/maps로 왁인


ASLR(Address Space Layout Randomization/랜덤 스택)

ldd명령어로 라이브러리 베이스 주소 확인

sysctl -w kernel.randomize_va_space=0 명령어 (0이 해제)

stack만 랜덤화하기 위해서

sysctl -w kernel.randomize_va_space=1

stack/heap

sysctl -w kernel.randomize_va_space=2


echo 0 > /proc/sys/kernel/randomize_va_space -> 안될 시 ulimit -s unlimited



32bit 컴파일 : gcc -o 파일 명 파일 명 -m32


스택 실행권한 해제

sysctl-w kernel.exec-shield=0 (반대는 1)


execstack -s 파일 명: nx-bit해제



-fno-builtin : 표준 라이브러리와 링크되지 말고 단독으로 링크하라는 의미


STACK GUARD

해제 컴파일 옵션

-fno-stack-protector

dummy값 고정

-mpreferred-stack-boundary=2


/etc/sysctl.conf에 저장되어있음




환경 설정 

자동 설정 : 커널 2.6 부터 제공 (Default 값은 1)

# sysctl -w kernel.randomize_va_space=0 (해제)

# sysctl -w kernel.randomize_va_space=1 (랜덤 스택 & 라이브러리)

# sysctl -w kernel.randomize_va_space=2 (랜럼 스택 & 라이브러리 & 힙)

# sysctl -w kernel.exec-shield=0 (스택 실행권한 해제)

# sysctl -w kernel.exec-shield=1 (스택 실행권한 설정)


시스템 시작할때 자동으로 설정하기

위에 설정 명령을 /etc/sysctl.conf 안에 쓴 후 reboot




-출처 http://jjoon.net/tc/192?category=0
-출처 http://egloos.zum.com/studyfoss/v/5279959


'System' 카테고리의 다른 글

PEDA 설치하기  (0) 2017.02.18