이미지 검색을 사용해 보세요
검색창 이전화면 이전화면
최근 검색어
인기 검색어

소득공제
소프트웨어 보안
코드 깨부수기
Greg Hoglund, Gary McGraw 공저 / 류정옥 등역
정보문화사 2004.09.15.
가격
22,000원
10 19,800
YES포인트?
1,100원 (5%)
5만원 이상 구매 시 2천원 추가 적립
결제혜택
카드/간편결제 혜택을 확인하세요

이미 소장하고 있다면 판매해 보세요.

  •  해외배송 가능?
  •  문화비소득공제 가능

책소개

목차

제1장 소프트웨어 - 문제의 근원

간단하게 보는 소프트웨어의 역사
소프트웨어와 정보 스파이
디지털 비밀 행위

나쁜 소프트웨어는 어디에나 있다
NASA 화성 착륙기
덴버 공항 수화물 핸들러
MV-22 오스프리
US 비세네스
Microsoft와 Love 버그

문제 발생의 필수품
복잡도
더 많은 코드 수, 더 많은 버그
확장성
연결성
결국

소프트웨어의 미래
가까운 미래 : 2004
조금 더 먼 미래 : 2005-2007
먼 미래 : 2008-2010
드러나고 있는 열 가지 사실

소프트웨어 보안이란 무엇인가?
결론


제2장 공격 유형

분류법
버그
결함
취약점
설계 취약점

개방 시스템 살펴보기
위협
잠재적 손실
노출과 잠재력
실질적 위협

소프트웨어를 깨는 방법들
공격자의 관점
왜 사용자를 믿으면 안 되는가?
자물쇠 따개같이
간단한 예제

공격 유형 : 재앙의 청사진
소프트웨어 깨기, 공격 그리고 공격자
공격 유형
주입 벡터
활성화 영역
출력 이벤트
피드백 이벤트

소프트웨어 깨기 예제 : Microsoft의 망가진 C++ 컴파일러
공격의 기술적 측면
StackGuard의 Microsoft 포트에 대해 알아보기
Microsoft가 추가한 보안 특성 통과하기
해결책
추억의 소프트웨어 깨기

공격 유형 적용하기
네트워크 스캐닝
OS 스택 식별
포트 스캔
Traceroute와 영역 전송
목표 구성요소
공격 유형 고르기
주어진 환경에서 결함 증폭시키기
간접적으로 접근하기
백도어 심기

공격 유형 상자들
공격 유형 : OS 자원을 사용할 수 있는 프로그램을 선택하라

결론


제3장 리버스 엔지니어링과 프로그램 이해하기

논리의 집으로 들어가기
리버스 엔지니어링
왜 리버스 엔지니어링이 필요한가?

리버스 엔지니어링은 불법인가?

리버스 엔지니어링 도구와 개념
디버거
결함 주입 도구
역어셈블러
역컴파일러

리버스 엔지니어링 접근 방법
화이트박스 분석
블랙박스 분석
그레이박스 분석
그레이박스 방식으로 Microsoft SQL 서버의 결함 찾기

변환기의 방법
입력 추적하기
버전간의 차이 훔쳐보기
코드 영향 범위 이용하기
커널에 접근하기
공유 버퍼에서 데이터 빼돌리기
접근 요구 조건의 실수 감사하기
내가 만든 API 사용하기

대화형 역어셈블러(IDA) 플러그인 사용하기

소프트웨어 역컴파일과 역어셈블리하기

실제로 역컴파일 해보기 : helpctr.exe 역변환하기
버그 보고
디버그 로그

대량의 취약점을 자동으로 감사하기
IDA-pro를 사용하여 자동으로 분석하기

자신만의 크랙 도구 만들기
x86 도구
중단점에서
메모리에 읽고 쓰기
다중쓰레드 프로그램 디버깅
쓰레드나 프로세스 열거
한 단계씩 실행
패치하기
결함 주입
프로세스 순간 포착
기계어 역어셈블리

기본 코드 영향 범위 측정 툴 만들기
boron 태그 조사하기

결론


제4장 서버 소프트웨어 깨기

