파이썬 해킹 프로그래밍

파이썬 해킹 프로그래밍

$25.12
Description
해커와 리버스 엔지니어가 읽어야 할 필독서
『파이썬 해킹 프로그래밍』는 파이썬에 대하여 다룬다. 파이썬은 해커와 리버스 엔지니어, 소프트웨어 테스터들이 애용하는 프로그래밍 언어로, 기존의 C/C++보다 원하는 것을 빠르게 개발할 수 있는 장점이 있다. 이 책은 스스로 디버거, 각종 퍼저, 다양한 모니터링 툴 등을 제작해 사용할 수 있도록 돕고 있으며, 이 책에서 사용되는 예제는 조금만 수정하면 실제로 사용할 수 있는 툴이 된다. 어떤 애플리케이션도 다룰 수 있는 소프트웨어 툴을 만들어 내는 능력을 길러보자.
저자

저스틴지이츠

저자<b>저스틴지이츠</b>JUSTINSEITZ
Immunity,Inc.의선임보안연구원으로,주로버그헌팅,리버스엔지니어링,공격코드작성,파이썬코드작성에대부분의시간을보낸다

목차

1장개발환경구축
1.1운영체제요구사항
1.2파이썬2.5설치
1.2.1윈도우에서의파이썬설치
1.2.2리눅스에서의파이썬설치
1.3이클립스와PyDev설치
1.3.1ctypes
1.3.2동적라이브러리이용
1.3.3C데이터타입
1.3.4레퍼런스를통한파라미터전달
1.3.5구조체와유니언정의

2장디버거
2.1범용CPU레지스터
2.2스택
2.3디버그이벤트
2.4브레이크포인트
2.4.1소프트브레이크포인트
2.4.2하드웨어브레이크포인트
2.4.3메모리브레이크포인트

3장윈도우디버거개발
3.1디버기
3.2CPU레지스터상태얻기
3.2.1스레드리스트
3.2.2종합
3.3디버그이벤트핸들러구현
3.4브레이크포인트
3.4.1소프트브레이크포인트
3.4.2하드웨어브레이크포인트
3.4.3메모리브레이크포인트
3.5정리

4장PyDbg-순수파이썬윈도우디버거
4.1브레이크포인트확장
4.2접근위반핸들러
4.3프로세스스냅샷
4.3.1프로세스스냅샷얻기
4.3.2종합

5장Immunity디버거
5.1Immunity디버거설치
5.2Immunity디버거101
5.2.1PyCommand
5.2.2PyHooks
5.3공격코드개발
5.3.1공격코드에서사용할명령찾기
5.3.2문자필터링
5.3.3윈도우의DEP우회
5.4악성코드의안티디버깅루틴무력화
5.4.1IsDebuggerPresent
5.4.2반복적인프로세스탐지기법우회

6장후킹
6.1PyDbg를이용한소프트후킹
6.2Immunity디버거를이용한하드후킹

7장DLL과코드인젝션
7.1원격스레드생성
7.1.1DLL인젝션
7.1.2코드인젝션
7.2백도어제작
7.2.1파일숨기기
7.2.2백도어코딩
7.2.3py2exe로컴파일하기

8장퍼징
8.1버그의유형
8.1.1버퍼오버플로우
8.1.2정수오버플로우
8.1.3포맷스트링공격
8.2파일퍼저
8.3추가고려사항
8.3.1코드커버리지
8.3.2자동화된정적분석

9장Sulley
9.1Sulley설치
9.2Sulley프리미티브
9.2.1문자열
9.2.2구분자
9.2.3정적,랜덤프리미티브
9.2.4바이너리데이터
9.2.5정수
9.2.6블록과그룹
9.3Sulley를이용한WarFTPD퍼징
9.3.1FTP기초
9.3.2FTP프로토콜의골격생성
9.3.3Sulley세션
9.3.4네트워크와프로세스모니터링
9.3.5퍼징과Sulley웹인터페이스

10장윈도우드라이버퍼징
10.1드라이버통신
10.2Immunity디버거를이용한드라이버퍼징
10.3Driverlib-드라이버정적분석툴
10.3.1디바이스이름알아내기
10.3.2IOCTL디스패치루틴찾기
10.3.3IOCTL코드찾기
10.4드라이버퍼저작성

