본문 바로가기
파이썬 스터디 과제/파이썬 해킹 프로그래밍

5장-3 공격 코드 개발

by laoching 2015. 1. 25.
728x90
반응형

소프트웨어 시스템에서 취약점을 찾는 것은 공격 코드를 만드는 것이 중요하다.

immunity디버거는 공격 코드 만드는 것을 쉽게 해준다.


공격 코드에서 사용할 명령 찾기

EIP 제어권을 획득한 이후에는 셸 코드가 실행되게 만들어야 한다.

일반적으로 레지스터나 레지스터 값의 상대적인 오프셋이 셸 코드의 주소를 가리킨다.

셸 코드 주소로 실행 제어권을 전달하려면 그것을 수행하는 명령을 실행 바이너리나 실행 바이너리에 로드된 모듈 중 하나에서 찾아내야 한다. immunity 디버거 파이썬 라이브러리를 이용하면 로드된 바이너리에서 원하는 명령을 쉽게 찾을 수 있다.

findinstruction.py 를 작성하자.

-----------------------------------------------------------------------------

#findinstruction.py
from immlib import *

def main(args):
    imm = Debugger()
    search_code     = " ".join(args)
    search_bytes     = imm.Assemble(search_code)
    serach_results     = imm.Search(search_bytes)

    for hit in serach_results:
        #메모리 페이지를 구하고
        #실행 가능한 것인지 확인한다.
        code_page = imm.getMemoryPagebyAddress(hit)
        access = code_page.getAccess(human = True)

        if "execute" in access.lower():
            imm.log("[*] Found : %s(0x%08x)"%(search_code,hit),address = hit)

            return "[*] Finished searching for instructions, checkthe Log window"

-----------------------------------------------------------------------------

우선 찾을 명령을 어셈블함

search() 함수를 사용해 로드된 바이너리의 모든 메모리 영역에서 해당 명령을 찾음

메모리에서 원하는 명령을 찾았다면 그 명령이 위치하는 메모리 페이지를 구함

그것이 실행가능한 메모리 페이지 인지 확인함

실행 가능한 메모리 페이지에서 찾은 명령의 주소는 Log 창에 출력됨


위 스크립트를 사용하려면 찾고자 하는 명령을 실행 파라미터로 전달하면 된다

-----------------------------------------------------------------------------

!findinstruction<찾고자 하는 명령>

-----------------------------------------------------------------------------

-----------------------------------------------------------------------------

!findinstruction jmp esp

-----------------------------------------------------------------------------

라고 실행하면

..??


저건 소스의 오류로 밝혀졌다.

이 책은 믿을게 못된다. 책믿지 마세요.

정말 나이스하다.


728x90
반응형

댓글