Transcript Pwntools

Revers3r(임재혁)
Contents
 1. About me
 2. Pwntools에 대해…
 3. Pwntools 설치
 4. Pwntools의 다양한 기능들
 5. Pwntools를 이용한 익스플로잇 몇 가지
About me
-취미로 컴퓨터를 하는 사람이다.
… 장난이고 버그헌팅 공부하는 사람입니다.
이름 : revers3r(임재혁)
직업 : 백수
나이 : 올해 20세
Pwntools ?
 익스플로잇의 편의성을 위해서 만들어진 툴
 Gallopsled 팀에서 개발
 http://pwntools.readthedocs.org/en/latest/intro.html
Pwntools? Why?
 Plt, got.. Find.. Find.. Find….
Pwntools - Install
 자세한 내용은 pwntools의 documentation 페이지에




나와있다.
1. apt-get install python2.7 python2.7-dev python-pip
2. pip install pwntools
여기서, 이것만 설치할 경우에 ROP 클래스를 호출할
때 disasm 에러 발생!!
3. apt-get install libcapstone-dev
Pwntools - Connection
 기본적인 리모트 연결 기능
 nc, ssh.. -> remote(), ssh()
 리모트 호스트 연결의 편의성을 위해..
매우 짧게 줄이는 것이 가능..
How to use ssh()?
 ssh() : pwntools에서 제공해주는 ssh 연결 함수
 ssh(user, host, port, password) 식으로 구성..
 run() 함수 사용으로 바이너리 실행 가능..
How to use remote()?
 remote() : 서비스 등.. Nc로 접근해야하는 경우.
 recvuntil() 같은 함수들도 전부 제공해주는편.
ELF()
 ELF() : pwntools에서 바이너리를 인식시켜 바이너리
의 정보 등을 가져오기 위한 기능
 ELF에 바이너리를 인식시킴으로 plt, got같은 elf 정보
등을 획득할 수 있다.
plt,got 뿐만 아니라.
 다양한 바이너리의 정보를 구할 수 있다!
ROP() - 1
 ROP (Return Oriented Programming)
= 메모리 미티게이션을 우회하는 기술
- 이를 수행하기 위해서 필요한 요소
= Gadget, plt, got …
ROP() - 2
 Pwntools의 가장 메인 기능 중 하나인 ROP 기능.
 rop.read(0, data, 4) : 이런 형태로 사용 가능 (편리)
 ROP 페이로드를 작성할 때의 시간을 최대한 줄일 수
있음.
 PLT 주소들을 직접 구할 필요가 없음.
ROP() - 3
 지금까지는.. plt.. got.. bss.. Gadget…
asm()
 pwntools의 대표적인 어셈블, 디스어셈블 기능.
 asm(), disasm() 이 두가지로 이루어져 있음.
 capstone과 비슷한 역할..
asm() 활용
 ShellCode를 작성할 때 유용하다.
※ ShellCode : 쉘을 획득하기 위한 어셈블리 코드
shellcraft
 ROP 클래스와 함께 pwntools의 중요한 기능 중 하나
 다양한 쉘코드를 지원함. (i386, amd64, arm …)
shellcraft example
Shellcode test
 테스트로 i386.linux.sh()를 호출해보았다.
Example )
 예제 1 : ropasaurusrex (Plaid CTF 2013)
 예제 2 : echo1 ( pwnable.kr ) – 제외
 예제 3 : nuclear (CodeGate 2014 Junior)
Example : ropasaurusrex
 취약점 : 간단한 Overflow
 하지만 Gadget을 일일히 찾기는 귀찮은 부분..
Exploit : ropasaurusrex
Demo : ropasaurusrex
Example : nuclear
 CodeGate에서 출제된 ROP 문제.
 취약점 – 심플한 Overflow
Exploit : nuclear
 구해야하는 요소 : plt, got 등..
Exploit : nuclear
 페이로드를 저렇게 구성도 가능하지만..
 이렇게 ROP 클래스를 사용해서도 페이로드조각을 구
성 가능함.
들어주셔서 감사합니다.