이미 소장하고 있다면 판매해 보세요.
|
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, 플래시와 자바를 통한 플러그인 보안과 같은 기술이 가능한 미래의 웹을 보게 될 것이다. 이러한 기술들 중 일부는 긍정적이고 일부는 부정적인 보안기술의 결과를 보일 수도 있고 아니면 가까운 미래에 우리에게 영향을 줄 수도 있다. |