해킹 - 공격의 예술
- 원서명Hacking: The Art of Exploitation (ISBN 9781593270070)
- 지은이Jon Erickson
- 옮긴이강유
- ISBN : 8989975476
- 19,000원
- 2004년 05월 21일 펴냄
- 페이퍼백 | 254쪽 | 190*255mm
- 시리즈 : 해킹과 보안
판매처
개정판책 소개
진정한 해킹을 위한 핵심 기술
해킹은 창조적 문제 해결을 하는 예술이다. 해킹은 어려운 문제에 대한 새로운 해결책을 찾거나 조잡한 프로그램의 버그를 찾는데 쓰인다.
많은 사람들은 자신이 해커라고 생각하지만 성공적인 해커가 되기 위해 필요한 핵심 기술을 갖고 있는 사람은 거의 없다. 이 책은 진정한 해커가 알아야 할 모든 기술을 설명한다.
다른 여러 해킹 책은 다른 사람이 만든 공격 코드의 세부 내용을 설명하지 않고 단지 사용법만을 알려주지만, 이 책은 해킹의 이론 뿐만 아니라 그 뒤에 존재하는 세부적인 기술을 설명한다. 해킹의 핵심기술과 창조적인 트릭을 배우면서 여러분은 해커 정신을 이해하게 될 것이다. 일단 여러분이 해커처럼 생각할 수 있다면, 직접 해킹 코드를 개발하거나 새로운 기법을 고안할 수 있다. 그리고 여러분의 시스템을 공격하려는 해커를 막을 수도 있다.
이 책은 다양한 해킹 기법을 설명하는데 그 중 대부분은 매우 기술적인 내용을 담고 있다. 이들 해킹 기법에서 쓰이는 핵심 프로그래밍 개념을 소개한다. 일반적인 프로그래밍 지식이 있다면 이 책을 읽는데 확실히 도움이 될 것이다. 여기서 소개한 예제 코드는 Linux를 운영하는 x86 컴퓨터용이다. 그렇지만 이와 유사한 다른 컴퓨터를 가지고 예제를 테스트 하는 것도 좋은 방법이다. 그렇게 하면 당신은 시스템별로 결과의 차이를 알 수 있고 새로운 것을 시험할 수 있기 때문이다. 사실 바로 그것이 해킹이다.
이 책에서는 Gentoo Linux(http://www.gentoo.org)를 이용하여 프로그램 테스트를 했다.
<이 책에서 배우는 것>
* 버퍼 오버플로우와 포맷 스트링을 이용한 프로그램 공격법
* 출력 가능한 ASCII 다형성 셸코드 작성법
* `libc로 리턴하기 기법을 이용하여 스택 실행 방지 프로그램 우회
* 네트워크 트래픽을 리다이렉트하고, 열린 포트 정보를 숨기고, TCP 연결을 하이재킹하기
* 암호화된 802.11b 무선 트래픽을 FMS 공격으로 크랙하기
<부록 CD 내용>
- 소스 코드
2장
overflow.c
vuln.c
exploit.c
vuln2.c
env_exploit.c
getenvaddr.c
heap.c
bss_game.c
fmt_example.c
fmt_vuln.c
dtors_sample.c
hello.asm
shell.asm
shellcode.asm
stackshell.asm
tinyshell.asm
print.asm
printable_exploit.c
print2.asm
only_print.c
cleared_stack.c
3장
arpredirect.pl
hijack_rst.sh
shroud.sh
shroud2.sh
4장
hash.pl
crack.pl
ppm_gen.c
ppm_crack.c
fms.c
- 프로그램
2장
pcalc
NASM
hexedit
Dissembler
3장
dsniff
Nemesis
4장
ffp
John the Ripper
해킹은 창조적 문제 해결을 하는 예술이다. 해킹은 어려운 문제에 대한 새로운 해결책을 찾거나 조잡한 프로그램의 버그를 찾는데 쓰인다.
많은 사람들은 자신이 해커라고 생각하지만 성공적인 해커가 되기 위해 필요한 핵심 기술을 갖고 있는 사람은 거의 없다. 이 책은 진정한 해커가 알아야 할 모든 기술을 설명한다.
다른 여러 해킹 책은 다른 사람이 만든 공격 코드의 세부 내용을 설명하지 않고 단지 사용법만을 알려주지만, 이 책은 해킹의 이론 뿐만 아니라 그 뒤에 존재하는 세부적인 기술을 설명한다. 해킹의 핵심기술과 창조적인 트릭을 배우면서 여러분은 해커 정신을 이해하게 될 것이다. 일단 여러분이 해커처럼 생각할 수 있다면, 직접 해킹 코드를 개발하거나 새로운 기법을 고안할 수 있다. 그리고 여러분의 시스템을 공격하려는 해커를 막을 수도 있다.
이 책은 다양한 해킹 기법을 설명하는데 그 중 대부분은 매우 기술적인 내용을 담고 있다. 이들 해킹 기법에서 쓰이는 핵심 프로그래밍 개념을 소개한다. 일반적인 프로그래밍 지식이 있다면 이 책을 읽는데 확실히 도움이 될 것이다. 여기서 소개한 예제 코드는 Linux를 운영하는 x86 컴퓨터용이다. 그렇지만 이와 유사한 다른 컴퓨터를 가지고 예제를 테스트 하는 것도 좋은 방법이다. 그렇게 하면 당신은 시스템별로 결과의 차이를 알 수 있고 새로운 것을 시험할 수 있기 때문이다. 사실 바로 그것이 해킹이다.
이 책에서는 Gentoo Linux(http://www.gentoo.org)를 이용하여 프로그램 테스트를 했다.
<이 책에서 배우는 것>
* 버퍼 오버플로우와 포맷 스트링을 이용한 프로그램 공격법
* 출력 가능한 ASCII 다형성 셸코드 작성법
* `libc로 리턴하기 기법을 이용하여 스택 실행 방지 프로그램 우회
* 네트워크 트래픽을 리다이렉트하고, 열린 포트 정보를 숨기고, TCP 연결을 하이재킹하기
* 암호화된 802.11b 무선 트래픽을 FMS 공격으로 크랙하기
<부록 CD 내용>
- 소스 코드
2장
overflow.c
vuln.c
exploit.c
vuln2.c
env_exploit.c
getenvaddr.c
heap.c
bss_game.c
fmt_example.c
fmt_vuln.c
dtors_sample.c
hello.asm
shell.asm
shellcode.asm
stackshell.asm
tinyshell.asm
print.asm
printable_exploit.c
print2.asm
only_print.c
cleared_stack.c
3장
arpredirect.pl
hijack_rst.sh
shroud.sh
shroud2.sh
4장
hash.pl
crack.pl
ppm_gen.c
ppm_crack.c
fms.c
- 프로그램
2장
pcalc
NASM
hexedit
Dissembler
3장
dsniff
Nemesis
4장
ffp
John the Ripper
목차
목차
- 0x100 시 작
- 0x200 프로그래밍
- 0x210 프로그래밍이란 무엇인가?
- 0x220 프로그램 공격
- 0x230 일반 공격 기법
- 0x240 다중-사용자 파일 권한
- 0x250 메모리
- 0x251 메모리 선언
- 0x252 널(Null) 바이트 종료
- 0x253 프로그램 메모리 세그먼트
- 0x260 버퍼 오버플로우
- 0x270 스택 오버플로우
- 0x271 공격 코드 없이 공격
- 0x272 환경 변수 이용
- 0x280 힙 / bss 오버플로우
- 0x281 기본 힙 오버플로우
- 0x282 함수 포인터 덮어쓰기
- 0x290 포맷 스트링
- 0x291 포맷 스트링과 printf()
- 0x292 포맷 스트링 취약점
- 0x293 임의의 메모리 주소에서 읽기
- 0x294 임의의 메모리 주소에 쓰기
- 0x295 직접 인자에 접근
- 0x296 소멸자(dtor)를 이용한 우회법
- 0x297 전역 오프셋 테이블(Global Offset Table) 덮어쓰기
- 0x2a0 셸코드 작성법
- 0x2a1 자주 쓰이는 어셈블리 명령
- 0x2a2 리눅스 시스템 콜
- 0x2a3 Hello, World!
- 0x2a4 셸 실행 코드
- 0x2a5 단일 세그먼트에서 처리
- 0x2a6 널(Null) 바이트 제거
- 0x2a7 스택을 이용하여 더 작은 셸코드 만들기
- 0x2a8 출력가능한 ASCII 명령
- 0x2a9 다형성 셸코드
- 0x2aa ASCII 출력 가능한 다형성 셸코드
- 0x2ab Dissembler
- 0x2b0 나 libc로 돌아갈래
- 0x2b1 system()으로 리턴
- 0x2b2 libc 함수 연결
- 0x2b3 래퍼(wrapper) 프로그램 이용
- 0x2b4 libc를 통해 널 바이트 쓰기
- 0x2b5 하나의 호출로 여러 워드에 쓰기
- 0x300네트워킹
- 0x310 네트워킹이란 무엇인가?
- 0x311 OSI 모델
- 0x320 흥미로운 계층들
- 0x321 네트워크 계층
- 0x322 전송(Transport) 계층
- 0x323 데이터-링크 계층
- 0x330 네트워크 스니핑
- 0x331 능동 스니핑
- 0x340 TCP/IP 하이재킹
- 0x341 RST 하이재킹
- 0x350 서비스 거부 / Denial of Service
- 0x351 죽음의 핑 / Ping of Death
- 0x352 티어드랍 / Teardrop
- 0x353 핑 홍수 / Ping Flooding
- 0x354 증폭 공격 / Amplification Attacks
- 0x355 분산 DoS 홍수
- 0x356 SYN 홍수 / SYN Flooding
- 0x360 포트 스캐닝
- 0x361 스텔스 SYN 스캔
- 0x362 FIN, X-mas, Null 스캔
- 0x363 가짜 스캔 패킷 이용
- 0x364 유휴(Idle) 스캐닝
- 0x365 사전(事前) 방어 (Shroud)
- 0x310 네트워킹이란 무엇인가?
- 0x400 암호학
- 0x410 정보 이론 / Information Theory
- 0x411 절대적 보안
- 0x412 원 타임 패드 / One-Time Pads
- 0x413 양자 키(Quantum Key) 분배
- 0x414 계산 불능 보안
- 0x420 알고리즘 실행 시간
- 0x421 점근 표기법 / Asymptotic Notation
- 0x430 대칭 암호 방식
- 0x431 Lov Grover의 양자 검색 알고리즘
- 0x440 비대칭 암호화
- 0x441 RSA
- 0x442 Peter Shor의 양자 인수분해 알고리즘
- 0x450 혼성 암호 / Hybrid Ciphers
- 0x451 Man-in-the-Middle 공격
- 0x452 SSH 프로토콜 호스트 핑거프린트 버전 이용
- 0x453 퍼지 핑거프린트
- 0x460 비밀번호 크래킹
- 0x461 사전 공격 / Dictionary Attacks
- 0x462 전수 조사 공격 / Brute-Force Attacks
- 0x463 해시 룩업(lookup) 테이블
- 0x464 비밀번호 확률 행렬
- 0x470 무선 802.11b 암호화
- 0x471 Wired Equivalent Privacy / WEP
- 0x472 RC4 스트림 암호 방식
- 0x480 WEP 공격
- 0x481 오프라인 전수 조사 공격
- 0x482 키스트림 재사용
- 0x483 IV-기반 복호화 사전 테이블
- 0x484 IP 리다이렉션
- 0x485 Fluhrer, Mantin, Shamir (FMS) 공격
- 0x410 정보 이론 / Information Theory