11장IDAPython-IDAPro스크립팅
11.1IDAPython설치
11.2IDAPython함수
11.2.1유틸리티함수
11.2.2세그먼트
11.2.3함수
11.2.4교차참조
11.2.5디버거후킹
11.3스크립트예제
11.3.1위험한함수에대한교차참조찾기
11.3.2함수코드커버리지
11.3.3스택의크기계산

12장PyEmu-스크립트가능한에뮬레이터
12.1PyEmu설치
12.2PyEmu개요
12.2.1PyCPU
12.2.2PyMemory
12.2.3PyEmu
12.2.4실행
12.2.5메모리와레지스터변경자
12.2.6핸들러
12.3IDAPyEmu
12.3.1함수에뮬레이트
12.3.2PEPyEmu
12.3.3실행파일팩커
12.3.4UPX팩커
12.3.5PEPyEmu를이용한UPX언팩

출판사 서평

◈요약
해커와리버스엔지니어가꼭알아야할손쉽고빠른파이썬해킹프로그래밍.디버거,트로이목마,퍼저,에뮬레이터같은해킹툴과해킹기술의기반개념을설명하며,기존파이썬기반보안툴의사용법과기존툴이만족스럽지않을때직접제작하는방법도알려준다.

◈소개
파이썬은쉽고빠르게작성할수있고로우레벨을지원하며해커들을행복하게해주는다양한라이브러리를제공한다는장점때문에해커와리버스엔지니어,소프트웨어테스터들이애용하는프로그래밍언어로자리잡았다.하지만파이썬을이용한해킹방법을설명하는참고서적은드물었기에,관련포럼에올라온글이나도움말을뒤지거나코드가제대로동작하도록일일이코드를수정해가면서확인해야만했다.

『파이썬해킹프로그래밍』은디버거,트로이목마,퍼저,에뮬레이터같은해킹툴과해킹기술의기반개념을설명한다.또한기존파이썬기반보안툴의사용법과기존툴이만족스럽지않을때직접제작하는방법도배울수있다.

◈이책에서다루는내용

*지루하고힘든리버싱과보안분석작업의자동화노하우
*자신만의디버거제작방법
*퍼저작성과윈도우드라이버퍼징방법
*코드와라이브러리인젝션기술,소프트후킹과하드후킹기술
*암호화된웹브라우저세션의보안트래픽스니핑
*PyDbg,Immunity디버거,Sulley,IDAPython,PyEmu사용법

◈추천의글

Immunity사에서가장자주듣는말은“아직도다안됐어?”란말이다.이말은사실“나는Immunity디버거용ELF임포터작업을하고있는데,넌아직다못했어?”라거나“방금인터넷익스플로러버그를또찾아냈는데,넌아직도공격코드작성못했어?”라는의미다.

이처럼신속한개발과수정작업을원한다면차기보안프로젝트에서는반드시파이썬을선택하라.파이썬은이같은요구를완벽히충족시켜줄것이다.

공구상가거리를거쳐사우스비치(SouthBeach)에있는이곳에이스하드웨어(AceHardware)까지걸어내려오는길은정말현기증이날지경이다.그거리에는갖가지물건들을깔끔하게진열한50여개의작은상점들이있다.각상점의물건은모두비슷해보이긴하지만이웃상점과비교해보면모두매우중요한차이점이있다.각공구의사용용도를아는것만으로는충분하지않다.이는보안툴을만들때도마찬가지다.웹이나자체애플리케이션을개발할때경우에따라필요한‘망치’가다르다.SQLAPI를후킹하는도구를후다닥만들어낼수있으면시간을많이절약할수있다.하지만이것이툴을평가하기위한요소는아니다.일단SQLAPI를후킹할수있게되면비정상적인SQL질의를탐지할수있는툴을쉽게만들수있다.그리고그툴을이용해공격자가악용하는취약점을빠르게고칠수있다.

보안연구자들이한팀을이뤄일하기가매우힘들다는사실은누구나알고있다.대부분보안연구자들은어떤문제에직면하면먼저문제를공격하는데사용할라이브러리를개발하려고한다.SSL데몬에어떤보안취약점이있다고하자.그러면보안연구자는SSL라이브러리가매우다루기힘들다는이유로처음부터SSL클라이언트를개발하려고할것이다.

