로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

그레이햇 C#

 [C]
   
지은이 브랜든 페리   |   출판사 에이콘  |   발행일 2018년 02월 12일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 30,000원27,000원 10%
마일리지 5% 1,500원
발행일 2018-02-12
ISBN 1161751181 | 9791161751184
기타정보 번역서 | 412쪽 | 일반
예상출고일 1일 (근무일기준)
배송비 무료배송
   
일반
   
이 책의 원서
  Gray Hat C#: Creating and Automating Security Tools
NO STARCH PRESS | Brandon Perry
 

★ 요약 ★



보안 전문가나 침투 테스터가 자주 사용하는 다양한 보안 도구를 활용해 업무를 자동화하는 법을 알려준다. 책에 소개된 다양한 도구는 보안 전문가와 침투 테스터가 자주 활용하는 보안 툴이다.

플랫폼에 독립적인 C# 언어로 저자가 직접 작성한 코드를 통해 보안 도구와 연동하는 법을 자세히 알려주며, 이를 기반으로 자신만의 맞춤형 도구를 개발할 수 있는 좋은 지침서로 활용할 수 있다.





★ 이 책에서 다루는 내용 ★



■ HTTP와 XML 라이브러리를 이용해 SQL과 XSS 인젝션을 스캔하는 퓨저 작성

■ 메타스플로잇에서 플랫폼과 아키텍처에 독립적인 페이로드를 생성하는 셸 코드 작성

■ 네서스, OpenVAS, sqlmap을 자동화해 취약점을 스캔하고 SQL 인젝션 익스플로잇 수행

■ OS X와 리눅스용 .NET 디컴파일러 작성

■ 시스템 정보를 덤프하는 오프라인 레지스트리 하이브 파싱 도구 작성

■ MSGPACK RPC를 이용해 아라크니와 메타스플로잇 보안 도구 자동화





★ 이 책의 대상 독자 ★



