Perl과 침투 테스트 [펄의 막강한 힘을 이용한 모의해킹]
- 원서명Penetration Testing with Perl (ISBN 9781783283453)
- 지은이더글라스 베르도(Douglas Berdeaux)
- 옮긴이송재훈
- 감수자여성구
- ISBN : 9788960778023
- 33,000원
- 2015년 12월 30일 펴냄 (절판)
- 페이퍼백 | 368쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 해킹과 보안
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
요약
모의해킹을 하는 사람은 누구나 자기만의 도구 상자가 있어서, 문제를 해결할 때마다 그 상자에 있는 도구들을 이용하게 된다. 하지만 이러한 도구 대부분은 사람들이 저마다 다른 목적으로 개발한 것이어서 손에 딱 맞지는 않는다. 이 책은 모의해킹을 하는 사람이 펄(Perl)의 막강한 기능을 이용해 자신의 용도에 맞는 도구를 직접 개발하는 방법에 대해 예제 프로그램을 예로 들어 설명한다. 펄 프로그래밍에 경험이 있는 사람이라면 자신만의 도구로 상자를 채울 멋진 기회를 이 책을 통해 얻게 될 것이다.
감수의 글
이 책은 인터프리터 프로그래밍 언어인 펄을 이용해 해킹에 필요한 도구를 제작하고 활용하는 방법을 제시하는 실용서다. 무엇보다 그 근본에는 모의해킹 과정을 위한 필수 지식이 자리잡고 있어 도구를 개발하는 과정을 통해 유무선 네트워크의 기본 지식과 각종 해킹 기법 등의 기본 원리를 이해할 수 있다.
모의해킹에 필요한 각종 도구를 직접 개발하거나 부족한 도구의 기능을 보완하던 과거와 달리, 현재는 손쉽게 정보를 수집하거나 공격을 자동화하는 도구들이 주변에 널려 있다. 이런 도구 덕분에 손쉽게 해킹할 수 있는 환경이 갖춰져 인력 측면에서는 양적으로 성장했으나, 질적인 측면에서는 배움을 바탕으로 한 걸음 더 나아갈 수 있는 인력이 여전히 한정적인 것 같아 안타까운 측면이 크다. 남보다 앞서 가기 위해서는 도구에 의존하기보다 스스로 구현할 수 있는 능력을 갖춰야 한다. 이를 위해 최소한 한 가지 이상의 인터프리터 언어 정도는 습득하고 있어야 한다.
펄은 개인적으로 전문 보안 업체에서 모의 침투 테스터로 10여 년 동안 활동하던 시기에 애용하던 프로그래밍 언어로, 빠른 구현과 개선이 가능한 인터프리터 언어의 장점은 모의해킹의 성과로 충분히 증명되었다. 특히, 펄의 정규표현식 처리 능력은 다른 언어가 따라올 수 없을 정도로 뛰어나다. 이 책에는 담기지 않았으나 펄의 이식성(리눅스, 윈도우 등) 역시 펄을 모의해킹 과정에서 쓸 수밖에 없는 이유 중의 하나다.
이 책을 감수하면서 과거 펄로 웹 백도어(webshell) 탐지기를 만들던 때가 떠올랐다. 이 책의 내용 역시 프로그래밍 언어에 초점을 두기보다 한 단계씩 원하는 결과를 얻어가는 과정을 설명하고 있어 모의해킹 또는 보안 시스템 등을 구현하고자 하는 독자에게 많은 도움이 될 것이라고 생각한다. 펄이란 프로그래밍 언어가 낯설다고 하더라도 이 책의 내용을 바탕으로 충분히 본인이 원하는 도구를 개발하고 업무 효율성을 높일 수 있을 것이다. 배움의 단계에 있는 초보자와 익숙함에서 벗어나 한 걸음 더 나아가고자 하는 분께 이 책을 권한다.
- 여성구 / 넥슨 보안시스템 개발운영팀장
이 책에서 다루는 내용
모의해킹의 방법론과 적법성, 윤리 의식에 대한 지식 향상
펄을 이용한 리눅스 운영체제와 셸, 네트워크 유틸리티 활용
최신 스위치 장비에서 근거리 통신망(LAN)의 네트워크 트래픽을 캡처하고 조작하는 방법
펄을 aircrack-ng 셋에 적용하는 방법
외부 풋프린팅(footprinting), 내부 풋프린팅, 인터넷 풋프린팅과 공개 출처 정보(OSINT) 조합
로컬 및 원격 파일 삽입, SQL 삽입, 사이트 간 스크립팅(XSS), CMS 취약점 분석을 비롯한 모의해킹과 자동화 수행
이 책의 대상 독자
모의해킹에 대한 이 책의 독특한 접근 방식 덕분에 다양한 독자들이 더 폭넓은 환경에서 활용 가능한 지식을 얻을 수 있다. 이 책은 펄 프로그래밍 입문자와 전문가 모두를 아우르며, 해킹이나 모의해킹에 관심이 있는 사람이나 GUI 환경 프레임워크의 작동 방식을 알고 싶은 모의해커에게도 적합하다. 여러분이 이 책을 통해 얼마나 성취하고 발전할 수 있는가는 여러분이 이 책에서 다뤄지는 내용에 얼마만큼 호기심이 있는지에 달려 있다.
이 책의 구성
1장, '펄 프로그래밍'에서는 이 책에서 사용할 펄 모듈을 위해 CPAN을 사용하는 중급 수준의 펄 개념을 다룬다. 또한, 매우 중요한 내장 정규표현식 함수를 다루며 리눅스 애플리케이션 스트림과 커널 파일에서 결과를 얻는 방법을 설명한다.
2장, '리눅스 터미널 출력'에서는 리눅스 셸인 배시(bash)를 조금 다룬다. 명령어와 터미널로의 출력, 입출력 스트림과 간단한 관리가 여기에 포함된다. 리눅스를 사용하지 않는 펄 프로그래머나 리눅스를 사용하지만 셸 사용이 익숙하지 않은 사람에게 유익한 단원으로서, 펄 스크립트로 셸에서 리눅스 명령어를 바로 호출하는 방법을 배운다.
3장, '펄을 이용한 IEEE 802.3 유선 네트워크 조사'에서는 스크립트를 작성하는 방법과 살아있는 장치를 자동으로 핑거프린팅한 후 스캔하고 모든 네트워크 정보를 얻어오는 방법을 살펴본다.
4장, '펄을 이용한 IEEE 802.3 유선 네트워크 조작'에서는 중간자 공격 소프트웨어를 펄로 개발하는 방법과 트래픽을 도청하는 방법을 설명한다.
5장, 'IEEE 802.11 무선 프로토콜과 펄'에서는 기본적인 802.11 무선랜 용어와 프로토콜 기능, 리눅스가 무선 장치를 다루는 방법과 준비 과정, 여러 종류의 스캐닝, 펄로 802.11 패킷을 캡처하는 방법, 펄을 이용해 802.11 프로토콜 분석기를 작성하는 방법, 펄과 aircrack-ng 셋을 쉽게 인터페이스하는 방법 등을 다룬다.
6장, '공개 출처 정보’에서는 모의해킹에서 가장 중요한 단계인 공격 대상에 대한 공개 출처 정보 수집을 다룬다. 여기에는 구글, 링크드인, 페이스북 데이터와 이메일 주소 등의 개인정보가 포함된다. 또한 호스트까지 경로 추적과 존 전송, DIG, 후이즈 등의 도메인 네임 서비스 정보 수집도 포함된다. 추가적으로, 온라인 사이트를 이용해 공격 대상에 대한 정보를 수집하는 방법도 조금 다룬다.
7장, '펄과 SQL 삽입'에서는 펄을 이용해 간단한 SQL 삽입 취약점을 찾는 방법을 배운다. 여러 가지 SQL 삽입 방법과 공격 후 과정, 펄 프로그래밍을 이용한 고급 블라인드 시간 및 데이터 기반 SQL 삽입 도구 작성 기법을 살펴본다.
8장, '기타 웹 기반 공격'에서는 펄을 이용해 여러 가지 웹 모의해킹 공격 기법을 찾고 사용하는 방법을 설명한다. 여기에는 사이트 간 스크립팅과 로컬 및 원격 파일 삽입, 콘텐츠 관리 소프트웨어의 플러그인 공격 방법이 포함된다.
9장, '비밀번호 알아내기'에서는 펄 프로그램을 이용해 해시된 비밀번호를 알아내는 여러 가지 방법을 살펴본다. 여기에는 솔트가 있거나(salted) 없는(unsalted) SHA1과 MD5 암호화 방법, 비밀번호가 있는 ZIP 파일을 푸는 방법, WPA2를 깨는 방법 등이 포함된다. 또한 디지털 자격 증명 분석과 정보 수집 방법이 무차별 공격을 이용해 비밀번호 해시를 알아내는 데 얼마나 도움을 줄 수 있는지에 대해서도 다룬다.
10장, '메타데이터 포렌식'에서는 펄 프로그래밍을 통한 간단한 디지털 포렌식 방법으로 개인정보를 수집하는 방법을 배운다. 또한 사진과 PDF 파일에서 메타데이터를 추출하는 방법을 다루고, 이 작업을 하는 도구를 펄로 직접 작성한다.
11장, '사회공학과 펄'에서는 모의해킹의 중요한 이면을 살펴본다. 사회공학에 대한 배경지식을 조금 다룬 후 펄 프로그래밍을 이용한 스피어 피싱 공격 방법과 바이러스 작성 방법을 설명한다.
12장, '보고서 작성'에서는 보고서와 보고서의 여러 하위 절에 어떤 내용을 넣어야 하는지를 살펴본다. 보고서 작성은 모의해킹 전체 과정 동안 계속되는 일로서 모의해킹의 가장 중요한 단계다. 앞에서 작성한 펄 프로그램의 결과 데이터 형태를 지정하는 여러 가지 방법과 이를 이용해 평문과 CSV, PDF, 그래프를 만드는 방법을 다룬다.
13장, 'Perl/Tk'에서는 앞에서 작성한 펄 프로그램을 위해 그래픽 사용자 인터페이스를 만드는 방법을 다룬다. 객체지향 방식으로 Perl::Tk 모듈을 깊게 살펴보고 윈도우와 위젯, 다른 객체를 이벤트 기반 프로그래밍 방식으로 만드는 방법을 설명한다.
목차
목차
- 1장 펄 프로그래밍
- 파일
- 정규표현식
- 리터럴과 메타문자
- 수량한정자
- 앵커
- 문자 클래스
- 텍스트(문자열) 그룹핑
- 후참조
- 펄 문자열 함수와 연산자
- 펄의 m// 매칭 연산자
- 펄의 s/// 치환 연산자
- 정규표현식과 split() 함수
- 정규표현식과 grep() 함수
- CPAN 펄 모듈
- CPAN minus
- 요약
- 2장 리눅스 터미널 출력
- 내장 배시 명령어
- 변수 확장과 그룹핑, 인자
- 배시에서 스크립트 실행
- 입출력 스트림
- 파일로 출력
- 기초 배시 프로그래밍
- 달아난 생성 프로세스 죽이기
- 펄에서 배시 명령어 실행
- 요약
- 내장 배시 명령어
- 3장 펄을 이용한 IEEE 802.3 유선 네트워크 조사
- 풋프린팅
- 인터넷 풋프린팅
- 일반적인 스캐닝 도구
- 주소 결정 프로토콜 스캐닝 도구
- 서버 메시지 블록 정보 도구
- 인터넷 제어 메시지 프로토콜 대 전송 제어 프로토콜 대 ARP 탐색
- 살아있는 호스트 스캐너 설계
- 포트 스캐너 설계
- SMB 스캐너 작성
- 배너 정보 수집
- 무차별 대입 애플리케이션
- 요약
- 4장 펄을 이용한 IEEE 802.3 유선 네트워크 조작
- 패킷 캡처
- 패킷 캡처 필터링
- 패킷 계층
- 중간자
- 펄을 이용한 ARP 변조
- 패킷 전달 활성화
- 패킷 캡처를 이용한 네트워크 재조사
- 요약
- 패킷 캡처
- 5장 IEEE 802.11 무선 프로토콜과 펄
- 802.11 용어와 패킷 분석
- 관리 프레임
- 제어 및 데이터 프레임
- 리눅스 무선 유틸리티
- RFMON 대 탐지
- 펄을 이용한 802.11 패킷 캡처
- 802.11 프레임 헤더
- 펄로 802.11 프로토콜 분석기 작성
- 펄과 aircrack-ng
- 요약
- 802.11 용어와 패킷 분석
- 6장 공개 출처 정보
- 다루는 내용
- 구글 검색어
- 이메일 주소 수집
- 구글을 이용한 이메일 주소 수집
- 이메일 주소 수집을 위한 소셜 미디어 사용
- 도메인 네임 서비스
- 후이즈 질의
- DIG 질의
- 무차별 대입 조사
- 존 전송
- Traceroute
- 쇼단
- 더 많은 정보
- 요약
- 7장 펄과 SQL 삽입
- 웹 서비스 발견
- 서비스 발견
- 파일 발견
- SQL 삽입
- GET 요청
- SQL 열 개수 세기
- MySQL 공격 후 단계
- 열의 개수 알아내기
- 서버 정보 수집
- 테이블 결과 셋 가져오기
- 레코드 가져오기
- 데이터 기반 블라인드 SQL 삽입
- 시간 기반 블라인드 SQL 삽입
- 요약
- 웹 서비스 발견
- 8장 기타 웹 기반 공격
- 사이트 간 스크립팅
- 반향식 사이트 간 스크립팅
- URL 인코딩
- 사이트 간 스크립팅 공격 향상
- 파일 삽입 취약점 발견
- 로컬 파일 삽입
- 원격 파일 삽입
- 콘텐츠 관리 시스템
- 요약
- 사이트 간 스크립팅
- 9장 비밀번호 알아내기
- 디지털 자격 증명 분석
- SHA1과 MD5 깨기
- 펄로 SAH1 깨기
- 펄로 MD5 깨기
- 온라인 자원을 이용해 비밀번호 알아내기
- 솔트가 있는 해시
- 펄로 WPA2 비밀번호 알아내기
- 4단계 핸드셰이크
- 펄로 만든 WPA2 해독 프로그램
- ZIP 파일 비밀번호 알아내기
- 요약
- 10장 메타데이터 포렌식
- 메타데이터와 EXIF
- 메타데이터 추출기
- 사진에서 메타데이터 추출
- PDF 파일에서 메타데이터 추출
- 요약
- 11장 사회공학과 펄
- 심리학
- 펄 리눅스/유닉스 바이러스
- 신뢰를 위한 최적화
- 바이러스 복제
- 스피어 피싱
- 펄로 이메일 위조
- Exim4 설정
- Mail::Sendmail 펄 모듈 이용
- 요약
- 12장 보고서 작성
- 누구를 위해?
- 경영진 보고서
- 기술 보고서
- 펄로 문서화
- STOUT 파이프하기
- CSV 대 TXT
- 펄로 그래프 그리기
- PDF 파일 만들기
- MySQL에 데이터 기록
- HTML 보고서 작성
- 요약
- 누구를 위해?
- 13장 Perl/Tk
- 이벤트 기반 프로그래밍
- Perl/Tk 위젯 설명
- 위젯과 격자 무늬
- GUI 호스트 탐색 도구
- 탭이 있는 GUI 환경
- 요약