여러분은무슨수를쓰든이를피해야한다.SSL라이브러리는보안연구자의말처럼그렇게다루기힘든것이아니며특정보안연구자의특정한스타일대로작성되지않은것뿐이다.코드블록을파헤쳐문제점을발견하고수정할수있느냐가핵심이며,가능하다면SSL라이브러리에대한공격코드를늦지않게작성할수있다.그리고일이제대로진행되려면보안연구자들이팀을이뤄일하는것이중요하다.보안담당자에게있어파이썬을사용할줄아는것이루비(Ruby)를사용할줄아는것보다더효과적이다.파이썬을사용하는사람들은기존의소스코드를다시작성하지않고서로협업을할수있기때문이다.그렇지않다면초유기체적으로일을수행해야만한다.즉,부엌에있는개미의수와문어의수가같다고하더라도서로협업하는개미들을잡는것이문어를잡는것보다훨씬까다로운것과같은이치다.

이부분에있어이책은분명도움이될것이다.아마대부분은필요한작업을수행하기위한툴들을이미갖고있을것이다.이미비주얼스튜디오가있을테고그것을이용해디버거를수행할수있으며,더군다나자신만의특별한디버거를작성할필요가없다고말할것이다.또는WinDbg의플러그인인터페이스를이용하면된다고말할수도있다.물론전부옳은말이다.WinDbg는플러그인인터페이스를제공하며,WinDbgAPI를이용해유용한기능을만들어낼수있다.하지만WinDbg를이용해5,000명의다른사람과연결해결과를서로관련시킬수있다면더욱훌륭할것이라고아쉬워할것이다.반면에파이썬을이용하면XML-RPC클라이언트와서버를만들어내는것이약100라인의코드만으로해결된다.

해킹은리버스엔지니어링이아니므로애플리케이션의원래소스코드를알아내는것이목적은아니다.프로그램이나시스템을개발한사람보다더많이알아내는것이목적이다.프로그램의형태에상관없이일단그프로그램을이해했다면흥미진진한공격코드를프로그램에침투시킬수있다.이는여러분이시각화,원격동기화,그래프이론,선형방정식해법,통계분석기술등에대한전문가가된다는의미다.Immunity에서는파이썬을표준으로사용하므로그래프알고리즘이나필요한툴을작성할때항상파이썬이사용된다.