네트워크 엔지니어나 애플리케이션 보안 엔지니어 같이 보안 중심의 작업을 하는 이들은 취약점 스캔이나 악성코드 분석을 위해 어느 정도 자동화에 의존한다. 여러 보안 전문가는 다양한 운영 체제를 선호하기 때문에 모든 사람이 쉽게 실행할 수 있는 도구를 작성하는 일은 까다로울 수 있다. 모노는 플랫폼 간 호환성이 뛰어나고 보안 전문가의 업무를 자동화를 도와주는 훌륭한 핵심 라이브러리를 보유하고 있으므로 좋은 선택이 될 수 있다. 공격 익스플로잇 작성, 인프라 취약점 검색 자동화, 다른 .NET 애플리케이션 디컴파일이나 오프라인 레지스트리 하이브 파일 읽기, 다양한 플랫폼을 지원하는 페이로드 작성 방법에 관심이 있다면 이 책에서 다루는 많은 주제가 좋은 시작점이 될 것이다(C# 배경 지식이 없어도 좋다).





★ 이 책의 구성 ★



1장, ‘C# 속성 과정’에서는 간단한 예제를 사용해 C# 객체지향 프로그래밍의 기초와 다양한 C# 기능을 다룬다. Hello World 프로그램으로 시작해 객체지향 프로그래밍의 이해를 돕기 위한 소규모 클래스를 작성한다. 그 후 익명 함수와 P/Invoke 같은 고급 C# 기능을 다룬다.

2장, ‘퍼징과 XSS과 SQL 인젝션 공격’에서는 HTTP 라이브러리를 사용해 웹 서버와 통신하고 다양한 데이터 유형으로 XSS과 SQL 인젝션을 찾아내는 작은 HTTP 요청 퓨저를 작성한다.

3장, ‘SOAP 엔드포인트 퍼징’에서는 HTTP WSDL을 자동으로 생성해 잠재적인 SQL 인젝션 공격 가능성을 찾기 위해 SOAP WSDL을 검색하고 파싱하는 또 하나의 작은 퓨저를 작성해본다. 이는 이전 장의 퓨저 개념을 이해한 다음 단계로 볼 수 있다. 표준 라이브러리에서 제공하는 XML 라이브러리도 살펴본다.

4장, ‘재접속, 바인딩과 메타스플로잇 페이로드’에서는 HTTP에 중점을 두고 페이로드 작성에 관해 설명한다. 먼저 간단한 페이로드 2개를 제작하는데, 하나는 TCP, 다른 하나는 UDP를 통해 생성한다. 그런 다음, 메타스플로잇에서 x86/x86_64 셸 코드를 생성하고 여러 플랫폼과 아키텍처에서 사용할 수 있는 페이로드를 생성하는 방법을 학습한다.

5장, ‘네서스 자동화’에서는 취약점 스캐너 중 가장 뛰어난 네서스(Nessus)를 자동화하기 위해 HTTP를 다시 다룬다. CIDR 범위를 프로그램화하고 작성해 스캔하고 보고하는 방법에 관해 설명한다.

6장, ‘Nexpose 자동화’에서는 Nexpose 취약점 스캐너를 이용한 도구 자동화에 초점을 맞춘다. Nexpose는 HTTP를 기반의 API를 사용해 취약점 검사와 보고서 작성을 자동화한다. Nexpose의 제작자인 Rapid7은 커뮤니티 제품에 대한 1년 무료 라이선스를 제공하며 개인용으로 매우 유용하다.

7장, ‘OpenVAS 자동화’에서는 오픈소스인 OpenVAS를 사용해 취약점 스캐너 자동화에 초점을 맞춘다. OpenVAS는 네서스와 Nexpose와는 근본적으로 다른 종류의 API를 사용하며, 통신 프로토콜에 TCP 소켓과 XML만 사용한다. 또한 무료이기 때문에 취약점을 검색할 때 더 많은 경험을 쌓을 수 있다.

8장, ‘Cuckoo 샌드박스 자동화’에서는 Cuckoo 샌드박스를 사용한 디지털 포렌식(digital forensic)을 다룬다. 사용하기 쉬운 REST JSON API를 사용해 잠재적인 악성코드를 제출하고 결과 보고를 자동화한다.

9장, ‘sqlmap 자동화’에서는 sqlmap을 자동화해 SQL 인젝션을 최대한 활용해 공격한다. 먼저 sqlmap과 함께 제공하는 사용하기 쉬운 JSON API로 하나의 URL을 제출하는 간단한 도구를 제작한다. sqlmap에 익숙해지면 3장에서 다룬 SOAPWSDL 퓨저로 스크립트를 통합해 잠재적인 SQL 인젝션 취약점을 자동으로 공격하고 입증할 수 있다.

10장, ‘ClamAV 자동화’에서는 기존 비관리 라이브러리와의 상호작용에 중점을 둔다. 널리 사용되는 오픈소스 안티 바이러스 프로젝트인 ClamAV는 .NET 언어로 작성돼 있지 않지만, 원격 라이브러리를 사용할 수 있는 TCP 데몬 및 핵심 라이브러리와 여전히 인터페이스할 수 있다. 이 두 가지 시나리오에서 ClamAV를 자동화하는 방법을 다룬다.

11장, ‘메타스플로잇 자동화’에서는 다시 메타스플로잇으로 돌아가 코어 프레임워크와 함께 제공되는 MSGPACK RPC를 통해 프로그램화하고 공격해 셸을 얻은 호스트를 보고하는 방법에 관해 학습한다.

12장, ‘아라크니 자동화’에서는 이중 라이선스이긴 하지만 무료이자 오픈소스 프로젝트인 아라크니(Arachni)라는 블랙박스 웹 애플리케이션 스캐너 자동화에 초점을 맞춘다. 간단한 REST HTTP API와 프로젝트와 함께 제공하며, 좀 더 강력한 MSGPACK RPC를 통해 URL을 스캔한 결과를 자동으로 보고하는 간단한 도구를 생성한다.

13장, ‘관리 어셈블리의 디컴파일과 리버싱’에서는 리버스 엔지니어링에 관해 설명한다. 윈도우용 .NET 디컴파일러는 사용하기 쉽지만, 맥이나 리눅스용은 쉽지 않으므로 직접 간단한 디컴파일러를 작성한다.

14장, ‘오프라인에서 레지스트리 하이브 읽기’에서는 사고 대응으로 넘어가 윈도우 레지스트리의 바이너리 구조체를 알아보고 레지스트리 하이브에 초점을 맞춘다.

오프라인에서 레지스트리 하이브를 파싱하고 읽는 방법을 통해 레지스트리에 저장된 패스워드 해시를 암호화하는 데 사용한 시스템의 부트키(boot key)를 얻을 수 있다.





★ 지은이의 말 ★



C#은 항상 .NET 언어의 공통어로 자리매김해왔다. 이 책에서 볼 수 있듯이 C#은 진입 장벽이 낮고 대규모 개발자 커뮤니티가 있으므로 쉽게 시작할 수 있다. 또한 .NET은 관리 코드이자 풍부한 타입을 지원하는 언어며, 컴파일한 어셈블리를 C#으로 쉽게 디컴파일할 수 있다. 따라서 공격자의 입장에서 C#으로 프로그램을 작성한다면 기능을 새로 개발할 필요가 없다. 오히려 다양한 .NET 악성코드 샘플을 가져와 디컴파일하고, 소스에 해당하는 코드를 읽고, 필요한 기능을 “빌려올” 수도 있다. 더 나아가 충분한 리버싱을 통해 악성코드의 파괴적인 행위를 피할 수 있다고 가정하면, .NET 리플렉션 API(.NET reflection API)를 사용해 기존 .NET 악성코드 샘플을 동적으로 로드하고 실행할 수 있다.

C# 학습 동기는 각기 다르다. 필자의 경우, 파워셸 기법을 .NET 코드로 더 많은 플랫폼으로 신속히 전환하기 위함이다. 독자는 기존 C# 기술에 더해 공격자의 공격 방식을 습득할 수 있는 수단으로 이 책을 읽어도 좋다. 이와 반대로 공격자의 공격 방식을 여러 플랫폼에서 사용하는 다른 언어에 적용할 수도 있다. 동기와 상관없이 공격적이고 방어적인 관점에서 C#으로 개발하고 싶다면, 저자의 독특한 경험과 지혜를 전수받을 준비를 하자.



1장. C# 속성 과정

__IDE 선택하기
__간단한 예제
__클래스와 인터페이스 소개
____클래스 생성하기
____인터페이스 생성하기
____추상 클래스의 서브 클래스화와 인터페이스의 구현
____Main( ) 함수로 모두 합치기
____Main( ) 함수 실행하기
__익명 함수
____함수에 위임자 할당하기
____Firefighter 클래스 업데이트하기
____선택 가능한 인자 생성하기
____Main( ) 함수 업데이트하기
____업데이트된 Main( ) 함수 실행하기
__네이티브 라이브러리와 통합하기
__결론

2장. 퍼징과 XSS와 SQL 인젝션 공격

__가상 환경 설정하기
____호스트 전용 가상 네트워크 추가하기
____가상 환경 생성하기
____BadStore ISO에서 가상 환경으로 부팅하기
__SQL 인젝션
__크로스 사이트 스크립팅
__변형(Mutational) 퓨저로 퍼징 GET 요청하기
____파라미터 변조와 취약점 테스트
____HTTP 요청 생성하기
____퍼징 코드 테스트
__POST 요청으로 퍼징하기
____POST 요청 퓨저 작성하기
____퍼징 시작하기
____퍼징 파라미터
__퍼징 JSON
____취약한 기기 설정하기71
____취약한 JSON 요청 잡아내기
____JSON 퓨저 생성하기
____JSON Fuzzer 테스트하기
__SQL 인젝션 공격
____수동으로 UNION 기반 공격 수행하기
____프로그래밍을 통해 UNION 기반 공격 수행하기
____부울-블라인드 기반(Boolean-Blind) SQL 취약점 익스플로잇
__결론

3장. SOAP 엔드포인트 퍼징

__취약한 엔드포인트 설정하기
__WSDL 파싱하기
____WSDL 문서의 클래스 생성하기
____최초 파싱 함수 작성하기
____SOAP 유형과 파라미터 관련 클래스 작성하기
____송신한 데이터를 정의하는 SoapMessage 클래스 생성하기
____메시지 부분 클래스 구현하기
____SoapPortType 클래스로 포트 작업 정의하기
____포트 작업을 위한 클래스 구현하기
____SOAP 바인딩에 사용할 프로토콜 정의하기
____작업 자식 노드 목록 컴파일하기
____SOAP 서비스 포트 찾기
__SQL 인젝션 취약점이 있는 SOAP 엔드포인트 퍼징 자동화하기
____개별 SOAP 서비스 퍼징
____HTTP POST SOAP 포트 퍼징하기
____SOAP XML 포트 퍼징하기
____퓨저 실행하기
__결론

4장. 재접속, 바인딩 작성과 메타스플로잇 페이로드

__역접속 페이로드 생성하기
____네트워크 스트림
____명령어 실행하기
____페이로드 실행하기
__페이로드 바인딩하기
____데이터 수신, 명령어 실행과 결과 반환하기
____스트림에서 명령어 실행하기
__UDP를 사용한 네트워크 공격
____공격 대상에서 실행하는 코드
____공격자 코드
__C#에서 x86과 x86-64용 메타스플로잇 페이로드 실행하기
____메타스플로잇 설정하기
____페이로드 생성하기
____어셈블리 코드로 네이티브 윈도우 페이로드 실행하기
____네이티브 리눅스 페이로드 실행하기
__결론

5장. 네서스 자동화

__REST와 네서스 API
__NessusSession 클래스
____HTTP 요청 생성하기
____로그아웃과 삭제하기
____NessusSession 클래스 테스트하기
__NessusManager 클래스
__네서스로 스캔 작업하기
__결론

6장. Nexpose 자동화

__Nexpose 설치
____활성화와 테스트하기
____Nexpose 용어 살펴보기
__NexposeSession 클래스
____ExecuteCommand( ) 함수
____로그아웃과 현재 세션 삭제하기
____API 버전 찾기
____Nexpose API 유도하기
__NexposeManager 클래스
__취약점 스캔 작업 자동화
____Asset을 통해 사이트 생성하기
____스캔 작업 시작하기
__PDF로 리포트 생성 후 사이트 삭제하기
__통합 실행하기
____스캔 작업 시작하기
____리포트 생성 후 사이트 삭제하기
____자동화 실행하기
__결론

7장 OpenVAS 자동화

__OpenVAS 설치하기
__클래스 생성하기
__OpenVASSession 클래스
____OpenVAS서버로 인증하기
____OpenVAS명령어를 실행하는 함수 생성하기
____서버 메시지 읽기
____명령어를 송수신하기 위한 TCP 스트림 설정하기
____인증서 확인과 가비지 컬렉션
____OpenVAS 버전 가져오기
__OpenVASManager 클래스
____스캔 작업 설정을 가져와서 대상 생성하기
____자동화 마무리하기
____자동화 실행하기
____결론

8장. Cuckoo 샌드박스 자동화

__Cuckoo 샌드박스 설치하기
__Cuckoo 샌드박스 API 수동으로 실행하기
____API 시작하기
____Cuckoo상태 확인
__CuckooSession 클래스 생성
____HTTP 요청을 처리하는 ExecuteCommand( ) 함수 작성하기
____GetMultipartFormData( ) 함수로 멀티파트 HTTP데이터 생성하기
____클래스를 이용한 파일 데이터 처리하기
____CuckooSession과 지원 클래스 테스트하기
__CuckooManager 클래스 작성하기
____CreateTask( ) 함수 작성
____작업 세부사항과 보고서 작성 함수
____Task 추상화 클래스 생성하기
____서로 다른 클래스 유형 처리와 생성
__통합 실행하기
__애플리케이션 테스트하기
__결론

9장. sqlmap 자동화

__sqlmap 실행
____sqlmap REST API
____curl을 이용해 sqlmap API 테스트하기
__sqlmap의 세션 생성하기
____GET 요청을 실행하는 함수 생성하기
____POST 요청 실행하기
____세션 클래스 테스트하기
__SqlmapManager 클래스
____sqlmap 옵션 목록화
____스캔 작업을 수행하는 함수 작성하기
____새로운 Main( ) 함수
__스캔 작업 보고하기
__전체 sqlmap 스캔 작업 자동화하기
__sqlmap을 SOAP 퓨저와 통합하기
____sqlmap에 SOAP 퓨저를 지원하는 GET 요청 추가하기
____sqlmap POST 요청 지원 추가하기
____새로운 함수 호출하기
__결론

10장. ClamAV 자동화

__ClamAV 설치하기
__ClamAV 네이티브 라이브러리 vs. clamd 네트워크 데몬
__ClamAV의 네이티브 라이브러리 자동화하기
____지원하는 옵션과 클래스 설정하기
____ClamAV’s 네이티브 라이브러리 함수 접근하기
____ClamAV 엔진 컴파일하기
____파일 스캔
____삭제하기
____EICAR 파일을 스캔해 프로그램 테스트하기
__clamd 자동화하기
____clamd 데몬 설치하기
____clamd 데몬 시작하기
____clamd에서 세션 클래스 생성하기
____clamd 관리자 클래스 생성하기
____clamd 테스트
__결론

11장. 메타스플로잇 자동화

__RPC 서버 실행하기
__Metasploitable 설치
__MSGPACK 라이브러리 가져오기
____MonoDevelop용 NuGet 패키지 관리자 설치
____MSGPACK 라이브러리 설치하기
____MSGPACK 라이브러리 참조하기
__MetasploitSession 클래스 작성하기
____HTTP 요청을 위한 함수 생성과 MSGPACK으로 활용하기
____MSGPACK에서 반환 데이터 변형하기
__세션 클래스 테스트
__MetasploitManager 클래스 작성하기
__통합 실행하기
____익스플로잇 실행
____셸에서 활용하기
____셸 획득하기
__결론

12장. 아라크니 자동화

__아라크니 설치
__아라크니 REST API
____ArachniHTTPSession 클래스 생성
____ArachniHTTPManager 클래스 생성
__Session과 Manager 클래스 통합하기
__아라크니 RPC
____수동으로 RPC 실행
____ArachniRPCSession 클래스
____ExecuteCommand( )를 지원하는 함수
____ExecuteCommand( ) 함수
__ArachniRPCManager 클래스
__통합 실행하기
__결론

13장. 관리 어셈블리 디컴파일과 리버싱

__관리 어셈블리 디컴파일하기
__디컴파일러 테스트
__monodis를 이용한 어셈블리 분석
__결론

14장. 오프라인에서 레지스트리 하이브 읽기

__레지스트리 하이브 구조
__레지스트리 하이브 가져오기
__레지스트리 하이브 읽기
____레지스트리 하이브 파일을 파싱하는 클래스 생성하기
____노드 키 클래스 생성하기
____키 값을 저장하는 클래스 만들기
__라이브러리 테스트
__부트 키 덤프하기
____GetBootKey( ) 함수
____GetValueKey( ) 함수
____GetNodeKey( ) 함수
____StringToByteArray( ) 함수
____부트 키 가져오기
____부트 키 검증하기
__결론

브랜든 페리(Brandon Perry)

오픈소스 .NET을 구현한 모노가 출시된 이후 지속적으로 C#으로 프로그래밍하고 있다. 여가 시간에는 메타스플로잇 프레임워크 모듈 작성, 바이너리 파일 파싱이나 퍼징 등을 즐긴다. 『

Wicked Cool Shell Scripts, 2nd Edition』(No Starch Pres, 2016)의 공동 저자다. 그의 웹 사이트(https://volatileminds.net)에서 다른 소프트웨어와 프로젝트도 운영하고 있다.





★ 옮긴이의 말 ★



이 책을 출간하는 시점에도 스펙터(Spectre)나 멜트다운(Meltdown)과 같은 새로운 공격 방식이 등장하며 보안 이슈는 끊임없이 사회 전반에 회자되고 있다. 일정 규모 이상의 조직에서는 아웃소싱 여부에 상관없이 IT 리스크 관리를 하기 시작했고, 그 중 하나가 침투 테스트라는 형태로 사용 중인 자산이 잘 보호되고 있는지 보안 전문가들로 하여금 실제 악의적인 공격자를 가장해 해킹을 시도해 보는 점검 방식이다. 하지만 침투 테스터 입장에서는 가능한 한 다수의 취약점을 발견하고 실제 취약점이 공격으로 이어질 가능성을 평가해야 한다. 또한 조치 후 문제가 사라졌는지 재검검도 필요하며, 실제 서비스에 영향을 주지 않고 주기적으로 점검할 수 있다면 더욱 이상적이다.

하지만 사실 이러한 반복적인 작업은 중요하지만 따분해지기 쉽다.

따라서 보안 전문가나 침투 테스터가 자주 사용하는 여러 보안 도구를 활용해 업무를 체계적으로 자동화하는 방법을 도입해야 한다. 이를 위해 저자는 플랫폼에 독립적인 C#이라는 언어를 택했다. C#에 익숙하지 않은 독자를 위해 1장에서 간단히 C# 언어에 대한 속성 과정을 제공한다. 객체지향 언어를 다뤄본 경험이 있다면 어렵지 않게 이해할 수 있을 것이다. 나머지 장에서는 웹 애플리케이션의 대표적인 취약점 XSS와 SQL 인젝션 퍼징, 악성코드 분석에 사용하는 쿠쿠 샌드박스와 ClamAV, 다양한 익스플로잇을 제공하는 메타스플로잇과 연동하는 법 등 실전에 사용할 수 있는 다양한 자동화 방법을 설명한다.

본인에게 필요한 맞춤형 자동화 도구를 개발할 때 책에 나온 코드를 참고한다면 좋은 지침서로 활용할 수 있으리라 믿는다. 나아가 자신만의 자동화 도구를 제작해서 오픈소스로 공개한다면 더욱 의미가 있을 않을까.





★ 옮긴이 소개 ★



구형준

대기업과 금융 IT 환경에서 보안 프로세스 개선, 서비스 보안 리뷰, 보안 점검, 보안 솔루션 검토, 보안 교육 등 다양한 경험을 쌓았다. 고려대학교 정보보호대학원에서 디지털 포렌식을 전공했고 현재 뉴욕 주립대에서 컴퓨터 사이언스 박사 과정을 밟고 있다. 악성코드, 프라이버시, 바이너리 분석과 메모리 보호기법 등의 분야에 관심을 가지고 있다.

등록된 서평이 없습니다.
개발자를 위한 파이썬...
윤웅식
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
SDN과 NFV...
SDN/NFV포럼
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
자료구조의 이해...
양성봉
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
 
전체평균(0)
회원평점   회원서평수 0
에이콘 출판사의 신간
와이어샤크 개론 2/e : 네트워크 분석 핵심 기술
로라 채플 저
36,000원
(10%↓+5%)
 
서버리스 웹 애플리케이션 구축
디에고 자농 저
27,000원
(10%↓+5%)
 
모던 파이썬 쿡북
스티븐 로트 저
38,700원
(10%↓+5%)
 
Windows Server 2016 쿡북
조던 크라우스 저
31,500원
(10%↓+5%)
 
자바 데이터 사이언스 쿡북
루시디 샴스 저
27,000원
(10%↓+5%)
 
이메일주소수집거부