해킹:착취의 기술
Hacking:해킹: 착취의 기술 (Attract of Travitation) ISBN1-59327-007-0)은 존 "스미브스" 에릭슨이 컴퓨터 보안과 네트워크 보안에 대해 쓴 책이다.[1][2]2003년 노 녹말 출판사에서 발행하였으며, 2008년 제2판을 발행하였다.이 책에 수록된 예시들은 모두 겐투 리눅스에서 개발, 편찬, 시험되었다.
작성자 및 배경 정보
존 에릭슨은 컴퓨터 과학을 전공한 컴퓨터 보안 전문가다.2011년 현재 캘리포니아에서 취약성 연구원과 컴퓨터 보안 전문가로 근무하고 있다.
사용자에게 Linux 기반 프로그래밍 및 디버깅 환경을 제공하는 책에는 부팅 가능한 CD가 포함되어 있다.
제1판의 내용
Attacking의 내용은 프로그래밍, 네트워킹 및 암호화 사이에서 이동한다.이 책은 실제 세계의 사례에 대한 어떤 주목할 만한 척도 사용하지 않는다; 토론은 좀처럼 특정한 벌레와 공적을 제기하지 않는다.
프로그래밍
해킹의 컴퓨터 프로그래밍 부분이 책의 절반 이상을 차지한다.이 섹션은 취약성 코드의 개발, 설계, 구축 및 테스트에 들어가며, 따라서 일부 기본 조립 프로그래밍을 포함한다.입증된 공격 범위는 스택의 단순 버퍼 오버플로에서 전역 오프셋 표 덮어쓰기와 관련된 복잡한 기법에 이르기까지 다양하다.
에릭슨은 실행 불가능한 스택과 같은 대응책과 이를 회피하는 방법에 대해 논의하면서도 주소 공간 배치 무작위화 등 알려진 보장된 악용 없이는 더 깊은 문제에 몰두하지 않는다.이 책은 또한 Openwall, GrSecurity, PaX 프로젝트나 커널 악용에 대해서도 다루지 않는다.
네트워킹
해킹의 네트워킹 부문은 OSI 모델의 기본과 패킷 스니핑, 연결 하이잭킹, 서비스 거부, 포트 스캔 등 기본적인 네트워킹 개념을 설명한다.
암호학
해킹의 암호부분은 대칭과 비대칭 암호화에 더해 기본정보이론을 다룬다.그것은 플루러, 맨틴, 샤미르 공격을 이용하여 WEP를 균열하는 과정에서 발생한다.맨 인 더 리퍼(man-in-the-middle) 공격, 사전 공격, 존 더 리퍼(John the Ripper) 사용 등 기본 외에도 해킹은 양자 키 분포, 롭 그로버의 양자 검색 알고리즘, 매우 큰 양자 컴퓨터를 이용한 RSA 암호화를 깨는 피터 쇼어의 양자 인수 알고리즘 등을 논의한다.
기타 세부 정보
- 해킹의 전면 커버는 긴 커맨드 라인 인수에 대한 버퍼 오버플로로 죽는 프로그램의 역엔지니어링에서 공격 수행에 이르는 완전한 사이클이다.
내용 제2판
| 작가 | 존 에릭슨 |
|---|---|
| 나라 | 미국(원본) |
| 언어 | 영어(제2판) |
| 시리즈 | 세컨드 에디션 |
| 장르. | 컴퓨터 사이언스 |
| 출판사 | 녹말 프레스 금지 |
발행일자 | 2008년 2월 |
| 매체형 | 프린트 페이퍼백 |
| 페이지 | 488 |
| ISBN | 978-1593271442 |
소개
이 책의 도입은 해킹은 법의 테두리 안에서만, 생산적인 이유로만 이뤄져야 한다고 명시하고 있다.
0x200 프로그래밍
이 책의 프로그래밍 장에서는 다양한 유형의 프로그램이 예시를 통해 설명되고 보여진다.이 장에서는 제어 구조와 프로그래밍의 다른 기본 측면을 다룬다.라이브 CD는 독자들이 책의 예시를 따를 뿐만 아니라 스스로 프로그래밍을 할 수 있도록 환경을 제공한다.
0x300 공격
공격이란 컴퓨터의 코드나 규칙 집합을 취하여 컴퓨터가 원하는 대로 하도록 변경하는 것이다.시스템에서 변화시킬 방법이나 구멍을 찾는 것은 착취의 중요한 부분이다.이 장에서는 특히 Perl 및 Bash 셸코드를 사용하는 메모리 손상, 버퍼 오버플로 및 형식 문자열과 같은 공격 기법을 다룬다.
0x400 네트워킹
OSI 모델
네트워킹을 통한 컴퓨터 간 통신에서는 OSI 모델이 사용된다.OSI 모델은 컴퓨터가 통신에 사용하는 표준을 제공하는 모델이다.OSI 모델에는 7개의 계층이 있으며, 그것들은 물리 계층, 데이터 링크 계층, 네트워크 계층, 전송 계층, 세션 계층, 프레젠테이션 계층, 애플리케이션 계층이다.컴퓨터가 다른 컴퓨터로 보내는 각각의 패킷은 OSI 모델의 각 계층을 거쳐야 한다.
소켓
컴퓨터 운영 체제의 사용과 네트워크에서 통신하는 표준 방법은 소켓이다.소켓은 OSI의 레이어를 이용하여 데이터를 주고받는 방법을 만들기 위해 프로그래머에 의해 사용된다.소켓에는 스트림 소켓과 데이터그램 소켓의 두 종류가 있다.스트림 소켓은 TCP(Transmission Control Protocol)를 사용한다.데이터그램 소켓은 UDP(사용자 데이터그램 프로토콜)를 사용한다.
레이어드 백백
'계층을 다시 감싼다'는 OSI계층이 실제로 어떻게 작동하는지 설명한다.OSI 모델은 책에서 이해하기 쉬운 몇몇 이미지와 함께 매우 상세하게 설명되어 있다.
네트워크 스니핑
네트워크에는 교환 및 비연결 네트워크가 존재한다.개폐된 네트워크는 그들의 엔드포인트가 있는 네트워크에서 이동하는 패킷을 분석하고 알려주는 스위치라고 불리는 장치를 사용한다.연결되지 않은 네트워크란 패킷을 중지하고 분석하지 않고 자유롭게 패킷을 흐르는 것을 말한다.스니핑(Snifing)은 네트워크상의 패킷과 패킷이 어디로 가는지를 볼 수 있는 프로그램을 이용하는 것을 말한다.
서비스 거부
서비스 거부 공격은 의도한 사용자가 컴퓨터 리소스를 사용할 수 없게 하려는 시도다.이는 서비스 거부 공격이 일정 기간 사용할 수 없도록 자원을 오버플로하기 위해 다량의 통신요청을 의도된 자원에 보내는 것을 의미한다.이러한 유형의 공격은 대개 라우터나 방화벽을 대상으로 하여 네트워크의 다른 컴퓨터에 접근하기 위해 이들을 차단한다.라우터는 이러한 유형의 공격에 매우 취약하지만 방화벽은 대개 공격을 처리할 수 있고 영향을 받지 않는다.분산서비스거부 공격은 통신요청이 여러 대의 컴퓨터에서 왔을 때, 정기적인 서비스거부 공격에 대한 요청 건수가 크게 증가하는 것이다.다른 유형의 DOS 공격으로는 Ping of Death, Teardrop, Ping Flooding 및 Amplification 공격이 있다.
TCP/IP 하이잭킹
TCP/IP Hijacking은 스푸핑된 패킷을 사용하여 공격 대상자와 호스트 컴퓨터 사이의 연결을 이어받는 또 다른 방법이다.이 기법은 주로 호스트 컴퓨터가 접속할 암호를 사용할 때 암호를 수집하는 데 사용된다.이런 유형의 공격이 발생하면 공격자와 공격자는 동일한 네트워크에 있어야 한다.TCP/IP 강탈의 또 다른 형태는 가짜 리셋 패킷을 주입하는 RST 강탈이다.
포트 검색
포트 스캐닝은 단순히 어떤 포트가 연결을 수신하고 수신하는지 파악하는 방법이다.해커는 네트워크의 모든 포트를 검색하고 포트를 열려고 하면 어떤 포트가 열려 있는지 알려주는 프로그램을 사용할 것이다.SYN, Idle, FIN, X-Mas 및 Null 스캔과 같은 많은 다른 유형의 스캔이 있다.
연락하여 누군가를 해킹하십시오.
이 파트는 네트워크의 타입캐스팅에 있어서의 취약점을 찾는 것에 관한 것이다.디버거를 사용하여 네트워크 프로토콜에 사용되는 코드 라인을 통과하는 것이 이를 달성하는 가장 효율적인 방법이다.
0x500 쉘코드
셸코드는 코드의 이용에 사용된다.프로그램에 대한 통제권을 얻었을 때 실행하고자 하는 것은 해커 자신의 코드와 같다.일반적으로 해커는 프로그램 코드에서 취약점을 발견하고 취약점을 발견한 곳에 자신의 코드(셸 코드)를 삽입할 수 있다.
어셈블리 vs.c
어셈블리는 낮은 수준의 프로그래밍 언어이고, 처리될 때 프로세서와 직접 통신할 수 있기 때문에 어셈블리는 C와 다르다.고급 프로그래밍 언어인 C를 사용할 때는 코드를 컴파일하여 커널로 전송해야 하며, 시스템 호출 후 프로세서에 호출해야 한다.즉, 어셈블리를 사용할 때 커널을 호출하는 시스템을 그림에서 꺼내는 것과 거의 같다.[citation needed]
셸코드 경로
셸코드의 이 부분은 프로그램을 셸코드로 주입하여 그것을 인수하는 방법에 관한 것이다.이 책에는 코드의 예와 이 과제를 수행하는 방법이 많이 있다.
셀프스파이팅 셸코드
산란 셸 코드는 공격이 발견될 때 활성화되는 코드다.프로그램에 취약성이 발견되면 실행할 수 있는 것이 셸코드다.이를 달성하는 가장 좋은 방법은 책에 나와 있고 코드가 매우 작다는 것을 확인함으로써 알 수 있다.
포트 바인딩 셸 코드
이러한 유형의 셸 코드는 네트워크 포트에 자체 부착된다.포트에 바인딩되면 TCP 연결을 수신 대기한다.그것이 TCP 연결을 찾은 후에 훨씬 더 많은 프로그래밍이 관여되어 있고 책에 생생하게 보여진다.
콘넥트백 셸코드
이런 종류의 셸코드는 주로 방화벽을 둘러볼 때 사용된다.대부분의 방화벽은 활성 포트를 통해서만 알려진 서비스를 허용하도록 설정되어 있기 때문에 포트 바인딩 셸 코드의 작동을 차단할 것이다.Connect-back 셸 코드는 해커의 IP 주소에 대한 연결을 다시 시작하므로 해커로 들어가지 않고 방화벽에서 나온다.다시 한번 이 책의 코드는 셸 코드의 사용과 이를 달성하기 위한 방법과의 커넥트백을 묘사하고 있다.
0x600 대책
이 부분은 알려진 해킹 공격을 막기 위해 방어와 침입 방지 시스템을 갖추는 내용이다.탐지하는 대응책
네트워크의 관리자는 언제 공격이 발생할 수 있는지 알아야 한다.네트워크에서 로그 읽기나 패킷 스니핑과 같은 특정 도구를 사용하는 것은 공격이 발생할 때 이를 포착하는 몇 가지 방법이다.
시스템 데몬스
System Daemon은 들어오는 연결을 수신하고 수신하는 Unix 시스템의 서버 프로그램이다.데몬은 백그라운드에서 실행되며 특정 방식으로 단말기를 제어하지 못하게 하는 프로그램이다.이 책에서 데몬 프로그램을 실행하는 방법에 대한 몇 가지 코드가 있다.신호는 유닉스 기반 환경에서도 운영체제 호출을 위해 사용된다.신호가 단자에 입력되면 즉시 인터럽트 메시지를 보내 어떤 신호가 입력되었든 간에 작업을 완료한다.신호의 용도는 이 책의 몇 가지 코딩 예에 표시된다.
툴스 오브 더 트레이드
해커는 그가 악용할 때 그를 돕는 데 필요한 특정한 도구들을 가지고 있다.공격 스크립트는 이미 작성된 공격 코드를 사용하여 시스템 또는 프로그램에서 구멍을 찾는 도구다.공격 스크립트를 사용하는 것은 코드가 이미 기록되어 있기 때문에 해커가 아닌 사용자도 쉽게 사용할 수 있다.몇 가지 착취 도구에 대한 몇 가지 시험이 이 책에 나와 있으며, 그 도구들을 어떻게 사용하는지 알 수 있다.
로그 파일
앞에서 설명한 것처럼 로그 파일은 컴퓨터나 네트워크에서 발생한 이벤트를 확인하는 방법이다.해커에게는 로그 파일이 말하는 것을 바꿀 수 있는 능력을 갖추는 것이 그가 눈치채지 못하게 하는데 도움이 될 수 있다.책에 로그파일을 변경하는 방법에 대한 코드와 지침이 있다.
뻔한 것을 바라보다
프로그램이 해킹당했다는 또 다른 징후는 더 이상 제대로 작동하지 않는다는 것이다.해커가 프로그램을 수정했기 때문에 프로그램이 제대로 작동하지 않는 경우가 대부분이다.그러나 숙련된 해커는 프로그램을 수정하여 프로그램이 여전히 올바르게 작동하고 그가 원하는 대로 할 수 있다.만약 프로그램이 악용된다면 어떻게 그것이 일어났는지 알 수 있는 방법들이 있다.프로그램이 어떻게 이용되었는지를 알아내는 것은 보통 프로그램의 일부를 가져다가 개별적으로 보는 것으로 시작되기 때문에 매우 지루한 과정이 될 수 있다.착취된 프로그램을 다시 합쳐서 어떻게 착취되었는지를 보는 것은 이 책에서 볼 수 있다.
어드밴스트 카무플라주
해커가 프로그램을 이용할 때 그의 IP 주소는 로그 파일에 기록될 수 있다.그의 IP주소가 검출되지 않도록 로그파일을 위장하는 것은 책에 나와 있다.IP 주소를 숨길 때, IP 주소를 스푸핑이라고 한다.
전체 인프라
침입 탐지 시스템과 침입 방지 시스템을 사용하면 악용될 위험을 피하는데 크게 도움이 된다.방화벽과 라우터에도 해킹의 증거를 보여줄 수 있는 로그 파일이 있다.아웃바운드 TCP 연결을 처리할 수 없도록 하는 것도 찾기를 제한하는 한 가지 방법이다.TCP 연결을 어떻게 사용하는지에 대한 책에는 감지되지 않고 쉽게 갈 수 있도록 하는 몇 가지 방법이 나와 있다.
페이로드 밀수
셸코드를 이용해 프로그램을 이용할 경우 침입탐지시스템에 걸릴 수 있다.보통 침입 탐지 시스템은 이미 작성되어 있고 그 안에 눈에 띄는 셸 코드가 있는 프로그램을 포착할 것이다.대부분의 악용 프로그램들은 실제 해커들이 이용하지 않기 때문에 잡힐 것이다.셸코드를 숨기는 방법이 있어서 탐지하기가 더 어려울 수 있다.셸코드를 숨기는 방법에 대한 몇 가지 예가 이 책에서 발견된다.
버퍼 제한
때로는 취약성을 악용할 수 없도록 버퍼에 제한을 가하기도 한다.이 책은 완충제약을 극복하는 방법을 몇 가지 묘사하고 있다.
경화 대책
이 책에서 발견되는 위업들은 오랫동안 존재해 왔다.해커들이 이 책에 묘사된 취약점을 어떻게 활용할 것인가를 알아내는 데 시간이 걸렸다.메모리 손상, 제어의 변화, 그리고 셸코드의 사용은 착취하기 가장 쉬운 세 단계다.
불포함 스택
대부분의 애플리케이션은 어떤 유형의 실행에도 스택을 사용하지 않는다.한 가지 방어는 프로그램 이용에 버퍼 오버플로가 사용되지 않도록 스택을 실행 불가능으로 만드는 것이다.이 방어는 응용 프로그램의 셸코드 사용을 중지하는 데 매우 효과적이다.그러나, 이 책에서 보여주고 묘사된 실행 불가능한 스택의 사용을 피하는 방법이 있다.
랜덤화된 스택 공간
무작위 스택은 해커가 구현한 셸코드가 어디에 있는지 알 수 없도록 사용하는 대응책의 일종이다.스택 내의 메모리 레이아웃을 랜덤화한다.다시 한 번, 책 속의 몇 가지 예를 가지고 이 대응책을 헤쳐 나가는 방법도 있다.
0x700 암호학
암호학은 암호의 사용을 통해 비밀리에 의사소통을 하는 것이며, 암호 분석은 그러한 비밀 통신을 균열하거나 해독하는 과정이다.이 장에서는 클로드 섀넌의 작품을 포함한 암호 이론에 관한 정보와 조건 없는 보안, 일회용 패드, 양자 키 분배, 연산 보안 등의 개념을 제공한다.
동일한 키를 사용하여 메시지를 암호화하고 암호 해독하는 것은 대칭 암호화다.비대칭 암호화는 다른 키(공용 및 비공개)를 사용하는 것을 포함한다.이 장에서는 두 종류의 암호화와 사용 방법에 대한 몇 가지 예를 제시한다.
암호는 암호화 알고리즘이다.대칭 암호와 비대칭 암호의 사용을 결합하는 것을 하이브리드 암호라고 한다.암호를 공격하고 일부 암호화 방법을 살펴보는 방법이 설명되어 있다.
이 장에서는 또한, 브루트 포스 공격과 해시 룩업을 포함한 암호화된 패스워드를 알아내는 방법을 보여준다.또한 무선 802.11b(Wi-Fi)와 유선 등가 프라이버시(WEP) 암호화를 살펴보는 방법도 제공한다.
참고 항목
참조
- ^ "Book Review: Hacking". 25 July 2004. Archived from the original on 25 July 2004. Retrieved 26 July 2018.
- ^ Schaefer, Ed. "Hacking: The Art of Exploitation, 2nd Edition : Linux Magazine". Linux Magazine. Retrieved 26 July 2018.
기타 출처
- 에릭슨, 존해킹: 착취의 기술.전분 프레스 금지, 2003.ISBN 1-59327-007-0
- John Baichtal (March 3, 2008). "GeekDad Review: Hacking: The Art of Exploitation". Wired. Retrieved March 27, 2009.