신뢰하고 있는 입력 문제
공격 유형 : 클라이언트 숨기기

권한 상승 문제
프로세스-퍼미션은 신뢰와 같다
관리자 권한을 요구하지 않으면 모조리 깨진다!
공격 유형 : OS 자원을 사용할 수 있는 프로그램을 선택하라
신뢰할 수 없는 곳에서 데이터를 읽는 권한이 상승되는 프로세스
공격 유형 : 상승된 권한으로 명령을 수행하기 위해 사용자가 제공하는 구성 파일을 사용하라
권한 상승된 구성요소를 사용하는 프로세스

주입 지점 찾기
입력 파일 지켜보기
공격 유형 : 구성 파일 탐색 위치 사용하기

입력 경로 추적하기
솔라리스 SPARC 바이너리에서 GDB와 IDA-pro 같이 사용하기
중단점과 표현식 설정하기
IDA에서 실시간 메모리 주소 매핑하기
실행중인 프로세스에 붙이기
솔라리스에서 Truss 사용하여 목표 프로그램을 모델

구성 파일 사용하여 신뢰관계 깨기
공격 유형 : 실행 파일에 바로 접근하기
직접 실행할 수 있는 파일 감사하기
현재 실행 디렉토리 알아보기(CWD)
웹 서버가 cgi 프로그램을 실행하지 않는다면?
공격 유형 : 스크립트에 포함된 스크립트
실행할 수 없는 파일들은 사용할 수 없을까?
공격 유형 : 실행할 수 없는 파일에서 실행 가능 코드 부추기기
정책 가지고 놀기

서버 소프트웨어를 위한 특별한 기술과 공격들
기술 : 쉘 명령어 주입
공격 유형 : 인자 주입
공격 유형 : 명령어 구분문자
공격 유형 : 다중 파서와 이중 이스케이프 문자
기술 : 파이프 배관, 포트 그리고 퍼미션
기술 : 파일 시스템 탐색하기
공격 유형 : 파일 시스템 호출에 사용자가 입력한 변수 전달
공격 유형 : 후위 NULL 종결자
공격 유형 : 후위, NULL 종결 그리고 백슬래시
공격 유형 : 상대 경로로 탐색하기
기술 : 환경 변수 조작
공격 유형 : 클라이언트가 조작할 수 있는 환경 변수
기술 : 외부 변수 활용하기
공격 유형 : 사용자가 입력하는 전역 변수(DEBUG=1, PHP 전역 변수, 그 외 다수)
기술 : 조악한 세션 승인의 결함 증폭시키기
공격 유형 : 세션 ID, 자원 ID 그리고 눈 먼 신뢰
기술 : 세션 ID에게 폭력 휘두르기
기술 : 승인을 얻는 여러 가지 경로
기술 : 오류 검사 코드 무력화하기

결론


제5장 클라이언트 소프트웨어 깨기

공격 대상으로서의 클라이언트 소프트웨어
서버가 클라이언트를 조정한다
소프트웨어 꿀단지

대역내 신호
오래된(그러나 아직도 영향력 있는) 역사
공격 유형 : 아날로그 대역내 스위칭 신호
대역내 신호의 기본 사용
대역내 신호로 프린터 가지고 놀기
리눅스에 대역내 터미널 문자 주입하기
공격 유형 일부 : 터미널 기기 조작하기
반사 문제

크로스 사이트 스크립팅(XSS)
신뢰받고 있는 사이트에서 반사 사용하기
공격 유형 : 간단한 스크립트 주입
공격 유형 : 스크립트 요소가 아닌 곳에 스크립트 끼워 넣기
공격 유형 : HTTP 헤더로 하는 XSS
공격 유형 : HTTP 질의 문자열
공격 유형 : 사용자 조종 파일 이름

클라이언트 스크립트와 악의적 코드
취약한 로컬 호출 감사하기
웹 브라우저와 ActiveX
공격 유형 : URL을 기다리는 함수에 로컬 파일 이름 넘겨주기
이메일 주입
공격 유형 : 이메일 헤더 속 메타 문자

