본문 바로가기

전체 글228

5장-2 Immunity 디버거 101 Immunity 디버거와 사용자 인터페이스를 간단히 살펴보자.Immunity 디버거를 실행하면그림과 같은 화면이 나올 것이다.좌측 상단 CPU 패널 : 프로세스의 어셈블리 코드가 출력됨우측 상단 레지스터 패널 : 모든 범용 레지스터와 그 외의 CPU 레지스터 내용이 출력됨좌측 하단 메모리 덤프 패널 : 선택한 메모리 영역의 내용을 16진수 값으로 보여줌우측 하단 스택 패널 : 스택의 내용을 보여주며 심볼 정보를 갖고 있는 함수의 파라미터를 디코드해 보여준다.하단 명령 바 패녈 : WinDbg 스타일의 명령으로 디버거를 제어할 수 있는 곳PyCommand 실행 가능 PyCommandImmunity 디버거에서 파이썬을 실행시키는 주된 방법은 PyCommend를 이용하는 것이다.PyCommand란 : 후킹, .. 2015. 1. 25.
5장-1 Immunity 디버거 Immunity 디버거http://debugger.immunityinc.com에서 무료로 다운로드 가능하다. 2015. 1. 25.
4장-4 종합 툴 툴은 위험성이 있는 함수 호출을 찾아내고 그런 함수 호출을 추적한다.위험하다고 생각되는 함수가 호출되면 스택에서 네 개의 파라미터를 참조한다.해당 함수가 오버플로우를 발생시킬 수 있는지 판단하고 해당 프로세스의 스냅샷을 만든다.접근 위반이 발생하면 스크립트는 마지막으로 위험한 함수가 호출된 시점으로 프로세스를 되돌린다. danger_track.py-------------------------------------------------------------------#danger_track.py from pydbg import * from pydbg.defines import * import utils # 접근 위반이 발생한 후에 조사할 명령의 최대 개수 MAX_INSTRUCTIONS = 10 # 다음.. 2015. 1. 25.
4장-3 프로세스 스냅샷 pydbg는 프로세스 스냅샷이라는 엄청난 기능을 보유하고있다고 한다.프로세스 스냅샷프로세스를 일시 중지시켜 메모리 내용을 얻을 수 있다.다시 그 프로세스를 실행할 수 있다. 프로세스 스냅샷 얻기대상 프로세스의 어떤 특정 시점에서의 정확한 상태 정보를 얻는 것ㄴ 먼저 모든 스레드 리스트를 구하고 각 스레드의 CPU 컨텍스트 정보를 구해야 한다.또 모든 프로세스 메모리 페이지와 내용을 구해야 한다.어떤 정보를 복원할 것인지에 따라 저장할 정보를 판단하고 필요한 정보를 저장한다. 프로세스 스냅샷을 위한 정보를 구하기 전에 실행중인 모든 스레드를 일시 중지시켜야 한다.그래야만 스냅샷 정보를 추출하는 동안에 데이터와 생태 정보가 변경되지 않기 때문이다.pydbg에서 모든 스레드를 일시 정지시키려면 suspend_.. 2015. 1. 24.
4장-2 접근 위반 핸들러 접근 위반은 접근할 권한이 없는 메모리에 접근하려고 하거나 허용되지 않는 특별한 방법으로 메모리에 접근하려고 할 때 프로세스 내부에서 발생한다. 프로그램적인 결함에 의해 접근 위반이 발생하는 경우는 버퍼오버플로우, NULL 포인터를 부적절하게 사용하는 경우 등 매우 다양하다.c함수인 strcpy()를 이용해 버퍼 오버플로우를 발생시키는 프로그램을 만들어 보자.access_violation_handler.pybuffer_overflow.py를 실행시키고 PID를 확인한다.access_violation_handler.py를 실행시키고 buffer_overflow.py의 PID를 입력한다. 2015. 1. 24.
4장-1 브레이크포인트 확장 브레이크포인트 확장PyDbg를 이용하면 사용자 정의 콜백 함수를 구현함으로써 기본적인 이벤트 핸들러를 쉽게 확장시킬 수 있다.소프트 브레이크포인트를 설정하는 PyDbg 함수의 프로토타입------------------------------------------------------------bp_set(address, description="" , restore=True, handler = None)------------------------------------------------------------address 파라미터는 소프트 브레이크포인트를 설정할 주소를 나타낸다.description 파라미터는 각 브레이크포인트에 고유한 이름을 부여할때 사용한다.(선택적)restore 파라미터는 발생한 브레이.. 2015. 1. 21.
728x90