책 소개
[ 세트 구성: 전2권 ]
1) 『(개정판) 해킹: 공격의 예술』
2) 『파이썬 해킹 프로그래밍: 프로그래머라면 누구나 할 수 있는』
『(개정판) 해킹: 공격의 예술』 소개
프로그래밍에서부터 공격 가능한 기계어 코드까지 해킹에 필요한 모든 것을 다룸으로써 해킹의 세계를 좀 더 쉽게 이해할 수 있도록 해킹의 예술과 과학을 설파한 책. 해킹을 공부하고 싶지만 어디서부터 시작해야 할지 모르는 초보 해커들에게 해킹의 진수를 알려주는 한편, 실제 코드와 해킹 기법, 동작 원리에 대한 설명이 가득한 간결하고 현실적인 해킹 가이드다. 기본적인 C 프로그래밍에서부터 기본 공격 기법, 네트워크 공격, 셸코드 공격과 그에 대한 대응책까지 해킹의 거의 모든 부분을 다룬다.
『파이썬 해킹 프로그래밍』 소개
해커와 리버스 엔지니어가 꼭 알아야 할 손쉽고 빠른 파이썬 해킹 프로그래밍. 디버거, 트로이목마, 퍼저, 에뮬레이터 같은 해킹 툴과 해킹 기술의 기반 개념을 설명하며, 기존 파이썬 기반 보안 툴의 사용법과 기존 툴이 만족스럽지 않을 때 직접 제작하는 방법도 알려준다.
1) 『(개정판) 해킹: 공격의 예술』
2) 『파이썬 해킹 프로그래밍: 프로그래머라면 누구나 할 수 있는』
『(개정판) 해킹: 공격의 예술』 소개
프로그래밍에서부터 공격 가능한 기계어 코드까지 해킹에 필요한 모든 것을 다룸으로써 해킹의 세계를 좀 더 쉽게 이해할 수 있도록 해킹의 예술과 과학을 설파한 책. 해킹을 공부하고 싶지만 어디서부터 시작해야 할지 모르는 초보 해커들에게 해킹의 진수를 알려주는 한편, 실제 코드와 해킹 기법, 동작 원리에 대한 설명이 가득한 간결하고 현실적인 해킹 가이드다. 기본적인 C 프로그래밍에서부터 기본 공격 기법, 네트워크 공격, 셸코드 공격과 그에 대한 대응책까지 해킹의 거의 모든 부분을 다룬다.
『파이썬 해킹 프로그래밍』 소개
해커와 리버스 엔지니어가 꼭 알아야 할 손쉽고 빠른 파이썬 해킹 프로그래밍. 디버거, 트로이목마, 퍼저, 에뮬레이터 같은 해킹 툴과 해킹 기술의 기반 개념을 설명하며, 기존 파이썬 기반 보안 툴의 사용법과 기존 툴이 만족스럽지 않을 때 직접 제작하는 방법도 알려준다.
목차
목차
- 『(개정판) 해킹: 공격의 예술』
- 0x100장 들어가며
- 0x200장 프로그래밍
- 0x210 프로그래밍이란?
- 0x220 가상 코드
- 0x230 제어 구조
- 0x231 If-Then-Else
- 0x232 While/Until 루프
- 0x233 For 루프
- 0x240 기본적인 프로그래밍 개념
- 0x241 변수
- 0x242 산술 연산자
- 0x243 비교 연산자
- 0x244 함수
- 0x250 직접 해보기
- 0x251 큰 그림 이해하기
- 0x252 x86 프로세서
- 0x253 어셈블리 언어
- 0x260 기본으로 돌아가기
- 0x261 문자열
- 0x262 Signed, Unsigned, Long, Short
- 0x263 포인터
- 0x264 형식 문자열
- 0x265 형 변환
- 0x266 커맨드라인 인자
- 0x267 변수 범위
- 0x270 메모리 세그먼트
- 0x271 C에서의 메모리 세그먼트
- 0x272 힙 사용하기
- 0x273 오류 확인된 malloc()
- 0x280 기초 쌓기
- 0x281 파일 접근
- 0x282 파일 권한
- 0x283 사용자 ID
- 0x284 구조체
- 0x285 함수 포인터
- 0x286 가상 난수
- 0x287 확률 게임
- 0x300장 공격
- 0x310 일반 공격 기법
- 0x320 버퍼 오버플로우
- 0x321 스택 기반 버퍼 오버플로우의 취약점
- 0x330 BASH 셸로 해킹하기
- 0x331 환경 변수 이용하기
- 0x340 기타 세그먼트 오버플로우
- 0x341 힙 기반 오버플로우
- 0x342 함수 포인터 오버플로우
- 0x350 포맷 스트링
- 0x351 포맷 인자
- 0x352 포맷 스트링 취약점
- 0x353 임의의 메모리 주소에서 읽기
- 0x354 임의의 메모리 주소에 쓰기
- 0x355 인자에 직접 접근
- 0x356 쇼트 쓰기 기법
- 0x357 소멸자를 이용한 우회법
- 0x358 노트 검색 프로그램의 취약점
- 0x359 전역 오프셋 테이블 덮어쓰기
- 0x400장 네트워킹
- 0x410 OSI 모델
- 0x420 소켓
- 0x421 소켓 함수
- 0x422 소켓 주소
- 0x423 네트워크 바이트 순서
- 0x424 인터넷 주소 변환
- 0x425 간단한 서버 예제
- 0x426 웹 클라이언트 예제
- 0x427 작은 웹서버
- 0x430 하위 계층 해부
- 0x431 데이터링크 계층
- 0x432 네트워크 계층
- 0x433 전송 계층
- 0x440 네트워크 스니핑
- 0x441 로 소켓 스니퍼
- 0x442 libpcap 스니퍼
- 0x443 계층 해독
- 0x444 능동 스니핑
- 0x450 서비스 거부
- 0x451 SYN 홍수
- 0x452 죽음의 핑
- 0x453 티어드랍
- 0x454 핑 홍수
- 0x455 증폭 공격
- 0x456 분산 DoS 홍수
- 0x460 TCP/IP 하이재킹
- 0x461 RST 하이재킹
- 0x462 지속되는 하이재킹
- 0x470 포트 스캐닝
- 0x471 스텔스 SYN 스캔
- 0x472 FIN, X-mas, Null 스캔
- 0x473 가짜 스캔 패킷 이용
- 0x474 유휴 스캐닝
- 0x475 사전 방어(가리개)
- 0x480 네트워크 건너 해킹하기
- 0x481 GDB로 분석하기
- 0x482 tinyweb 공격해보기
- 0x483 포트 바인딩 셸코드
- 0x500장 셸코드
- 0x510 어셈블리와 C
- 0x511 어셈블리 리눅스 시스템 콜
- 0x520 셸코드로 가는 길
- 0x521 스택을 사용한 어셈블리 명령
- 0x522 GDB로 조사
- 0x523 널 바이트 제거
- 0x530 셸을 생성하는 셸코드
- 0x531 권한 문제
- 0x532 셸코드 좀 더 작게 만들기
- 0x540 포트 바인딩 셸코드
- 0x541 표준 파일 서술자 복제
- 0x542 분기 제어 구조
- 0x550 커넥트 백 셸코드
- 0x510 어셈블리와 C
- 0x600장 대응책
- 0x610 탐지 대응책
- 0x620 시스템 데몬
- 0x621 시그널
- 0x622 tinyweb 데몬
- 0x630 주요 툴
- 0x631 tinywebd 공격 툴
- 0x640 로그 파일
- 0x641 군중 속에 숨기
- 0x650 보지 못하고 지나치기
- 0x651 한 번에 하나씩
- 0x652 원래대로 만들기
- 0x653 자식 프로세스 호출
- 0x660 고급 위장법
- 0x661 로그의 IP 주소 스푸핑
- 0x662 로그없는 공격
- 0x670 전체 기반 시스템
- 0x671 소켓 재사용
- 0x680 페이로드 은닉
- 0x681 문자열 인코딩
- 0x682 썰매 숨기는 방법
- 0x690 버퍼 제한
- 0x691 다형의 출력 가능한 ASCII 셸코드
- 0x6a0 대응책 보강
- 0x6b0 실행 불가능 스택
- 0x6b1 ret2libc
- 0x6b2 system()으로 리턴
- 0x6c0 임의 스택 공간
- 0x6c1 BASH와 GDB로 조사
- 0x6c2 linux-gate 이용기
- 0x6c3 응용 지식
- 0x6c4 첫 번째 시도
- 0x6c5 도박하기
- 0x700장 암호학
- 0x710 정보 이론
- 0x711 절대적 보안
- 0x712 원타임 패드
- 0x713 양자 키 분배
- 0x714 계산 불능 보안
- 0x720 알고리즘 실행 시간
- 0x721 점근 표기법
- 0x730 대칭 암호 방식
- 0x731 러브 그로버의 양자 검색 알고리즘
- 0x740 비대칭 암호화
- 0x741 RSA
- 0x742 피터 쇼어의 양자 인수분해 알고리즘
- 0x750 혼성 암호
- 0x751 맨 인 더 미들 공격
- 0x752 SSH 프로토콜 호스트 핑거프린트 버전 이용
- 0x753 퍼지 핑거프린트
- 0x760 비밀번호 크래킹
- 0x761 사전 공격
- 0x762 전수 조사 공격
- 0x763 해시 룩업 테이블
- 0x764 비밀번호 확률 행렬
- 0x770 무선 802.11b 암호화
- 0x771 WEP
- 0x772 RC4 스트림 암호 방식
- 0x780 WEP 공격
- 0x781 오프라인 전수 조사 공격
- 0x782 키스트림 재사용
- 0x783 IV 기반 복호화 사전 테이블
- 0x784 IP 리다이렉션
- 0x785 Fluhrer, Mantin, Shamir 공격
- 0x710 정보 이론
- 0x800장 결론
- 0x810 참고 문헌
- 0x820 소스코드
- 『파이썬 해킹 프로그래밍』
- 1장 개발 환경 구축
- 1.1 운영체제 요구 사항
- 1.2 파이썬 2.5 설치
- 1.2.1 윈도우에서의 파이썬 설치
- 1.2.2 리눅스에서의 파이썬 설치
- 1.3 이클립스와 PyDev 설치
- 1.3.1 ctypes
- 1.3.2 동적 라이브러리 이용
- 1.3.3 C 데이터 타입
- 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.2 CPU 레지스터 상태 얻기
- 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.1 Immunity 디버거 설치
- 5.2 Immunity 디버거 101
- 5.2.1 PyCommand
- 5.2.2 PyHooks
- 5.3 공격 코드 개발
- 5.3.1 공격 코드에서 사용할 명령 찾기
- 5.3.2 문자 필터링
- 5.3.3 윈도우의 DEP 우회
- 5.4 악성 코드의 안티 디버깅 루틴 무력화
- 5.4.1 IsDebuggerPresent
- 5.4.2 반복적인 프로세스 탐지 기법 우회
- 6장 후킹
- 6.1 PyDbg를 이용한 소프트 후킹
- 6.2 Immunity 디버거를 이용한 하드 후킹
- 7장 DLL과 코드 인젝션
- 7.1 원격 스레드 생성
- 7.1.1 DLL 인젝션
- 7.1.2 코드 인젝션
- 7.2 백도어 제작
- 7.2.1 파일 숨기기
- 7.2.2 백도어 코딩
- 7.2.3 py2exe로 컴파일하기
- 7.1 원격 스레드 생성
- 8장 퍼징
- 8.1 버그의 유형
- 8.1.1 버퍼 오버플로우
- 8.1.2 정수 오버플로우
- 8.1.3 포맷 스트링 공격
- 8.2 파일 퍼저
- 8.3 추가 고려 사항
- 8.3.1 코드 커버리지
- 8.3.2 자동화된 정적 분석
- 8.1 버그의 유형
- 9장 Sulley
- 9.1 Sulley 설치
- 9.2 Sulley 프리미티브
- 9.2.1 문자열
- 9.2.2 구분자
- 9.2.3 정적, 랜덤 프리미티브
- 9.2.4 바이너리 데이터
- 9.2.5 정수
- 9.2.6 블록과 그룹
- 9.3 Sulley를 이용한 WarFTPD 퍼징
- 9.3.1 FTP 기초
- 9.3.2 FTP 프로토콜의 골격 생성
- 9.3.3 Sulley 세션
- 9.3.4 네트워크와 프로세스 모니터링
- 9.3.5 퍼징과 Sulley 웹 인터페이스
- 10장 윈도우 드라이버 퍼징
- 10.1 드라이버 통신
- 10.2 Immunity 디버거를 이용한 드라이버 퍼징
- 10.3 Driverlib - 드라이버 정적 분석 툴
- 10.3.1 디바이스 이름 알아내기
- 10.3.2 IOCTL 디스패치 루틴 찾기
- 10.3.3 IOCTL 코드 찾기
- 10.4 드라이버 퍼저 작성
- 11장 IDAPython - IDA Pro 스크립팅
- 11.1 IDAPython 설치
- 11.2 IDAPython 함수
- 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.1 PyEmu 설치
- 12.2 PyEmu 개요
- 12.2.1 PyCPU
- 12.2.2 PyMemory
- 12.2.3 PyEmu
- 12.2.4 실행
- 12.2.5 메모리와 레지스터 변경자
- 12.2.6 핸들러
- 12.3 IDAPyEmu
- 12.3.1 함수 에뮬레이트
- 12.3.2 PEPyEmu
- 12.3.3 실행 파일 팩커
- 12.3.4 UPX 팩커