웹 애플리케이션 해킹
: 취약점을 이용한 공격과 방어의 기술
저자: 마리오 하이더리히 외3인
역자: 손형근, 손유승
출판사: 비제이퍼블릭
출간일: 2012년 9월 11일 (화)
정가: 24,000원
페이지: 328p
판형: 190 x 245
ISBN: 978-89-94774-21-3 (93560)
원서정보: Web Application Obfuscation
책 소개
‘/WAFs…Evasion..Filters//alert(/Obfuscation/)-’
공격자들은 보안조치를 우회하고 있다. 위협을 막을 수 있는 방법을 찾아라!
“웹 어플리케이션에 저장된 데이터가 비즈니스에 있어서 그 중요성이 점차적으로 증가함에 따라, 그들에 대한 공격은 점점 더 복잡해지고 있다. 여러분이 ‘or 1=1—‘를 그 이상으로 이해하기 원한다면, 이 책은 공격과 방어 모두를 위해 중요한 필터와 감지를 우회하는 데 필요한 지식을 제공한다.”
---ANDREW WAITE, SECURITY RESEARCHER, INFOSANITY RESEARCH
매일 수백만의 사용자들이 웹 어플리케이션을 사용하고 있다. 그리고 바로 그 사실이 공격자들에게 가장 인기 있는 벡터 중 하나가 되는 이유다. 코드 난독화는 해커가 하나의 공격으로 보안 조치수단을 회피할 수 있는 수백 가지의 변종을 만들도록 허용해왔다.
《웹 애플리케이션 해킹》은 독자들이 보안 시스템의 결점을 이해할 수 있도록 하면서 일반적인 웹 인프라와 공격자 관점에서 보안 통제를 살펴본다. 공격자가 각기 다른 유형의 보안 통제를 어떻게 우회하고 바로 이러한 보안 통제가 어떻게 새로운 유형의 취약점으로 적용되는지 살펴보며, 일반적인 위험을 막기 위해 방어를 강화할 수 있는 방법을 찾아보자.
l IDS/IPS와 같은 보안 툴을 살펴본다. 이들은 민감한 데이터와 자산을 보호해주는 유일한 시스템 중 하나다.
l 공격자 관점에서 웹 어플리케이션 취약점을 평가하고 이런 시스템이 어떻게 새로운 유형의 취약점으로 시작되는가를 설명한다.
l 브라우저 특징에 대한 정보, 크로스 사이트 스크립팅(XSS), SQL 인젝션 등에 대한 방어를 위해 추가할 수 있는 새로운 공격과 문법 트릭을 포함하여 데이터를 안전하게 보호하는 방법을 가르쳐준다.
독자대상
초중급
저자소개
마리오 하이더리히
독일 쾰른 지역 출신의 웹 애플리케이션 개발과 보안 분야와 관련된 프리랜서이자 기업가다. 그는 현재 보훔(독일 북서부)에 있는 루트대학에서 박사 학위 코스에 있으며 여러 가지 프로젝트에 참여하고 있다. 그는 헨센의 프리드버그에 있는 응용과학대학에서 언론정보학 학위를 취득하였고 개발자와 보안 컨설턴트로 독일을 비롯해 세계 곳곳의 글로벌 회사에서 일한 경험이 있다. 웹 애플리케이션 보안에 관한 도서의 저자이자 PHPIDS(PHP 침입 탐지 시스템)을 위한 선임개발자이며, 세계 여러 나라를 다니며 웹 보안을 가르치고 여러 보안 컨퍼런스에서 강연을 하고 있다. 그는 클라이언트 측면의 공격과 방어, 특히 마크업(Markup), CSS, JavaScript에 관심이 많다.
에두아르도 알베르토 벨라 나바(ASS, 애플리케이션 보안 스페셜리스트)
정보보안 연구원으로서 구글에서 일하고 있다. 그는 보안문제들에 대해 연구하고 그것에 대한 해결책을 제시함으로써 구글과 인터넷의 보안문제를 개선하는 일을 하고 있다. 주요 관심사는 웹 애플리케이션 보안과 브라우저/플러그인에 대한 보안이다. 알리바바 클라우드 컴퓨팅과 Hi5 네트웍스에서 일한 경험이 있고, 지금은 세계 여러 나라의 보안 컨퍼런스에서 웹 보안에 대해 강연도 하고 있다.
가레스 헤이즈
영국에서 주로 웹 보안 계약 업무를 하고 있으며, 때때로 웹 개발 프로젝트를 수행하고 있다. 그는 마이크로소프트 블루햇, 컨피던스 폴란드와 OWASP 컨퍼런스에서 강연을 하고 있으며, Hackvertor, JSReg, CSSReg, HTMLReg와 같은 여러 가지 웹 기반도구와 sandbox의 개발자다.
데이비드 린지
금융/의료 분야에서 중요한 애플리케이션을 보호하는 업계 최고의 소프트웨어 회사인 Cigital Inc.의 선임 보안컨설턴트다. 그는 침투 테스트, 구조적 위험분석, 소스코드 재검토, 보안교육 등을 통해 전문적인 취약점 평가 및 그에 대한 지원을 하고 있다. 그는 새로운 표준, 프레임워크 및 구조와 관련하여 최근에 발생하고 있는 보안이슈에 관심이 많으며, 웹 애플리케이션 보안 취약점을 연구하고 있다. 그는 과거 몇 년 동안 최고 이슈가 된 다수의 보안사건에 대하여 마이크로소프트 블루햇, 블랙햇과 OWASP 등의 여러 학회에서 강연을 해오고 있다. 2005년 유타대학에서 수학과 석사학위를 받았으며, 아내 티나, 딸 리디아와 함께 버지니아의 애쉬번에서 살고 있다.
역자소개
손형근
(現) (사)한국CISSP협회 이사 / 프로젝트위원회
(現) (사)한국사이버포렌식전문가협회 교육이사
(現) 동국대학교 국제정보대학원 정보보호학과 사이버포렌식 석사과정
(現) SK Infosec 관제사업본부 SK보안관제팀
(前) (재)다산인재개발원 정보보호전문가과정 강사
(前) 고려사이버대학교 사이버포렌식개론 강사
보유 자격
CCFP(사이버포렌식 조사전문가)
CISA(국제공인 정보시스템 감사사)
CISSP(국제공인 정보시스템 보안전문가)
EnCE(GSI 공인 포렌식 조사전문가)
MCSA(마이크로소프트 공인 시스템 관리자)
MCSE(마이크로소프트 공인 시스템 엔지니어)
MCDBA(마이크로소프트 공인 데이터베이스 관리자)
MCTS(마이크로소프트 공인 Technology Specialist)
MCSA-Security(마이크로소프트 공인 시스템 관리자: Security)
MCSE-Security(마이크로소프트 공인 시스템 엔지니어: Security)
현재 SK Infosec에 재직 중이며, (사)한국CISSP협회에서 보안연구를 하고 있다. 정보보호 전문 분야는 보안정책 및 위험관리, 모의해킹, 취약점 진단, 정보보호관리체계, 디지털 포렌식 분야이고 (ISC)2 CISSP Korea Chapter이면서 국내 정보보호 전문가 지성집단인 (사)한국CISSP협회에서 보안연구프로젝트위원회 이사 직책을 맡고 있다.
동국대학교 국제정보대학원 석사과정에서 디지털 포렌식의 전문 분야를 연구하고 있으며, 포렌식의 전반적인 절차와 기술적 포렌식, 특히 모바일 포렌식, 클라우드 환경에서의 포렌식 조사 및 활성데이터 수집방법, 디지털 포렌식을 활용한 CERT 모델연구 등 포렌식에 관한 연구를 계속해서 하고 있다.
손유승
(現) 국방부
(前) (재)그래픽스연구원 정보보안팀장
(前) 포항공대 정보통신연구소 연구원
보유 자격
CISSP(국제공인 정보시스템 보안전문가)
ISMS(정보보호관리체계 인증심사원)
PIMS(개인정보보호관리체계 인증심사원)
현재 국방부에서 정보보호 업무를 수행하고 있으며, 아울러 수원대학교 컴퓨터학과 박사과정에 웹 응용프로그램 관련 정보보호 분야를 심도 있게 연구하고 있는 보안전문가로서 국가의 정보보호발전에 일익을 담당하고 있다.
목차
Chapter 1. 서론
독자층
기본 필터링
정규 표현식
책의 구성
최신 정보
요약
Chapter 2. HTML
역사와 개요
기본적인 마크업 난독화
고급 수준 마크업 난독화
URI
HTML 이외 기술
요약
Chapter 3. JavaScript와 VBScript
문법
인코딩
JavaScript 변수
VBScript
JScript
E4X
요약
Chapter 4. 특수문자로 작성한 자바스크립트
특수문자로 작성한 자바스크립트
사용 사례
요약
Chapter 5. CSS
문법
알고리즘
공격
요약
Chapter 6. PHP
역사와 개요
PHP 난독화: 난독화기법
요약
Chapter 7. SQL
SQL: 간략한 소개
요약
Chapter 8. 웹 애플리케이션 방화벽과 클라이언트 측 필터
웹 방화벽 우회
클라이언트 측 필터
요약
Chapter 9. 공격과 우회 완화조치
코드 인젝션에 대한 보호
DOM 보호
요약
Chapter 10. 미래의 개발 환경
현 애플리케이션에 미치는 영향
HTML5
그 밖의 확장자
플러그-인
요약
출판사 리뷰
인터넷은 하루가 다르게 확장되고 있다. 온도조절장치와 텔레비전 같은 장치는 이미 인터넷 연결을 포함하고 있다. 독서나 사교모임 같은 오프라인 활동도 점차 온라인 활동으로 대체되고 있는데, 이는 장치, 사람, 기타 애플리케이션에 필요한 어느 자원에나 연결을 가능하게 해주는 수많은 웹 애플리케이션 덕분이다. 이러한 웹 애플리케이션으로의 접근은 정확성에서 필요성으로 빠르게 변해가고 있다. 온라인 소매상점에서 도서를 구매하는 것과 같이 단순한 거래의 보안측면을 살펴보자. 소매상인의 웹 사이트에서 구매할 도서를 선택하고 나서 쇼핑카트(일명: 장바구니) 애플리케이션에 본인인증을 하기 위해 패스워드를 입력하고 들어가게 된다. 이때 구매자와 서버 간의 네트워크 트래픽은 구매자의 패스워드와 도서 지불비용으로 사용된 신용카드 번호의 기밀성을 보증하기 위해 암호화된다. 구매자는 본인의 카드가 도난당한 카드가 아니라는 것을 보증하기 위해 구매자 본인에 관한 자세한 정보와 카드정보를 제공한다.
이러한 거래의 각 단계는 거래의 기밀성을 보증하기 위해 보안조치를 포함하고 있다. 비록 이러한 조치가 최종 사용자들(구매자들)에게 직접적으로 보일 수는 있지만, 그 소매상인은 애플리케이션과 구매자들을 보호하기 위해 여러 가지 가능한 보안조치 수단이 필요하게 된다. 예를 들어, 웹 애플리케이션은 악의적인 데이터를 포함하지 않도록 사용자에게서 오는 데이터의 유효성을 검사한다. 공격자가 데이터베이스에 악의적인 쿼리요청을 보내지 못하도록 데이터베이스에 대한 쿼리요청을 파라미터화할 수도 있다. 그리고 서버에 들어오는 요청이 악의적으로 시작되지 않았다는 것을 보증하기 위해 거래토큰이 사용될 수도 있다.
안타깝게도, 웹 애플리케이션 보호에 사용되고 있는 많은 보안조치는 대부분 적절하지 못하다. 다양한 보안조치 수단의 약점을 파악할 수 있는 공격자는 애플리케이션을 손상시키기 위해 한 가지나 다른 여러 가지 방법을 사용해 대부분 약점을 악용하는 방법을 찾을 수 있다. 이 책의 목적은 여러 가지 유형의 웹 애플리케이션 보안조치 수단을 재조명해 보는 것이다. 특히, 악성 웹 공격을 난독화하는 데 사용되는 대체로 잘 알려지지 않은 난독화기법(해독하기 어려운 난독화기법)에 초점을 맞출 것이다. 이런 기법들이 웹 공격에 적극적으로 사용되기 시작하고 있기 때문에 그런 공격기법들을 집중 조명함으로써 좀 더 나은 방어를 할 수 있을 것이다.
독자층
이 책에 포함된 정보는 매우 기술적이다. 그럼에도 책을 쓴 의도를 쉽게 이해하고 접근할 수 있는 정보를 제공하려고 노력했다. 침투테스터, 보안전문가, 보안연구원, 보안사고 조치자, 품질보증 테스터, 애플리케이션 개발자, 애플리케이션 설계자 모두에게 이 책의 내용이 크게 도움이 될 것이라고 생각한다. 추가적으로 모든 분야의 정보보안 전문가와 소프트웨어 개발 전문가들도 복잡한 웹 공격기법 성향에 대해 가치 있는 통찰력을 얻게 될 것이다.
이 책은 여러분이 웹의 난독화기법과 진보된 웹 공격을 이해하는 데 도움을 줄 것이다. 특히, 공격자들이 입력 필터, 출력 인코딩 루틴, 웹 애플리케이션 방화벽, 웹 기반 침입탐지와 예방시스템과 같은 보안조치 수단을 어떻게 우회하는지 알게 될 것이다. 또한 그러한 공격에 영향을 받지 않는 보다 안전한 애플리케이션을 빌드할 수 있는 보안기술과 일반원리를 배우게 될 것이다.
이 책의 구성
이 책은 1장을 제외하면 9장으로 나누어진다. 먼저, HTML, JavaScript, CSS라는 세 가지 현대 웹 아키텍처를 토대로 자세하게 살펴볼 것이다. 저자들은 각각 풍부하고 이해하기 어려운 특징들을 나누기 전에 이들 각 프로그램 언어에 대해 전체적으로 소개할 것이다. 다음에는 서버 측 웹 개발의 두 가지 요소인 SQL, PHP에 대해 논의하고 이어서 난독화된 공격을 보호하기 위해 할 수 있는 보안 완화조치에 대해 논의할 것이다. 그 다음에는 좀 더 발전한 웹 공격을 성공적으로 보호하는 방법과 보안통제를 우회하는 자세한 사항에 대해 다룰 것이다. 마지막으로, 이 책은 웹 언어에 추가되는 새로운 특징적 측면과 잠재적으로 가능하고 새로운 형태의 공격이 될 수 있는 은닉기법(일명: 난독화기법)의 관점에서 웹 애플리케이션의 미래를 논의하는 것으로 마무리 짓는다. 다음에 각 장의 내용을 세부적으로 설명했다.
2장 HTML
HTML은 웹 페이지와 웹 애플리케이션의 중추를 형성하고 있다. HTML 구문 분석은 이전 버전과
의 호환성, 사용자지정 브라우저 확장, 새롭게 생겨나는 규격에 대한 지원, 심지어 보안관련 컨트롤 문제로 인해 대단히 어렵다. 2장은 마크업이 난독화될 수 있는 많은 방법을 이해할 수 있도록 이러한 문제의 여러 가지 부분으로 들어갈 것이다. 유일한 공격벡터를 제공하는 것 외에도, 난독화기법과 JavaScript, CSS 같은 주제와 관련해 좀 더 진보된 공격을 이해하는 데 도움이 되는 토대를 제공할 것이다.
3장 JavaScript와 VBScript
JavaScript와 VBScript에서 제공하는 특징의 전체를 배우는 가장 좋은 방법 중 하나는 어떻게 코드가 난독화되고 비난독화되는가를 이해하는 것이다. 동시에 3장은 여러분에게 난독화기술의 무기고(여기서는 난독화기술들의 집합으로 이해)를 증가시키며 JavaScript가 작동되는 방식에 대한 더 큰 지식을 제공할 것이다. 또한 3장은 여러분이 언어구문, 인코딩, 변수, 특정 벤더사의 특징과 편차를 이해하는 데 실질적인 도움을 줄 것이다.
4장 특수문자로 작성한 자바스크립트
자바스크립트의 흥미로운 측면 중 하나는 알파벳이나 숫자문자를 포함하지 않는 자바스크립트를 어떻게 빌드하는 데 사용할 수 있는가이다. 그 결과 코드는 아주 자세한 정보일 수 있지만, 여러분은 이러한 기술을 사용해 여전히 임의의 자바스크립트를 실행할 수 있다. 4장에서는 그런 코드가 어떻게 구성되는지 정확히 논하고 그 기술들이 실제 공격에서 사용(그리고 실제로 있다)될 수 있는 몇 가지 시나리오를 제공한다.
5장 CSS
CSS(Cascading Style Sheets)는 현대적인 웹 디자인의 핵심 구성요소이다. 전통적으로 웹 공격의 기준으로 사용되지는 않지만, 많은 CSS 특성들이 흥미로우면서도 유일한 방법으로 남용될 수 있다. 이것은 CSS 표현, 속성 선택자, 검색기록에의 접근, 직접 UI(User Interface, 이하 사용자 인터페이스라고 한다) 조작을 포함한다. 웹 페이지에 포함되어 있는 CSS를 단지 제어함으로써, 공격자는 목표 대상자와 애플리케이션 데이터 모두의 개인정보를 침해할 수 있다.
6장 PHP
완전한 기능으로 이루어진 프로그래밍 언어로서 난독화된 PHP 코드를 만드는 방법은 무수히 많다. 6장은 고급 문자열 난독화기법에 대한 기본사항, 슈퍼전역변수를 어떻게 남용하고 접근하는가와 몇가지 동적 코드를 실행하는 흥미로운 방식에 초점을 맞추고 있다. 이 자료를 보완하기 위해 저자는 로컬 파일에 포함된 취약점이 어떻게 원격 파일에 포함된 취약점으로 바뀔 수 있는지를 보여주는 동시에 파일에 포함될 수 있는 취약점과 관련해 필터와 스트림의 사용을 모색할 것이다.
7장 SQL
대부분의 웹 애플리케이션 프레임워크는 SQL 인젝션 공격에 대해 상당한 보호를 제공한다. 하지만 개발자들이 계속해서 수동으로 SQL 쿼리를 작성하는 한, 이 공격은 강력하고 가능성 있는 공격으로 남을 것이다. 7장에서는 표준 데이터베이스 관리시스템과 같이 사용될 수 있는 인코딩과 난독화기술을 다룰 것이다. 7장은 새로운 인코딩과 난독화트릭을 찾는 데 사용할 수 있는 도구와 모호한 기술에 대해 설명한다. 이제 대부분의 최신 웹 브라우저는 SQL을 사용해 액세스할 수 있는 오프라인 웹 애플리케이션을 위한 데이터베이스를 포함한다. 또한 그런 시나리오에 적용되는 공격기법에 대해 다룰 것이다.
8장 웹 애플리케이션 방화벽과 클라이언트 측 필터
WAFs(Web Application Firewalls, 이하 웹 방화벽이라 한다)는 악의적인 공격으로부터 웹 애플리케이션을 보호하기 위해 사용하는 일반적인 장치이다. 이러한 장치는 일반적으로 악의적인 입력을 감지하기 위해 정규 표현식 목록을 사용한다. 이것은 웹 애플리케이션 난독화기술을 사용해 공격과 우회를 하기 위한 주요 대상으로 만들기 위해서다. 8장에서는 심지어 가장 기본적인 난독화기법에 대해 대부분의 웹 방화벽이 가지고 있는 방화벽의 비효율성에 대해 설명할 것이다. 전통적인 웹 방화벽 이외에도 웹 브라우저에 내장된 클라이언트 측 필터에 대해 설명한다. 이 필터들은 공격자가 확실히 성공적으로 공격을 수행하는 (그래프) 수치를 올리는 데 도움이 될 것이다. 우리는 이런 필터들이 어떻게 작동하는지 자세히 보게 될 것이고 그것들이 일부 우회될 수 있는 특정하고 고도로 난독화된 방식을 알게 될 것이다.
9장 공격과 우회 완화조치
웹 코드와 관련된 가장 어려운 시나리오 중 하나는 신뢰할 수 없는 코드가 동적으로 실행되고 평가될 수 있는 Sandbox(외부로부터 들어온 프로그램이 보호된 영역에서 동작해 시스템이 부정하게 조작되는 것을 막는 보안 형태, 이하 샌드박스라 한다)를 구축하는 것이다. 9장에서는 자바스크립트 멀웨어와 같은 악성 코드를 안전하게 분석하는 데 도움을 줄 수 있는 기법을 소개할 것이다. 또한 웹 페이지상에서 신뢰할 수 없는 동적 코드를 포함하는 사용자 입력 값 처리를 도와주도록 동일한 기법이 사용될 수 있다.
10장 미래의 개발 환경
우리는 웹과 그것을 둘러싸고 있는 기술의 현 보안 상태에 관한 논의로 책의 결론을 내린다. 우리는 CSS3, HTML5, 플래시와 자바를 통한 플러그인 보안과 같은 기술이 가능한 미래의 웹을 보게 될 것이다. 이러한 기술들 중 일부는 긍정적이고 일부는 부정적인 보안기술의 결과를 보일 수도 있고 아니면 가까운 미래에 우리에게 영향을 줄 수도 있다.
이제 시작이야! 디지털 포렌식: THE BASICS (0) | 2012.09.11 |
---|---|
고급 개발자를 위한 iOS 프로그래밍: 그 한계를 넘어서 (0) | 2012.08.16 |
해킹과 침투 테스트를 위한 코딩 (0) | 2012.07.30 |
댓글 영역