파이썬 스터디 과제43 5장-3 공격 코드 개발 소프트웨어 시스템에서 취약점을 찾는 것은 공격 코드를 만드는 것이 중요하다.immunity디버거는 공격 코드 만드는 것을 쉽게 해준다. 공격 코드에서 사용할 명령 찾기EIP 제어권을 획득한 이후에는 셸 코드가 실행되게 만들어야 한다.일반적으로 레지스터나 레지스터 값의 상대적인 오프셋이 셸 코드의 주소를 가리킨다.셸 코드 주소로 실행 제어권을 전달하려면 그것을 수행하는 명령을 실행 바이너리나 실행 바이너리에 로드된 모듈 중 하나에서 찾아내야 한다. immunity 디버거 파이썬 라이브러리를 이용하면 로드된 바이너리에서 원하는 명령을 쉽게 찾을 수 있다.findinstruction.py 를 작성하자.-------------------------------------------------------------.. 2015. 1. 25. 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. 이전 1 2 3 4 5 6 7 8 다음 728x90