본문 바로가기

파이썬 스터디 과제/파이썬 해킹 프로그래밍33

11장-IDAPython, IDA Pro 스크립팅 IDA Pro는 오랫동안 리버스 엔지니어들에 의해 선택된 디스어셈블러다.IDAPython 설치구글에 idapython을 검색하면 쉽게 설치가 가능하다.압축해제하고 plugins 디렉토리 안에 python.plw라는 파일을ida pro 의 plugins 디렉토리에 복사한다.그다음 그냥 ida를 실행시켜보면 된다. IDAPython 함수IDAPyto은 IDC와 완벽히 호환된다.IDC에서 지원하는 함수들을 모두 사용할 수 있다는 말이다. 유틸리티 함수ScreenEA() IDA 화면에 있는 커서의 현재 위치를 구한다.GetInputFileMD5() IDA에 로드된 바이너리의 MD5 해시 값을 구한다. 세그먼트IDA에서 바이너리는 여러 세그먼트로 나뉜다.바이너리 내부의 세그먼트에 관한 정보를 구하는 데 사용되는 .. 2015. 2. 18.
10장-윈도우 드라이버 퍼징_4(드라이버 퍼저 작성) 첫 번째 단계는 Immunity 디버거 내에서 실행시킬 IOCTL-덤핑 PyCommand를 작성하는 것이다. ioctl_dump.py라는 새로운 파이썬 파일을 만들자.ioctl_dump.py이는 매우 간단한 PyCommand다.IOCTL 코드 리스트와디바이스 이름 리스트를 구해 그것을 dictionary에 저장하고 dictionary를 다시파일에 저장한다. 단순히 대상 드라이버를 Immunity 디버거에 로드하고 !ioctl_dump로 PyCommand를 실행시킨다.pickle 파일은 Immunity 디버거 디렉토리에 저장된다. 이제 디바이스 이름과 지원되는 IOCTL 코드 값을 구했다.그것을 이용하는 간단한 퍼저를 작성하자.my_ioctl_fuzzer.pypickle 파일에서 IOCTL 코드와 디바이스.. 2015. 2. 17.
10장-윈도우 드라이버 퍼징 윈도우 드라이버를 공격하는 것은 이제는 버그 헌터뿐만 아니라 공격 코드 개발자에게도 일상적인 것이 됐다.이번 장에서는 IOCTL을 구현하는 로컬 디바이스에 연결하는 방법과 해당 디바이스에 IOCTL을 전달하는 방법을 다룬다.드라이버에 IOCTL을 전달하기전에 immunity디버거를 사용해 변형된 IOCTL을 만든다.그 다음 디버거에 내장되어있는 정적분석 라이브러리인 driverlib를 이용해 대상 드라이버에 대한 자세한 정보를 얻어내는 방법과 컴파일된 드라이버 파일에서중요한 제어 흐름, 디바이스의 이름, IOCTL 코드를 해석하는 방법 등을 배운다.driverlib를 통해 ioctlizer라는 독립적인 드라이버 퍼저를 작성한다. 드라이버 통신윈도우 시스템의 거의 모든 드라이버는 특정한 디바이스 이름과 심.. 2015. 2. 17.
9장-sulley sulley는 파이썬 기반의 강력한 퍼징 프레임 워크다.패킷을 캡처할 수 있고 광범위한 에러 보고 기능과 VMWare 자동화를 제공한다.퍼징 대상에서 에러가 발생하면 해당 애플리케이션을 재시작시켜 버그를 발견하기 위한 퍼징 세션을 다시 시작시킬 수 있다.sulley는 블록기반 퍼징이다.블록 기반 퍼징에서는 퍼징을 수행할 프로토콜이나 파일 형식 등을 일반화 시키는데, 그것은 데이터의 각 필드에 길이와 데이터 타입을 할당함으로써 이뤄진다. sulley 설치https://github.com/OpenRCE/sulley 을 통해 sulley 소스코드가 압축된 파일을 다운로드할 수 있다. winpcap설치http://www.winpcap.org/install/default.htmpacpy 설치, impacket 설.. 2015. 2. 16.
8장-퍼징_2 파일퍼저 파일 퍼저파일 포맷 취약점을 이용하는 공격 벡터는 매우 다양하고 빠르게 변하기 때문에 파일 포맷 파서 자체의 버그를 찾아내는 방향으로 관심을 기울여야 한다.모든 종류의 다양한 파일 포맷에 대한 변형을 만들 수 있어야 한다.또 에러를 분석해 그것이 공격 가능한 것인지 디버깅 기능이 필요하다.에러가 발생할 때마다 이메일로 에러 정보를 보내주는 기능을 구현할 것이다.첫 번째 단계는 클래스의 골격과 간단한 파일 선택기를 구현하는 것이다.file_fuzzer.py를 짜자from pydbg import * from pydbg.defines import * import utils import random import sys import struct import threading import os import shut.. 2015. 2. 15.
8장-퍼징 퍼징은 소프트웨어에 있는 버그를 찾아내는 가장 효과적인 기술이라고 한다.퍼징은 애플리케이션이 에러를 발생하게 만들기 위해 비정상정인 데이터를 만들어 애플리케이션에 전달하는 방법이다.퍼저의 두 형태제너레이션 퍼저- 새로운 데이터를 생성해 대상 애플리케이션에 전달뮤테이션 퍼저- 기존의 데이터를 이용해 대상 애플리케이션에 전달예) 제너레이션 퍼저는 비정상적인 HTTP 요청을 생성해 대상 웹서버 데몬에 전달한다. 하지만 뮤테이션 퍼저는 기존의 HTTP 패킷 데이터를 캡처해 변형시킨 후 웹서버 데몬에 전달한다. 버그의 유형버퍼 오버플로우모든 종류의 메모리 관련 함수, 문자열 처리 루틴, 프로그래밍 언어 자체의 내부 기능조차도 버퍼 오버플로우를 일으켜 소프트웨어를 취약하게 할 수 있다고 한다.버퍼 오버플로우는 데이.. 2015. 2. 10.
728x90