컨텐츠 기반 공격
공격 유형 : 컨텐츠를 기반으로 파일 시스템 함수 주입

역류 공격 : 클라이언트측 버퍼 오버플로우
공격 유형 : 클라이언트측 주입, 버퍼 오버플로우

결론


제6장 교활한(악의적) 입력

방어자의 딜레마
필터
통신 시스템

침입 감지(?)
서명 기반 대 변형 기반 IDS
리액티브 가입 서비스로써의 IDS
IDS에서 인코딩 방식을 바꿈으로써 오는 효과

분할 분석
윈도우를 위한 APISPY 다시 보기
빨간 칠하기(Red Pointing)

코드 추적
취약한 곳에서 역추적
막다른 골목
실시간 추적
빠른 중단점
버퍼 추적
Leapfrogging
메모리 페이지 중단점
boron 태그

역파서 코드
문자 변환
바이트 연산
포인터 연산
NULL 종결자

예제 : I-Planet 서버 6.0 입구부터 시작해서 역변환해보자

잘못된 분류
공격 유형 : 웹 서버 잘못 분류하도록 만들기

"동일한" 요구 만들기
API 계층 매핑하기
유령 문자
공격 유형 : 유령 문자 만들도록 인코딩하기
동일한 메타 문자
공격 유형 : 슬래시 넣어서 다르게 인코딩하기
메타 문자 이스케이프 시키기
공격 유형 : 이스케이프된 슬래시 넣어서 다르게 인코딩하기
문자 변환
공격 유형 : 유니코드 인코딩
공격 유형 : UTF-8 인코딩
공격 유형 : URL 인코딩
공격 유형 : IP 주소 다르게 쓰기
혼합해서 공격하기
공격 유형 : 슬래시와 URL 인코딩 섞어쓰기

감사 프로그램 망가뜨리기
공격 유형 : 웹 로그

결론


제7장 버퍼 오버플로우

버퍼 오버플로우 101
스택 후려치기(그냥 재미로, 혹은 무언가를 위해)
손상된 상태

주입 벡터 : 또다시 입력
어디서 주입 벡터가 끝나고 페이로드가 시작되는가?
정확한 코드 주소 고르기
높은 위치와 낮은 위치 주소
빅 엔디언과 리틀 엔디언
레지스터 사용하기
메모리에 있던 코드나 데이터 블록 사용하기

버퍼 오버플로우와 내장형 시스템
군사용과 상업용 내장형 시스템

데이터베이스 버퍼 오버플로우
저장 프로시저
명령어라인 응용
데이터베이스의 클라이언트

버퍼 오버플로우와 자바?!
자바와 C/C++ 같이 쓰기
저장 프로시저와 DLL

컨텐츠 기반 버퍼 오버플로우
공격 유형 : 바이너리 파일 오버플로우
공격 유형 : 변수와 태그 오버플로우
공격 유형 : 심볼릭 링크 오버플로우
공격 유형 : MIME 변환
공격 유형 : HTTP 쿠키

버퍼 오버플로우로 감사 파일 잘라내기와 필터 무력화
공격 유형 : 버퍼 오버플로우로 필터 무력화

환경 변수로 오버플로우 일으키기
공격 유형 : 환경 변수로 버퍼 오버플로우
공격 유형 : API 호출에서 버퍼 오버플로우
공격 유형 : 로컬 명령어라인 유틸리티에서 버퍼 오버플로우

다중 연산 문제
공격 유형 : 파라미터 확장

버퍼 오버플로우 날만한 곳 찾기
예외 처리는 오류를 숨기고 있다
역어셈블러 사용하기

스택 오버플로우
고정 크기 버퍼
알아서 NULL로 종결시키지 않는 함수
단일 바이트 초과 문제를 일으키는 함수
예외 처리기 프레임 덮어쓰기

메모리 관리할 때 계산 오류 내기
음수는 큰 수와 같다
부호있는/부호없는 수 불일치
부호있는 수와 메모리 관리

포맷 문자열 취약점
메모리에 있는 아무 데이터나 출력하기
코드 문제점 검출하기
공격 유형 : syslog()의 문자열 포맷 오버플로우

