본문 바로가기

4-9. 2020-2 심화 스터디/웹 퍼저

[2020.11.14] pydbg를 이용한 퍼저 구현

11월 2주 Web Fuzzer팀은 간단한 퍼저 구현을 목표로 하여 활동시간에 각자 구현한 퍼저에 대해 리뷰해보는 시간을 가지기로 했다. 

<목표>

 간단하게 짜여진 퍼저 코드를 구현해보는 것을 목표로 하였다. 해당 코드를 간단히 분석해보면, 접근위반 예외가 발생할 시 오버플로우 발생으로 인지하고 detect_overflow 함수로 이동한다. 이때, 첫번째 발생한 예외는 운영체제에서 발생한 예외이기 때문에 건너뛰고 EIP 값 출력하는 프로세스로 진행된다. 

<pydbg 설치과정>

 

1. pydbg 설치

paimei 설치 후에 압축을 풀어 python 경로에 pydbg를 설치(자동으로 경로가 지정되기 때문에 그대로 설치 진행, 설치하려는 버전이 뜨지 않을 경우 exe 파일로 설치하고 파일을 직접 해당 경로로 복사하는 방법)

 

2. pydasm.pyd 파일 설치 후 pydbg 파일 내부로 이동

 

3. Python27\lib\ctypes\__init__.py에 다음 코드 추가

 

 

<설치과정에서 발생한 오류>

 

● Windows10에 설치

  > git clone https://github.com/Fitblip/pydbg pydbg 설치

   : git clone으로 설치를 하면 자동으로 python 경로에 pydbg가 설치되어 해당 방법을 사용했다. 이 방법으로 import한 결과, from pydbg import *는 정상적으로 수행됐지만 from pydbg.defines import * 실행 시 모듈이 없다는 오류가 발생했다. python 파일 내부의 모듈을 확인해보아도 있었음에도 없다는 오류가 발생하여 검색해본 결과, 파이썬 구버전 설치를 권고하여 파이썬 버전 재설치를 수행했다.

 

● python 2.7.3 버전 재설치 후 pydbg 재설치

: 코드 라인에 오류가 있다고 뜨는데, 추가해야하는 부분 외에는 건들지 않았기 때문에 원인을 알 수 없었다. 찾아본 결과, 64bit에서는 동작하지 않을 수 있다고 하여 가상머신으로 windows xp를 설치해보기로 했다.

 

● Windows XP Professional 설치

xp버전의 경우 네트워크 오류 발생으로 작동이 되지 않았다.

 

 

● 최종 실행

① pydbg 64 버전을 python 2.7에 설치

: pydbg64 버전이 pc에 설치되어있어 python 2.7버전의 파일에 넣었더니, pydbg가 정상적으로 import 되었다. 하지만 dbg.attach(int(sys.argv[1])) 부분에서 에러가 발생 -> argv[1]의 인덱스가 맞지 않다는 오류(아직 해결x)

 

 

② Anaconda를 사용하여 가상환경에서 실행

: 예제 코드와 실습환경의 버전 문제로 실행되지 않는 오류가 발견되었다. 에러 메시지에서 추천하는 코드대로 print 문을 다시 작성하였다.

 

: 앞의 코드와 같이 print 이후 괄호가 없다는 에러 메시지 발생

 

: 함수를 작성하였지만, 들여쓰기 이후 탭과 공백의 일관성 없는 사용으로 에러가 발생

-> 아직 해결 과정 진행중

 

 

<다음주 진행 계획>

간단한 퍼저를 구현해보는 것이 목표였으나, 예상 외로 오류가 많이 발생해 차주에는 간단한 퍼저 코드를 각자 리뷰해보는 시간을 가지기로 했다. 

 

 

[출처]

https://kblab.tistory.com/154

 

PyDBG

PyDBG PyDBG에 대해서 알아보도록 하겠습니다. 먼저 PaiMei-1.1.win32.exe를 설치 합니다. 설치 후 pydasm.pyd를 C:\python27\Lib\site=packages\pydbg\에 넣습니다. 마찬가지로 첨부된 __init__.py를 C:\python2..

kblab.tistory.com

https://securip.tistory.com/10

 

windows7 에 pydbg 설치하기

fuzzer를 만들어보려했는데 많은 사람들이 파이썬으로 퍼저를 만들기도 하였고 저도 파이썬에 좀 익숙해지고 싶어서 파이썬으로 만들기로 하였습니다. 파이썬 퍼저를 만들기 위해서 pydbg 라는 것

securip.tistory.com