서브메뉴
검색
본문
Powered by NAVER OpenAPI
-
-
해킹, 파괴의 광학
저자 : 김성우
출판사 : 와이미디어
출판년 : 2004
정가 : 17000, ISBN : 8990104068
책소개
국내 프로그래밍 잡지의 대표격인 월간 「마이크로소프트웨어」에 수년간 기고한 보안과 해킹 테크니컬 컬럼을 기본 뼈대로 하여 해킹이 되는 근본 바탕을 이해하고, 어떤 원리로 새로운 취약점이 찾아지는 원리와 어떻게 찾아낼 수 있는지를 필자가 고안한 기술발전 트리 이론으로 설명하고 있다.
총 4부로 이루어져 있다. 그 중 1부는 해킹에 대한 근원적인 고찰을 했다. 해킹을 정의하고, 어떻게 약점을 찾아낼 것인지 그리고 그 법칙 아래 흘러온 역사를 집어볼 것이고 그 일련의 흐름도 함께 집어보았다. 2부는 윈도우에 관한 고찰이다. 비록 윈도우라 칭했지만, 오히려 자바나 RAD 툴을 사용하는 프로그래머들이 읽었으면 하는 바램도 크다. 윈도우가 지금의 모습을 갖추게 될 수밖에 없는 필연적인 상황을 고찰해 보았으며, 이 파트를 통해 윈도우가 본격적으로 기지개를 펴면서부터 나왔던 가장 위협적이었던 해킹 수단에 대한 철저한 고증과 응용을 전수 받을 수 있을 것이다. 3부은 네트워크에 관한 내용이다. 전화와 인터넷. 거기에 붙을 수 있는 악의를 집어낸다. 그리고 바로 사용할 수 있고 확장 가능한 BO(Back Orifice)를 공개하고 있다. 4부은 수학이다. 보안에 암호화, 서명, 인증 등에 대해 프로그래머의 입장에서 수학적 고찰을 시도하였다.
목차
1부 Before The Hacking
1장 / 근원으로(Return to the Root)
근원으로 가야 하는 이유
작곡론(作曲論)과 화성론(和聲論)
기술 발전 트리 1, 2
기술 발전 트리 3,4,5
해킹은 어느 나라 왕인고?
해킹 뿌리를 찾아서
연속적 세계는 언제
해킹 = 해커가 원하는 곳을 Fetch하게 함
기술의 전이
해킹의 역사
AC(After Computer) 58년
마구 자르고 잘게 자르다(~1950년대)
좀 더 우아하고 빠르게(1960대)
누구나 공짜로(1970대)
박살내기(1980대)
훔치고 엿보기(?1990대 중반)
혼돈의 아수라(~현재)
파운데이션(Foundation, 현재?)
2부 윈도우 시스템 프로그래밍
2장 / 윈도우 탄생, 그리고 해킹
동시 실행성
함수 실행
멀티태스킹, 예를 지키자
핸들
메시지
메모리
메모리의 CPU의 관점
COM과 DLL
윈도우 프로그래밍
소스
윈도우에 시동을 걸어 보자
메시지를 받아보자
프로시저
3장 / 메시지 후킹
솔라리스 root 암호 알아내기
윈도우를 구성하는 3대 DLL
메시지(Message)
메시지 훅
스누퍼
바이러스는 실체를 보여주지 않는다
3일 만에 100개의 ID와 패스워드를 훔치다
비밀번호의 25%가 4자리 숫자
창이 있으면 방패가 있는 법
4장 / PE(Portable Executable) 파일 포맷
PE 파일의 특징
IMAGE_NT_HEADERS
IMAGE_FILE_HEADER
섹션 테이블(The Section Table)
DLL사용
PE Analyzer
main
PEAnalyzer
ParsePE
ParseImports
ParseExports
5장 / 어셈강의
어셈블리어
레지스터
함수 호출 1
함수 호출 2
조건문
반복문
6장 / 네 이웃의 메모리를 탐하지 말라-1
안정성과 독립성의 관계
공유 영역이 어딘지 외우자
메모리 맵
디버깅 API
브레이크 포인트
DLL을 다른 프로세스로
실행 엔트리 포인트 가져오기
7장 / 네 이웃의 메모리를 탐하지 말라-2
DLL내의 함수 후킹
실제 구현해 보자
윈도우 9x의 함수 후킹
후킹 피하기
익스포트되지 않은 함수를 쓸 수 있을까?
함수 파라미터 후킹
양자컴퓨터보다 암호를 빨리 푸는 알고리즘
8장 / 버퍼 오버플로우
버퍼 오버플로우와 해킹
스택(Stack)
함수에 스택을 이용한 파라미터를 넘기기
C 컴파일러를 이용한 방법
파스칼 방식
__fastcall을 이용한 방식
왜 윈도우는 파스칼 방식을 택했을까?
문자열 처리 함수들
공격 개시!
미션 1 : 버퍼 사이즈를 알아내라
미션 2 : ret 주소값을 찾아라
미션 3 : 쉘코드를 삽입하라
미션 4 : 쉘 코드를 디자인하라
실제 쉘코드
변수 할당 및 구조체 정의
함수 주소 가져오기
통신환경 설정
9장 / 바이러스
가장 아름다운 코드
바이러스의 성질
DOS로 시작하자
겹쳐쓰기 방지
에러 핸들링
파일 감염
스택 프레임
GetProcAddress와 LoadLibrary
NT와 2000에서도 자유를
3부 네트워크
10장 / 통신 이해하기
소리굽쇠로 교환기 잠재우기
프리킹의 고전
인터넷폰과 아날로그 전화
인터넷폰, 장점 많지만 아직 허점도 많아
발신자 추적
인터넷폰의 기초 H.323 첫걸음
H.323 구성 요소들
자바 애플릿 기반 인터넷폰의 허점
11장 / 서비스 거부
윈도우 해킹 시작
윈도우 핵 먹이기, Winnuke
OOB
윈도우를 파란나라로, Teardrop 공격
Raw Socket
IP 패킷의 길이 관리
또 한번 눈물을, New TearDrop
죽음의 핑, Jolt/Sping 공격
시스템 속도가 갑자기 느려지는 Land 공격
대책 없는 공격, SYNFlood
HTTP DoS 공격
Http에 대해 관대한 방화벽
해킹 차단을 알아볼 수 있는 유용한 유틸리티
12장 / 방화벽
스크리닝 라우터(Screening Router)
Bastion 호스트(Bastion Host)
스크린된 호스트 게이트웨이(Screened Host Gateway)
방화벽 공격
IDS
13장 / 백오리피스
BO, BO
Netstat.exe 없으면 BO 감염 가능성 높아
패킷 정의
서버
비동기 윈도우 소켓
UDP
TCP
클라이언트에서 서버로 파일복사하기
서버에서 클라이언트로 파일복사하기
서버의 파일 리스트 보내기
4부 수학
14장 / 암호학
암호학 이야기
기원전 2500년에 등장한 최초의 암호
시저의 알파벳 밀어내기
통계적인 접근
독일과 영국의 ?수수께끼? 풀이 전쟁
애니악, 세계 최초의 컴퓨터 아니다
시저의 알파벳 바꾸기에 바탕을 둔 이니그마
미국의 표준 암호화 시스템, DES
DES 알고리즘도 한물 갔나!
공개키 암호화 알고리즘
디지털 서명
해쉬함수
수학 암호학
RSA
정수론
RSA
소인수 분해
양자 컴퓨터
DLP(Discrete Logarithm Problem)
DLP
CD키
15장 / 인증
인증이야기
암호키는 직접 보내지 말라
암호키에서 진보한 고난도 인증의 세계
디퓌-헬만의 키 교환
DLP 방법 적용
키 관리의 일원화, KDC
Needham-Schroeder 인증
윈도우 2000의 커버러스 인증
윈도우 네트워크 패킷 엿보기
소켓 후킹
고난도 기술이 필요한 TCP 공격
16장 / Crypto API
Crypto API
암호를 만들고 푸는 키
공개키의 단위, 키 컨테이너
실제 암호화 함수 적용
키 컨테이너의 접근권한 얻기
키 가져오기
암호화와 복호화하기
서명과 증명하기