힙 오버플로우
Malloc과 힙

버퍼 오버플로우와 C++
Vtable

페이로드
자신만의 베어링 갖기
페이로드 크기
하드 코드 함수 호출 사용하기
동적 점프 테이블 사용하기
데이터 영역 위치시키기
XOR 보호
체크섬/해시 읽어오기

RISC 구조에서 페이로드
“분기 지연”인가 “지연 슬롯”인가
MIPS 기반 페이로드 만들기
MIPS 명령어
베어링 만들기
MIPS 코드에서 NULL 바이트 없애기
MIPS에서 syscall
SPARC 페이로드 만들기
SPARC 레지스터 윈도우
SPARC 스택 살펴보기
SPARC의 함수 호출 내포 관계
PA-RISC 페이로드 만들기
PA-RISC 스택 살펴보기
HPUX PA-RISC에서 스택 오버플로우
PA-RISC에서 공간 분기(inter-space branching)
공간 트램펄린
베어링 만들기
HPUX에서 스스로 해독되는 페이로드
AIX/PowerPC 페이로드 만들기
베어링 만들기
PowerPC 쉘 코드를 위한 공격용 장갑
NULL 문자 없애기

다중 플랫폼 페이로드
다중 플랫폼 nop 썰매

함수를 보호하기 위한 프롤로그/에필로그 코드
(StackGuard로 알려진) 카나리아 값 무력화시키기
실행할 수 없는 스택 무력화시키기

결론


제8장 루트킷

파괴 프로그램
루트킷이란?
커널 루트킷이란?
커널 루트킷과 신뢰하는 연산

간단한 Windows XP 커널 루트킷
루트킷 만들기
검사용 빌드 환경
루트킷 소스의 파일
빌드하기
커널 드라이버
드라이버의 기본 구조
프로그램이 언제 드라이버를 사용하는가?
삭제할 수 있는 드라이버 만들기
드라이버 등록하기
SystemLoadAndCallImage 사용하기

콜 후킹
프로세스 숨기기
시스템 호출 가로채기
기본적인 콜 후킹 구조
프로세스 기록 없애기
프로세스 대신 주입하기

트로이 목마 실행 가능 파일로 리다이렉션
리다이렉션과 Tripwire 문제
리다이렉션 드라이버

파일과 디렉토리 숨기기

바이너리 코드 패치
국소 패치
모든 보안을 해제하는 NT 커널 패치

하드웨어 바이러스
하드웨어 메모리에서 읽고 쓰기
예제 : 키보드 하드웨어에서 읽고 쓰기
EEPROM에서 읽고 쓰기
CIH
EEPROM과 시간 맞추기
이더넷 EEPROM
직렬 EEPROM vs 병렬 EEPROM
하드웨어 굽기
제조사
CFI로 칩 검출
예제 : 플래쉬 RAM 칩 검출
ID 모드나 JEDEC ID로 칩 검출

하위 레벨 디스크 접근
MBR에 쓰고 읽기
CD-ROM 이미지 감염시키기

드라이버에 네트워크 지원 덧붙이기
NDIS 라이브러리 사용하기
무차별 모드로 인터페이스 놓기
적절한 네트워크 카드 찾기
보안을 위해 boron 태그 사용하기
대화형 쉘 붙이기

인터럽트
IRQ 구조
IDT 가로채기
PIC의 신비

키 로깅
리눅스 키 로거
Windows NT/2000/XP 키 로거
키보드 제어 칩

고급 루트킷 토픽
루트킷 디버거처럼 쓰기
Windows 시스템 파일 보호 무력화시키기
물리 메모리에 직접 쓰기
커널 버퍼 오버플로우
커널 이미지 감염시키기
실행 파일 리다이렉션
루트킷 찾아내기

결론

품목정보

발행일
2004년 09월 15일
쪽수, 무게, 크기
480쪽 | 1103g | 크기확인중
ISBN13
9788956742137
리뷰 총점 5.0

첫번째 한줄평을 남겨주세요.

사락 별점0

혜택 및 유의사항

첫번째 별점을 남겨주세요.

첫번째 밑줄을 남겨주세요.