디버깅 시작하기(strace, pwndbg 활용법)

 

디버깅이란 것은 기본적으로 이미 만들어진 어떠한 프로그램이 있을 때

 

역으로 추적해서 어떻게 이러한 프로그램이 동작하는지 분석하는 과정

 

프로그램이 오류가 발생하거나 제대로 작동하지 않을 때 정확히 어떤 부분에서 작동하지 않았는지 파악할 수 있음

 

악성코드와 같은 다른사람이 만든 프로그램을 분석할 때도 많이 활용이 됨

 

또한 이미 잘 만들어진 프로그램들을 해적판으로 만들 때도 이러한 디버깅 과정을 거쳐서 재배포를 할 수 있음

 

칼리리눅스 터미널로 가서

 

apt-get install strace 를 하면 설치가 된다

 

strace -ifx ./echo 를 입력하고 HelloWorld를 쳐주면 여러가지 코드들이 나오게된다

 

write 부분을 보면 코드들이 나오는데 HelloWorld가 앞부분에 자리를 차지하고 그 뒤에는 다 널값이 들어가게 된다

 

왜냐하면 총 63바이트만큼 입력을 받기 때문

 

총 10바이트만큼 입력을 받고 반환값은 rax에 담기게 된다 그 다음 1을 넣어서 write를 실행하게 되고 마지막엔 결과적으로 프로그램이 종료가 된 것

 

다른 유명한 툴로는 gdb가 있는데 이는 직관적이지 않고 어렵기 때문에 pwndbg를 사용할 것임

 

git clone https://github.com/pwndbg/pwndbg 

 

GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy

Exploit Development and Reverse Engineering with GDB Made Easy - GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy

github.com

 

해주면 클론이 되고 cd pwndbg로 폴더 안으로 들어가자

 

./setup.sh 로 설치해준다

 

설치 후 echo 파일이 있는 곳으로 가서 gdb echo 를 해주자

 

이제 실행이 되면 break * _start 해준다

 

이러면 특정한 메모리 주소에 Breakpoint가 걸리게 된다

 

run 을 입력해서 프로그램을 실행할 수 있도록 하자

 

DISASM 이 보이게되는데 이는 리버싱을 하고 있는 것

 

STACK 은 스택 프레임이 어떻게 동작하는지 알려주고 있다

 

초기세팅은 RSP가 특정한 메모리 주소를 가리키고 있고

 

RIP가 어떠한 명령어를 수행할지 알려주고 있다

 

ni를 입력하여 다음 명령을 실행할 수 있다

 

 

'Hacking > 시스템 해킹' 카테고리의 다른 글

공부(10)  (0) 2021.09.22
공부(9)  (0) 2021.09.21
공부(7)  (0) 2021.09.20
공부(6)  (0) 2021.09.20
공부(5)  (0) 2021.09.20

+ Recent posts