chapter 01. 해킹의 정의와 역사
■ 해킹(hacking)의 정의 원래의 의미 단순히 컴퓨터를 필요할 때만 업무와 관련한 일부분을 사용하는 것이 아니라 컴퓨터 전반에 걸쳐 깊이 배우기를 즐기는 사람 컴퓨터 프로그래밍에 대해 단순 이론을 이야기하기보다 컴퓨터 프로그래밍을 즐기고 열광하는 사람 현재의 의미 시스템의 관리자가 구축해 놓은 보안망을 어떤 목적에서 무력화시켰을 경우 이에 따른 모든 행동 시스템 관리자의 권한을 불법적으로 획득한 경우, 또 이를 악용해 다른 사용자에게 피해를 준 사람
■ 해킹의 유형 침입(Intrusion) 불법적으로 시스템 자원을 사용하거나 또 다른 해킹을 위한 경로로 사용하는 행위 ■ 해킹의 유형 침입(Intrusion) 불법적으로 시스템 자원을 사용하거나 또 다른 해킹을 위한 경로로 사용하는 행위 서비스 거부(DoS) 특정 호스트나 네트워크가 제 기능을 수행하지 못하도록 각종 서비스를 정지시키는 행위 정보 유출 경쟁 기업의 정보를 훔치거나 훔쳐낸 기밀을 외부에 유포하는 행위
■ 시스템과 서비스의 설정 취약점을 이용한 공격 파일 시스템의 쓰기 권한 취약점을 이용 SUID 프로그램의 문제를 이용 기타 환경 변수를 이용 ■ 프로그램의 취약점을 이용한 공격 CGI/자바스크립트의 취약점을 이용한 공격 ASP, PHP 스크립트의 취약점을 이용한 공격 버퍼 오버플로우(Buffer Overflow) 공격 힙 오버플로우(Heap Overflow) 공격 레이스 컨디셔닝(Race Conditioning) 공격 포맷 스트링(Format String) 공격 프레임 포인터 오버플로우(Frame Pointer Overflow) 공격
■ 프로토콜의 취약점을 이용한 공격 ■ 악성 코드 DoS 스니핑(Sniffing) 세션 하이재킹(Session Hijacking) 스푸핑(Spoofing) ■ 악성 코드 바이러스 트로이안 백도어 웜
■ 해커의 분류 Lamer Script Kiddie Developed Kiddie Semi Elite Elite 해커는 되고 싶지만 경험도 없고 컴퓨터 관련 지식도 많이 없는 해커 Script Kiddie 네트워크와 운영체제에 대한 약간의 기술적인 지식을 갖고 있는 해커 Developed Kiddie 대부분의 해킹 기법을 알고 있는 해커들 보안상의 새로운 취약점을 발견하거나 최근 발견된 취약점을 주어진 상황에 맞게 바꿀만한 실력은 없다 Semi Elite 컴퓨터에 대한 포괄적인 지식이 있고 운영체제, 네트워크에 대한 지식도 잘 갖추고 있으며 운영체제에 존재하는 특정 취약점을 알고 이 취약점을 공격할 수 있는 해킹 코드를 만들 수 있다 Elite 컴퓨터, 네트워크, 운영체제, 프로그래밍 등 최고 수준의 지식을 갖고 있다. 해킹하고자 하는 시스템의 새로운 취약점을 찾아내고 해킹할 수 최고 수준의 해커다.
■ 해킹의 역사 태동기(1950~60) : 성장기(1970~80) : 전환기(1980) : 탄압기(1990) : 폰 프리킹이라고 하는 1960년대 말 공짜로 전화를 걸던 히피세대 대학생이 생겨났다. 성장기(1970~80) : 컴퓨터 보급이 확산되고 정보통신망이 발달하자 많은 폰 프리커들이 컴퓨터 해커로 변하였고, 1980년대에서는 수많은 개인용 컴퓨터가 가정, 학교, 사무실에 보급되면서 컴퓨터 해커들의 활동이 본격화되기 시작하였다 전환기(1980) : 1980년대 들어오면서 컴퓨터가 널리 보급되고, 해커들이 사회적 비행을 저지르기 시작했다. 탄압기(1990) : 1990년대 들어서면서 크래커의 사회적 비행이 국가 안보를 위협하는 존재로 발전하고 정치적 이념을 가진 핵티비스트(Hacktivist)가 등장했다. 발전기(1990 이후) : 1990년대 후반부터 인터넷이 대중화되면서, 해킹 기술이 급속도로 발전한다.
■ 해킹 기법의 변화
■ 해킹 기법의 변화 1980년대 1990년대 2000년대 사용자 패스워드 추측 공격 인터넷을 기반으로 한 최초의 웜 바이러스 등장 사용자 계정 데이터베이스를 획득하여 사용자 패스워드 크랙 백도어 1990년대 스니핑(Sniffing) 세션 하이재킹(Session Hijecking) 스푸핑(Spoofing) CGI 공격 버퍼 오버플로우 공격(Buffer Overflow Attack) 트로이 목마(Trojan Horse) 서비스 거부 공격(Denial Of Service) 2000년대 분산 서비스 거부 공격(Distribute Denial Of Service) 분산 반사 서비스 거부 공격(Distribute Reflected Denial Of Service) 웹 해킹
■ 해킹 기법의 동향 해킹 기술과 바이러스 기술의 통합 핵티비즘의 확산 웜 바이러스 공격 무선 해킹의 등장 대용량의 네트워크 트래픽을 발생시켜 해당 서버나 라우터, 스위치 등의 네트워크 장비를 마비시켜 특정 서버를 마비시키기는 것이 아니라 해당 네트워크 자체를 마비시키는 형태로 발전 핵티비즘의 확산 과거에는 단순히 개인적인 목적이었던데 반해 현재는 정치, 사회, 산업, 국가 등의 목적으로 변화 웜 바이러스 공격 웜과 해킹 기법이 결합된 형태의 공격이 많이 등장 무선 해킹의 등장 최근에 모바일이 급격하게 성장하면서 휴대폰 문자 메시지를 이용한 광고 발송으로 개인 정보 침해가 늘어나고 있다.
chapter 02. 윤리적 법적 문제
■ 사이버 윤리 인터넷에서도 사회 공동체를 구성하는 한 구성원으로서 가져야 할 기본 윤리 컴퓨터 윤리 기관(Computer Ethics Institute)의 윤리 강령 10계명 컴퓨터를 타인을 해치는 데 사용하지 않는다. 타인의 컴퓨터 작업을 방해하지 않는다. 타인의 컴퓨터 파일을 염탐하지 않는다. 컴퓨터를 절도해서 사용하지 않는다. 거짓 증거로 컴퓨터를 사용하지 않는다. 소유권 없는 소프트웨어를 사용하거나 불법 복제하지 않는다. 승인이나 적절한 보상 없이 타인의 컴퓨터를 사용하지 않는다. 타인의 지적 재산권을 침해하지 않는다. 자신이 만든 프로그램이나 시스템으로 인한 사회적 결과에 책임을 진다. 동료를 고려하고 존중하는 방식으로 컴퓨터를 사용한다.
■ 인터넷 활동 협회(IAB-Internet Activities Board)가 지정한 비윤리적인 행동 고의적으로 허가받지 않고 인터넷 자원에 접근하려는 행위 인터넷의 이용을 막는 행위 의도적으로 시스템과 네트워크의 자원을 낭비하는 행위 컴퓨터 기반 정보의 무결성을 파괴하는 행위 타인의 사생활을 침해하는 행위 인터넷 전반의 실험에 있어서의 과실
■ 우리나라 정보통신 윤리 위원회 지정 강령 정보통신 윤리 강령 네티즌 윤리 강령 네티즌의 기본정신 사이버 공간의 주체는 인간이다. 사이버 공간은 공동체의 공간이다. 사이버 공간은 누구에게나 평등하며 열린 공간이다. 사이버 공간은 네티즌 스스로 건전하게 가꾸어 나간다.
네티즌 행동 강령 우리는 타인의 인권과 사생활을 존중하고 보호한다. 우리는 건전한 정보를 제공하고 올바르게 사용한다. 우리는 불건전한 정보를 배격하며 유포하지 않는다. 우리는 타인의 정보를 보호하며, 자신의 정보도 철저히 관리한다. 우리는 비속어나 욕설 사용을 자제하고, 바른 언어를 사용한다. 우리는 실명으로 활동하며, 자신의 아이디로 행한 행동에 책임을 진다. 우리는 바이러스 유포나 해킹 등 불법적인 행동을 하지 않는다. 우리는 타인의 지적재산권을 보호하고 존중한다. 우리는 사이버 공간에 대한 자율적 감시와 비판활동에 적극 참여한다. 우리는 네티즌 윤리강령 실천을 통해 건전한 네티즌 문화를 조성한다.
■ 컴퓨터 범죄 ■ 컴퓨터 범죄의 특징 컴퓨터 범죄의 개념 광의: 컴퓨터와 관련된 반사회적 행위이나 자료의 자동 처리와 전달을 포함한 불법적, 비윤리적, 권한 없는 행위(1983. 5. OECD) 협의: 컴퓨터 자료와 관련하여 발생한 재산적 침해 행위를 야기하는 고의의 범죄 행위 ■ 컴퓨터 범죄의 특징 발각과 원인 규명의 곤란 범행의 국제성과 광역성 죄증 인멸의 용이성 범죄의식의 희박성 범행의 자동성과 반부, 연속성 전문가나 내부 경영자의 범행이 많음
chapter 03. OSI 7계층
■ LAN(Local Area Network) ■ 네트워크 컴퓨터 네트워크는 데이터 전송과 데이터 처리를 유기적으로 결합하여 어떤 목적이나 기능을 수행하는 시스템이다. 여기서 데이터 전송이란 컴퓨터에 의해 처리된 정보를 전송하는 것이고, 데이터 처리란 컴퓨터에서 정보를 처리하는 것을 의미한다. ■ LAN(Local Area Network) LAN(Local Area Network)은 일반적으로 300m 이하의 통신 회선으로 연결된 PC 메인 프레임(Main Frame), 워크스테이션들의 집합 ■ Protocol 서로 다른 시스템에 있는 두 개의 엔터티간의 동일한 전송약속, 즉 통신 규약을 프로토콜이라 한다. 두 엔티티 사이의 데이터 교환을 규정하는 기본 3요소는 다음과 같다. 구문(Syntax) : 데이터의 형식, 코딩(Coding), 신호 레벨을 나타내는 구문(Syntax) 의미(Semantic) : 오류 체크 및 조정 정보를 담고 이는 의미(Semantic) 기간(Timing) : 속도 조절 및 순서를 의미하는 기간(Timing)
■ 프로토콜의 기능 주소지정(Addressing) 순서지정(Sequencing) 단편화와 재조합 (Fragmentation and Reassembly) 데이터 흐름제어(Data Flow Control) 연결제어(Connection Control) 캡슐화(Encapsulation) 오류제어(Error Control) 동기화(Synchronization) 멀티플랙싱(Multiplexing) 전송서비스(Transmission Service)
단편화와 재조합(Fragmentation and Reassembly) 주소지정(Addressing) 일반적으로 하나의 엔터티가 상대 엔티티에 데이터를 전송하는 경우 상대의 이름을 알아야 한다. 순서지정(Sequencing) 순서지정은 프로토콜 데이터 단위가 전송될 때 보내지는 순서를 명시하는 기능으로 연결 지향형(Connection Oriented)에만 사용한다. 순서를 지정하는 이유는 순서에 맞게 전달, 흐름제어, 오류제어 등을 위해서다. 단편화와 재조합(Fragmentation and Reassembly) 두 엔티티 사이에서 대용량의 데이터를 교환하는 프로토콜의 경우 대부분 같은 크기의 데이터 블록으로 분할하여 전송한다.
데이터 흐름제어(Data Flow Control) 데이터 흐름제어는 수신측 엔티티에서 송신자로부터 받은 데이터의 양이나 속도를 제어 연결제어(Connection Control) 연결 지향형 데이터 전송에서는 연결 설정, 데이터 전송, 연결 해제의 3단계로 구성된다. 연결제어란 이러한 프로토콜의 연결 설정에 있어서의 구문, 의미, 시간을 제어하는 것이다. 캡슐화(Encapsulation) PCI(Protocol Control Info.)에는 송신자와 수신자 주소, 오류 검출 코드, 프로토콜 제어 정보의 데이터에 제어 정보를 덧붙이는 것을 캡슐화라 한다. 오류제어(Error Control) 두 엔티티에서 데이터를 교환할 때 SDU(Service Data Unit)나 PCI가 잘못된 경우, 이를 발견하는 기법을 오류제어라고 한다.
동기화(Synchronization) 두 엔티티간에 데이터가 전송될 때 각 엔티티는 특정 타이머 값이나 윈도우 크기 등을 기억해야 하는데 두 엔터티가 동시에 잘 정의된 인자 값을 공유하는 것을 동기화라 한다. 멀티플랙싱(Multiplexing) 하나의 통신 선로에서 여러 시스템이 동시에 통신할 수 있는 기법을 멀티플랙싱이라 한다. 전송 서비스(Transmission Service) 우선순위 결정, 서비스 등급과 보안 요구 등을 제어하는 서비스
■ OSI 7 계층
■ 물리적 계층 물리 계층은 두 시스템간의 물리적 연결을 위한 전기적 메커니즘, 절차, 기능 등을 정의한다. 전압 레벨, 전압 변환 시기, 물리적 데이터 최대 전송량, 최대 전송거리, 물리적 커넥터 등과 같은 특성을 물리적 계층에서 정의 실제 비트 정보가 흐르는 통로를 제공하는 계층으로 비트 단위 정보를 전자기적 신호나 광 신호로 전달하고 상위 계층인 데이터 링크 계층과의 인터페이스를 제공한다. 비트 단위 정보를 전송 신호에 얹는 부호화(Encoding)와 변조, 매체에서의 신호 전파, 전송된 신호를 동기화하여 다시 비트 정보로 복구한다. 전송 매체로는 일반 랜 케이블(Twist Pair Cable), 동축 케이블, 광 케이블, 기타 무선 매체가 사용된다.
■ 데이터 링크 계층 데이터 링크 계층은 물리적 계층을 통한 데이터 전송에 신뢰성을 제공한다. 이러한 서비스를 위해 물리적 주소지정(Addressing), 네트워크 토폴로지, 오류통지, 프레임의 순차적 전송, 흐름제어 등의 기능이 있다. 이 계층에서는 로컬 네트워크에서 프레임을 안전하게 전송하는 것을 목적으로 한다. 직접 연결되어 있지 않는 네트워크에 대해서는 상위 계층에서 오류 제어를 담당해야 한다. 데이터 링크 계층에서 흐름제어는 주로 슬라이딩 윈도우(Sliding Windows) 기법이 많이 사용된다.
■ 네트워크 계층 네트워크 계층은 교환망을 담당하기 위한 계층이며, 경로를 설정하기 위한 라우팅(Routing)과 중간 노드에서의 중계 기능(Relay)이 필요하다. 방송망(Broadcast Network) : 중간에 교환 노드가 없는 네트워크로 패킷 라디오 네트워크(packet radio network), 위성 네트워크(satellite network), 로컬 네트워크(local network) 등이 있다 교환망(Circuit-Switched Network ): 데이터를 전송할 때 여러 개의 중간 노드를 거쳐서 수신자에게 전달되는 네트워크다. 교환망은 다시 회선 교환망과 패킷 교환망으로 나누어진다.
■ 네트워크 계층(계속) 회선 교환망 :두 시스템간에 전용의 통신 선로가 구성되는 네트워크다. 전화 연결에 가장 많이 사용하고 있는 회선 교환 방식은 호출자와 수신자 사이의 연결을 위하여 네트워크상의 전기적인 경로 또는 회선을 연결시킨다. 패킷 교환망 :네트워크에서 전송되는 데이터는 패킷 단위로 노드와 노드 사이에 전달된다. 각 패킷에는 목적지 주소가 붙어 있어 이 주소를 보고 경로를 설정한 후 가장 적절한 경로를 설정하여 데이터를 전송한다. 이때 여러 패킷이 항상 같은 경로를 사용하는 것이 아니고 때마다 회선 상태가 양호한 경로를 선택하여 전송한다. 전용 통신로가 설정되어 있지 않기 때문에 대역폭을 효율적으로 이용할 수 있다.
■ 트랜스포트 계층 네트워크 계층이 제공하는 통신 경로를 따라 종단간에 신뢰성 있고 정확한 전송을 제공하고 오류제어와 흐름제어도 한다. 연결 지향성 서비스는 두 시스템이 논리적인 연결 채널을 설정한 후 가상회선 번호와 패킷 순서 번호를 부여한다. 비연결 지향형 서비스는 논리적인 연결을 설정하지 않고 각 패킷에 도착지 주소를 붙여 네트워크에 전송한다. 그래서 도착지에 도달한 패킷 순서가 일정하지 않을 수 있으므로 순서를 다시 구성해야 한다.
■ 세션 계층 ■ 프리젠테이션 계층 ■ 응용 프로그램 계층 세션 계층은 응용 프로그램간의 세션을 형성하고 관리한다. 상위 계층인 프리젠테이션 계층에서 두 개 이상의 요소간에 통신이 가능하게 하고 통신을 동기화하고 데이터 교환을 관리해준다. 데이터 전송 중에 체크 포인트와 재시작을 삽입하여 연결이 끊어지는 경우에 재동기화를 쉽게 해준다. ■ 프리젠테이션 계층 프리젠테이션 계층은 응용 프로그램 계층 엔티티간의 정보를 표현하는 구문이 다른 경우 이를 하나의 통일된 형식을 표현한다. 프리젠테이션 계층에서는 데이터의 압축과 암호화 기능을 수행한다. ■ 응용 프로그램 계층 응용 프로그램 계층은 사용자나 응용 프로그램 사이에 데이터 교환을 가능하게 하는 계층이다. HTTP, FTP, 터미널 서비스, 여러 메일 프로그램, 디렉토리 서비스 등
OSI 7계층 OSI 모델은 업무를 수행하기 위해서 enveloping 계층 7 : 응용 계층 응용 게층은 응용에 특화된 정보를 양 시스템이 모두 알아 볼 수 있도록, 일반적이고 정규화된 형태로 바꾼다. 계층 6 : 표현계층 ASCII나 EBCDIC와 같은 코드 변환과 MPEG, JPEG을 사용한 압축, PGP(Preety Good Privacy)와 같은 암호화, PKI(Public Key Infrastructure)와 같은 작업을 수행한다. 계층 5 : 세션계층 전송 응용과 수신 응용 사이에 논리적인 연관성이 만들어질 수 있도록 한다. 계층 4 : 전송계층 헤더를 추가한 후, 계층 5는 착실히 증가하는 PDU(Protocol Data Unit)를 전송 계층으로 보낸다. 전체 메시지를 에러 없이, end-to-end(단대단) 전송을 보장한다. 이때, 비트단위, 프레임 혹은 셀, 패킷 단위가 아닌 전체 메시지 단위로 전송된다. 계층 3 ; 네트워크계층 라우팅과 복잡 제어의 두 가지 주요 특성을 가진다. 계층 2 : 데이터링크계층 전송되는 데이터의 비트 레벨에서의 무결성을 보장한다. 패킷이 네트워크 계층에서 데이터 링크 계층으로 내려왔을 때, 패킷은 정보가 추가되어 프레임 단위가 된다. PCB || CID || NAD || Application Data || CRC 계층 1 : 물리계층 물리 계층은 비트 값의 물리적인 전송을 수행하는 곳이다.