6장에서는파이어폭스(Firefox)에서사용자이름과비밀번호를가로채기위해어떻게하면후킹을빨리할수있는지설명한다.악성코드제작자들도이와같은목적을달성하려고하이레벨언어를사용해동일한작업을수행한다(http://philosecurity.org/2009/01/12/interview-with-an-adware-author).다른한편으로는소프트웨어검증툴을15분안에재빨리만들어낼수도있다.소프트웨어회사들은보안상의이유로소프트웨어내부정보를보호하기위해많은투자를한다.하지만실제적으로는복사방지와디지털저작권관리DRM에국한돼있다.

이책을통해여러분은다른애플리케이션을주무를수있는소프트웨어툴을빠르게만들어낼수있는능력을기르게될것이다.미래의보안툴은빠르게구현돼야하고,빠르게수정돼야하며,빠르게결합될수있어야한다.이제유일하게남은질문은이것이다.“아직도안됐어?”

플로리다주,마이애미비치
데이브에이텔(DaveAitel)

◈저자서문

나는해킹을목적으로파이썬을배웠다.나뿐만아니라다른사람들도모두해킹을목적으로파이썬을배운다고과감히말할수있다.나는오랫동안해킹과리버스엔지니어링에알맞은언어를찾아왔다.그런와중에몇년전파이썬을알게됐고파이썬은곧해킹프로그래밍언어분야에서독보적인위치를차지하게됐다.그런데묘한점은다양한해킹작업을수행하기위해파이썬을어떻게사용해야하는지를알려주는실질적인매뉴얼이어디에도없다는점이었다.그래서관련포럼에올라온글이나도움말을뒤지거나일일이코드를수정해가면서제대로동작하는데많은시간을투자해야했다.이책은이런점을채워주기위해파이썬을써서해킹과리버스엔지니어링을수행하는방법을설명한다.

이책을통해다버거,백도어,퍼저,에뮬레이터,코드인젝션같은대부분의해킹툴이나기술의바탕이되는이론을배우게될것이다.또한자신만의독특한솔루션이필요하지않은경우에는이미제작된파이썬툴만으로도충분하다는사실을알게될것이다.그리고파이썬기반툴의사용법뿐만아니라파이썬으로툴을제작하는방법을배우게될것이다.하지만명심해야할점은이책이파이썬에대한완벽한레퍼런스가아니라는점이다.이책에서다루지않는파이썬으로제작된정보보호툴(infosectool)도많이있다.그럼에도불구하고이책은많은공통기술을다루고있으므로선택한어떤파이썬툴이든사용할수있고,디버그할수있고,기능을확장시킬수도있다.

다양한방법으로이책을읽을수있다.파이썬을처음접하거나해킹툴제작을처음해본다면처음부터끝까지순서대로읽기를권한다.그러면책전반에걸쳐몇가지필요한이론과수많은파이썬코드,해킹과리버싱작업등을수행하는다양한방법을확실히이해할수있을것이다.이미파이썬에익숙하고cyptes파이썬라이브러리를잘알고있다면2장부터읽기를권한다.그리고이미경험이많다면필요할때마다이책의코드를참조하거나특정절을찾아읽자.

나는2장에서디버거에대한이론설명을시작으로5장의Immunity디버거에이르기까지디버거에많은분량을할당했다.디버거는해커에게있어핵심적인툴이므로디버거에대해광범위하게설명하는것을주저하지않았다.6장과7장에서는프로그램제어와메모리조작같은디버깅개념을추가할수있는후킹과인젝션기술을배운다.

이어지는장에서는애플리케이션공격에대한주제를다룬다.8장에서는퍼징을배우고기본적인파일퍼저를작성해본다.9장에서는강력한Sulley퍼징프레임워크를이용해실제FTP데몬에대한퍼징을수행해보며,10장에서는윈도우드라이버를공격하기위한퍼저를어떻게작성하는지배운다.

11장에서는유명한바이너리정적분석툴인IDAPro에서정적분석작업을자동화하는방법을배운다.끝으로12장에서는파이썬기반에뮬레이터인PyEmu에대해배운다.

나는이책의코드를최대한간결하게만들고해당코드가어떻게동작하는지자세히설명하려노력했다.새로운언어를배우거나새로운라이브러리를배워코드를실제로작성하고오류를디버깅하는데는시간이필요하다.독자들이코드를직접작성해보길권한다.이책에서다루는모든소스코드는http://www.nostarch.com/ghpython.htm이나http://www.acornpub.co.kr/book/python-hacking에서다운로드하면된다.

자,그럼시작하자!

◈옮긴이의말

파이썬을이용하면기존의C/C++보다원하는것을빠르게개발할수있다.물론어떤것을개발하느냐에따라얘기는달라질수있겠지만매우효율적인프로그래밍언어라는점에는누구도이의를제기하지않을것이다.

또한파이썬은플랫폼독립적인프로그래밍언어다.즉,파이썬인터프리터를지원하는플랫폼이라면어느플랫폼에서든지파일썬으로작성한프로그램을실행시킬수있다.윈도우,리눅스,맥OS뿐만아니라자바와닷넷(.NET)가상머신에서도파이썬프로그램의동작이가능하다.

이처럼파이썬은장점이많다.실제로많은보안업체에서파이썬으로각종툴을제작해사용한다.보안분야에서는속도와효율성이매우중요한요소이며,이런요구에부합하는것이바로파이썬이다.보안분야뿐만아니라상용애플리케이션이나오픈소스프로젝트에서도파이썬이많이사용된다.대표적인예로비트토렌트(BitTorrent)를들수있다.

이책은두껍지않으면서도알찬내용으로가득차있다.시스템레벨의지식이필요하긴하지만책의내용을숙지하는것만으로도자기자신의간단한디버거,각종퍼저,다양한모니터링툴등을제작해사용할수있다.또한이책에서사용되는예제는조금만수정하면현업에서도충분히사용할만한툴이될수있다.그만큼책의내용이실질적이고구체적이기때문이다.

끝으로,독자여러분모두가부디이책을통해보안취약점발견,디버깅,후킹등의세계에푹빠지길바란다.