정보보안개론 0x02

Kail-KM
|2015. 1. 12. 01:34

Network Security


OSI 7 Layer (Open System Interconnection)


  • 물리계층                    //시스템 간의 연결을 의미

실제 장치들을 연결하기 위한 전기적, 물리적 세부사항을 정의한 계층

물리 계층은 간단하지만 네트워크에서 무척 중요하다. 네트워크가 정상적으로 동작하지 않을때 가장먼저 랜케이블이나 컴퓨터나 마우스가 제대로 꼽혀 있는지 확인하는 것 또한 OSI 계층의 가장 낮은 부분부터 확인해야한다는 것을 우리는 이미 알고있다.


  • 데이터 링크 계층

Point to Point간 신뢰성 있는 전송을 보장하기 위한 계층으로, CRC 기반의 오류 제어 및 흐름제어가 필요하다.

상호 통신을 위해 MAC주소를 할당 받는다. 대표적인 장비로는 스위치가 존재하며, MAC 계층에서 동작하는 대표적인 프로토콜로는 이더넷이 있다. 


스위치(랜 공유기)가 존재할경우 두대의 컴퓨터를 1,2번 포트에 각각 꽂을 경우

1번포트 : 1번 PC의 MAC 주소

2번포트 : 2번 PC의 MAC 주소

이렇게 메모리 정보가 변경이 된다. 아직 2계층에서는 IP의 주소가 나타나지 않는다.


  • 네트워크 계층

3계층인 네트워크 계층은 여러개의 노드를 거칠때마다 경로를 찾아주는 역할을 하는 계층으로, 다양한 길이의 데이터를 네트워크를 통해 전달하며 그 과정에서 라우팅, 흐름제어, 세그멘테이션, 오류제어들을 수행한다.

MAC 주소를 가지고 ARP 프로토콜을 이용하여 해당 IP를 가진 시스템의 MAC 주소를 브로드캐스트를 통하여 알아내기 위한 작업을 한다. 그 후 패킷은 목적지에 도달할때까지 라우터를 만날 때마다 2계층의 정보를 갈아치우는 작업을 한다.


  • 전송 계층
End to end의 사용자 들이 신뢰성 있는 데이터를 주고 받을 수 있도록 함으로써, 상위 계층들이 데이터 전달의 유효성이나 효율성을 신경쓰지 않도록 해준다. 

전송 프로토콜 로는 TCP가 있다. TCP도 주소를 가지고 있으며 이를 Port라 한다. MAC 주소가 네트워크 카드의 고유 식별자 이고 ip가 시스템의 주소라면 포트는 시스템에 도착한 후 패킷이 찾아갈 응용 프로그램과 통하는 통로 번호라 할 수 있다.

TCP는 연결지향형 프로토콜로, 수신측이 데이터를 흘려버리지 않도록 데이터 흐름 제어 및 전송중 에러가 발생할 경우 자동으로 재전송하는 에러 제어 기능을 한다. 그리고 이를 통해 데이터의 확실한 전송을 보장한다.

//TCP 3-Way HandShake


  • 세션 계층
엉 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다. 세션 계층은 duplex 방식, half-duplex방식, full-duplex 방식의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정들을 수행한다. 또한 TCP/IP 세션을 만들고 없애는 책임을 진다.

  • 표현 계층
표현계층은 코드간의 번역을 담당한다. 즉 사용자 시스템에서 데이터의 구조를 하나의 통일된 형식으로 표현함으로써, 응용 계층의 데이터 형식 차이로 인한 부담을 덜어준다.

  • 응용 프로그램 계층
사용자나 응용 프로그램 사이에 데이터의 교환이 가능하게 하는 계층으로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.






서비스 거부(DoS)공격

서비스 거부공격(DoS : Denial Of Service)은 다른 해킹에 비해 비교적 간단한데, 쉽게 얘기하면 일종의 훼방이라고 볼수 있다.


  • 취약점 공격형
취약점 공격은 공격 대상이 특정 형태의 오류가 있는 네트워크 패킷의 처리 로직에 문제가 있을 때, 그 문제를 이용하여 공격 대상의 오동작을 유발시키는 형태의 공격이다.

<Boink, Bonk, TearDrop 공격>
이 공격들은 오류 제어 로직을 악용하여 시스템의 자원을 고갈시키는 공격이다. TCP 프로토콜은 데이터 전달의 유효성이나 효율성을 위해 시퀀스 넘버 기반의 오류 제어 방식을 사용하여 특정 연결의 유효성을 제어한다.
TCP는 신뢰성 있는 연결을 위해 다음의 기능을 제공한다.
-패킷의 순서가 올바른지 확인
-중간에 손실된 패킷은 없는지 확인
-손실된 패킷의 재전송 요구
위 공격들은 이를 이용한 공격으로 시스템의 패킷 재전송과 재조합에 과부하가 걸리도록 시퀀스넘버를 속인다.


<Land 공격>
패킷을 전송할떄 출발지 IP와 목적지 IP 주소값을 똑같이 만들어서 공격대상에게 보내는 것이다. 물론 이때 조작된 IP 주소값은 공격대상의 IP 주소여야 한다. 

이러한 패킷으 공격대상에 보내면 시스템은 공격자가 처음보낸 SYN패킷의 출발지 주소값을 참조하여 그 응답 패킷의 목적지 주소를 SYN 패킷의 출발지 주소로 설정하여 보내게 된다. 그런데 출발지 주소는 공격대상의 주소값이므로 패킷은 네트워크 밖으로 나가지않고 자신에게 되돌아온다. 결국 이 공격법은 SYN Flooding 처럼 동시 사용자 수를 점유해 버리고 CPU 부하를 올려서 시스템이 지치도록 만든다.

  • 자원고갈 공격형
<Ping of Death 공격>
Ping of Death 공격은 네트워크 연결상태를 점검하기 위한 ping 명령을 보낼때, 패킷을 최대한 길게 해 공격대상에게 보내면 패킷은 지나가는 네트워크의 특성에 따라 수백개에서 수천개의 패킷으로 나뉘어지게 된다. 따라서 결과적으로 공격 대상 시스템은 대량의 작은 패킷을 수신하게 되고, 네트워크는 마비 된다.

이를 예방하려면 ping이 내부 네트워크에 들어오지 못하도록 방화벽에서 ping 이 사용하는 프로토콜인 ICMP를 차단하는 방법을 사용한다.

<SYN Flooding 공격>
네트워크에서 서비스를 제공하는 시스템에는 동시 사용자 수의 제한이 있다. 이에 SYN Flooding 공격은 존재하지 않는 클라이언트가 서버별로 한정되어 있는 접속 가능한 공간에 접속한 것처럼 속여, 다른 사용자가 서버의 서비스를 제공받지 못하게 하는 것이다.

앞서 TCP에 대한 최초 연결시 클라이언트가 SYN패킷을 보내고 이를 받은 서버는 SYN+ACK 패킷을 보낸다 설명하였다. 마지막으로 클라이언트가 서버에 다시 ACK 패킷을 보내야 연결이 되는데, 보내지 않는다면 어떻게 될까? 
서버는 클라이언트가 ACK 패킷을 보내올떄까지 SYN Received 상태로 일정시간을 기다려야 하고, 그동안 공격자는 가상의 클라이언트로 위조한 SYN 패킷을 수없이 만들어 서버에 보냄으로 서버의 가용 동시 접속자 수를 모두 SYN Received 상태로 만들 수 있다. 이것이 SYN Flooding 공격의 기본 원리이다.
                                           //실제 동시 접속자수가 급증하여 접속자 폭주로도 마비가 되는 경우도 존재

대응책으로는 SYN Received의 대기 시간을 줄이는 방법으로 쉽게 해결 할 수 있다. 침입 방지 시스템(IPS)과 같은 보안 시스템을 통해서도 이러한 공격을 쉽게 차단할수 있다.


<HTTP GET Flooding 공격>

피공격 시스템에 TCP 3-Way HandShake 과정을 통해 정상적인 접속을 한뒤, 특정한 페이지를 HTTP의 GET Method를 통해 무한대로 실행하는 것이다.

공격 패킷을 수신하는 웹서버는 정상적인 TCP 세션과 함께 정상적으로 보이는 HTTP Get 요청을 지속적으로 요청하게 되므로, 시스템에 과부하가 걸린다.


<HTTP CC 공격>

HTTP 1.1 버전의 CC(Cache-Control) 헤더옵션은 자주 변경되는 데이터에 대해 새롭게 HTTP에 요청 및 응답을 요구하기 위하여 캐시 기능을 사용하지 않게 할수 있다. 서비스 거부 공격 기법에 이를 응용하기 위해 'Cache-Contril: no-store,must-revalidate' 옵션을 사용하면웹서버는 캐시를 사용하지 않고 응답해야 하므로 웹서비스의 부하가 증가하게 된다.


<동적 HTTP Request Flooding 공격>

HTTP Get Flooding 공격이나 HTTP CC 공격은 일반적으로 징정된 웹페이지를 지속적으로 요청하는 서비스 거부 공격이다. 그러나 이 둘은 방화벽을 통해 특징적인 HTTP 요청 패턴을 방어 할수 있다. 동적 HTTP Request Flooding 은 이러한 차단 기법을 우회하기 우해 지속적으로 요청 페이지를 변경하여 웹페이지를 요청하는 기법이다.


<Smurf 공격>

스머프 공격은 ICMP 패킷과 네트워크에 존재하는 임의의 시스템들을 이용하여 패킷을 확장시켜서 서비스 거부 공격을 수행하는 방법으로, 네트워크를 공격할 때 많이 사용된다.

이를 더 자세히 이해하려면 다이렉트 브로드캐스트(Direct Broadcast)를 알아야한다. 흔히 브로드캐스트는 목적지 ip 주소를 가지고 네트워크의 임의의 시스템에 패킷을 보내는 것이다. 이는 기본적으로 3계층장비, 즉 라우터를 넘어가지 못한다.

하지만 라우터를 넘어가야 하는 경우가 있는데 이런 경우 해당 네트워크에 있는 클아이언트의 IP주소 부분에 255를 채워서 원격지의 네트워크에 브로드캐스트 할수 있다. 이를 다이렉트 브로드 캐스트라 한다.

스머프 공격은 다이렉트 브로드 캐스트를 악용한 것으로 원격지의 네트워크에 다이렉트 브로드캐스트를 하면 해당 네트워크는 패킷의 위조된 시작 IP주소로 Reply를 보낸다. 결국 공격대상은 수많은 Reply를 받게 되고 Ping of Death 공격처럼 많은 패킷이 시스템을 과부하 상태로 만든다.

대응책으로는 라우터에서 다이렉트 브로드캐스트를 막는것이다.


<Mail Bomb 공격>

흔히 폭탄 메일 이라고 하는데, 스팸 메일과 같은 종류이다. 메일 서버는 각 사용자에게 일정한 양의 디스크 공간을 할당하는데, 메일이 폭주하여 디스크 공간을 가득 채우면 정작 받아야 하는 메일을 받을 수 없기 때문이다. 이런 이유로 스팸 메일은 Dos공격으로 분류된다.




분산서비스 거부 공격 ( DDoS : Distributed Denial Of Service)


DDOS 공격은 공격자가 한 지점에서 서비스 거부 공격을 수행하는 DOS 공격의 형태를 넘어 광범위한 네트워크를 이용하여 다수의 공격 지점에서 동시에 한곳을 공격하도록 하는 형태의 서비스 거부 공격이다.


  • 과거
일종의 자동화된 툴을 이용했으며, 광대한 공격 범위를 위해 최종 공격 대상 이외에도 공격을 증폭시켜주는 중간자의 역할이 필요했다.
-Attacker : 공격을 주도하는 해커의 컴퓨터
-Master : 공격자에게 직접 명령을 받는 시스템으로 여러대의 에이전트를 관리함
-Handler Program : 마스터 시스템의 역할을 수행하는 프로그램
-Agent : 공격대상에 직접 공격을 가하는 시스템
-Daemon Program : 에이전트 시스템의 역할을 수행하는 프로그램

  • 최근
최근의 DDOS 공격은 좀더 발전된 형태를 띄고 있다. 과거 형태의 경우 공격자가 상당한 시간을 두고 여러 시스템을 해킹하여 시스템에 마스터와 에이전트를 설치하고 공격 시에 해당 시스템에 공격명령을 내리는 형태였다. 시간도 오래걸리며 그 과정중에 ip 추적의 위험이 있었다. 

이런 이유로 최근에 발생하는 DDOS 공격은 악성코드와 결합하는 형태로 이뤄진다.
+ PC에서 전파가 가능한 형태의 악성코드를 작성한다.
+DDOS공격을 위해 사전에 공격대상과 스케줄을 정한뒤 이를 작성한 악성코드를 코딩한다.
+악성코드가 인터넷에 전파되면 감염된 PC 를 좀비PC라 부르며, 좀비 PC끼리 형성된 네트워크를 봇넷이라 한다.





스니핑 공격 (Sniffing Attack)

스피닝은 데이터 속에서 정보를 찾는 것이라 할수 있습니다. 스니핑 공격을 흔히 수동적 공격이라고도 하는데, 바로 공격할때 아무것도 하지않고 조용히 있는 것만으로도 충분하기 떄문입니다.


  • 스니핑의 원리
기본적으로 네트워크에 접속하는 모든시스템은 설정된 IP주소값과 고유한 MAC주소값을 가지고 있다. 통신을 할떄 이 두가지 주소값을 인식하고 자신의 버퍼에 저장할지 결정 한다. 다시 말해 네트워크카드에 인식된 2계층과 3계층 정보가 자신의 것과 일치하지 않는 패킷은 무시합니다.

스니핑을 수행하는 공격자는 자신에게 원래는 무시되어야 할 패킷을 무시하지 않는 것임으로 이러한 필터링을 해제하여야 하는데 이런 랜카드의 모드를 프러미스큐어스(Promiscuous)모드라 한다.

  • 스위치 재밍 공격
스위치에는 포트와 MAC 주소를 저장한 테이블이 존재한다. 스위치 재밍은 스위치가 MAC 주소 테이블을 기반으로 패킷을 포트에 스위칭할떄 정상적인 스위칭 기능을 마비시키는 공격을 말한다.

스위치에 랜덤한 형태로 생성한 MAC 주소를 가진 패킷을 무한대로 보내면 MAC테이블은 자연스레 저장 용량을 초과하게 되어, 스위치는 본래의 기능을 잃고 더미허브처럼 작동한다.

  • SPAN포트 태핑공격
SPAN은 스위치의 포트미러링 기능을 이용한 것으로 포트미러링이란 각 포트에 전송되는 데이터를 미러링하고 있는 포트에 똑같이 보내주는 것이다. SPAN포트는 기본적으로 네트워크 장비에서 간단한 설정으로 활성화 되지만, 포트 태핑은 하드웨어적인 장비를 이용한다.

  • 스니퍼의 탐지
스니핑공격은 네트워크에 별다른 이상 현상을 만들지 않기 때문에 사용자가 이를 인지하는 것이 어려워 능동적인 탐지를 통해서만 잡아낼수있다.

<PING 을 이용한 탐지>
대부분의 스니퍼는 일반 TCP/IP에서 동작하기에 Request를 받으면 Response를 전달한다. 이를 이용해 존재하지 않는 MAC주소를 위장하여 Ping을 보냈는데 ICMP Echo Reply를 받으면 해당 호스트가 스니핑을 하고 있는 것이다. 왜냐하면 존재하지 않는 MAC 주소를 사용했으므로 스니핑을 하지않는 호스트는 누구도 Ping Request 를 볼수 없는 것이 정상이기 때문이다.

<ARP를 이용한 탐지>
ping과 유사한 방법으로, 위조된 ARP Request를 보냈을 떄 ARP Response가 오면 프러미스큐어스 모드로 설정되어 있는 것이다.

<DNS를 이용한 탐지>
테스트 대상 네트워크로 Ping Sweep을 보내고 들어오는 Inverse-DNS lookup 을 감시하여 스니퍼를 탐지한다.

<Decoy를 이용한 탐지>
보안관리자는 가짜 ID와 Password를 네트워크에 뿌리고 공격자가 이 ID를 통하여 접속을 시도할때 스니퍼를 탐지한다.

<ARP Watch를 이용한 탐지>
ARP watch는 MAC 주소와 IP주소의 매칭 값을 초기에 저장하고 ARP 트래픽을 모니터링 하여, 이를 변하게 하는 패킷이 탐지되면 관리자에게 메일로 알려주는 툴이다.



스푸핑 공격 ( Spoofing Attack)


스푸핑의 사전적 의미는 '속이다'를 의미하며, 네트워크에서 스푸핑 대상은 MAC주소, IP주소 ,포트 등 네트워크 통신과 관련된 모든것이 될수 있다. 스푸핑 공격은 시스템 권한 얻기, 암호화된 세션 복호화하기, 네트워크 트래픽 흐름 바꾸기등 다양하게 사용 된다.


  • ARP 스푸핑 공격

ARP(Address Resolution Protocol)스푸핑은 MAC 주소를 속이는 것이다. 로컬에서 통신하고 있는 서버와 클라이언트의 IP 주소에 대한 MAC주소를 공격자의 MAC주소로 속임으로 상호간에 전달되는 패킷이 공격자에게 향하게 하여 랜의 통신 흐름을 왜곡 시킨다.

공격자는 서버와 클라이언트에게 본래의 IP에 해당하는 MAC주소 말고 가짜 MAC(공격자의) 주소를 알리므로 공격자에게 패킷이 전달이 된다.

윈도우에서는 arp -a 명령을 이용해 현재 인지하고 있는 IP와 해당 IP를 가지고 있는 시스템의 MAC주소 목록을 확인 할 수가 있으며 이를 ARP 테이블이라 한다.

ARP 스푸핑은 TCP/IP 프로토콜 자체의 문제로 근본적인 대책은 없다.



  • IP 스푸핑 공격

IP스푸핑은 쉽게 말해 IP 주소를 속이는 것으로, 다른이가 쓰는 IP를 강탈해 어떤 권한을 획득하는 것이다. 이는 트러스트 관계가 맺어져있는 서버와 클라이언트를 확인한후 클라이언트에 서비스 거부 공격을 하여 연결을 끊고, 공격자가 클라이언트의 IP주소를 확보하여 실제 클라이언트처럼 패스워드 없이 서버에 접근하는 것이다.


  • ICMP 리다이렉트 공격

ICMP리다이렉트는 3계층에서 스니핑 시스템을 네트워크에 존재하는 또 다른 라우터라고 알림으로써 패킷의 흐름을 바꾸는 공격이다.

가령 호스트A에 라우터A가 기본으로 설정되어 있을경우 호스트B에 보내기 위해서는 우선 라우터 A에 전달을 한후 라우터A보다 라우터 B에 가까울경우 호스트A에게 ICMP리다이렉트 패킷을 보내어 자신에게 돌아오지 않게끔한다. 호스트 A는 라우팅 테이블에 호스트 B에 대한 값을 추가하고 , 호스틑 B로 보내는 패킷은 라우터 B로 전달된다. 하지만 라우터B가 사실은 호스트였다면 지속적으로 패킷을 받을수가 있다.

간단히 말해 공격자를 라우터로 인지하고 데이터를 (공격대상이)보내는 것이다.


  • DNS스푸핑 공격

DNS스푸핑은 실제 DNS 서버보다 빨리 공격대상에게 DNS Respose 패킷을 보내 공격대상이 잘못된 IP주소로 웹접속을 하도록 유도하는 공격이다.

DNS패킷은 UDP패킷이므로 세션이 존재하지않으며 먼저 도착한 패킷을 신뢰하고 그 후에 온 패킷은 버린다. 보통 공격자는 로컬에 조냊하므로 지리적으로 DNS서버보다 가깝다. 따라서 DNS서버가 올바른 DNS Response 패킷을  보내주기 전에 클라이언트에게 위조된 DNS Response 패킷을 보낼수 있다.


세션 하이재킹 공격 ( Session Hijacking)


세션하이재킹은 '세션 가로채기'이다. 세션이 '사용자와 컴퓨터, 또는 두대의 컴퓨터 간의 활성화된 상태'이므로, 세션 하이재킹은 두 시스템 간 연결이 활성화 된 상태, 즉 로그인된 상태를 가로채는 것을 말한다.

TCP세션 하이재킹은 TCP가 가지는 고유한 취약점을 이용해 정상적인 접속을 빼앗는 방법이다. TCP는 서버와 클라이언트간 패킷의 연속성을 보장하기위해 각각 시퀀스 넘버를 사용한다. TCP 세션 하이재킹은 각각 잘못된 시퀀스 넘버를 위조해서 연결된 세션에 잠시 혼란을 준뒤 자신이 끼어들어가는 방식을 사용한다.

1. 클라이언트와 서버사이의 패킷을 통제한다. (ARP스푸핑등을 통해 통제)

2. 서버에 클라이언트 주소로 연결을 재설정하기 위한 RST(Reset)패킷을 보낸다. 서버는 클라이언트의 시퀀스 넘버가 재설정된것으로 판단하고, 다시 3-Way HandShaking을 수행한다.

3. 공격자는 클라이언트 대신 연결되어 있던 TCP 연결을 그대로 물려받는다.


세션 하이재킹을 막으려면 텔넷과 같은 취약한 프로토콜을 이용해서는 안되고 SSH와 같이 세션에 대한 인증수준이 높은 프로토콜을 이용해서 서버에 접속해야한다. 다른 대응책으로는 클라이언트와 서버간의 MAC주소를 고정시켜주는 것이다. MAC주소를 고정시키는 방법은 ARP 스푸핑을 막아주기때문에 결과적으로 세션하이재킹을 막을수 있다.


무선 네트워크 공격과 보안


기본적으로 무선랜은 Ethernet Like와 같은 개념으로, 보통 내부 네트워크의 확장으로 이용된다. 무선랜을 사용하려면 내부의 유선 네트워크에 AP(Access Point) 장비를 설치해야 한다.


AP보안

AP보호를 위한 첫번째 사항은 물리적 보호이다. AP도 스위치의 한 종류이므로 적절한 물리적인 통제가 필요하다. 또한 무선랜을 식별하기 위해 SSID를 사용한다. 해당 AP의 존재를 숨기고 싶을때 SSID 브로드캐스팅을 막고 사용자는 해당 AP에 접속하기 위해 SSID를 입력해야한다.


무선랜 통신 암호화 

<WEP의 암호화>

WEP는 무선랜 통신을 암호화 하는 가장 기본적인 방법이며 64비트와 128비트 암호화 방식을 사용하는데, 기본적으로 RC4 암호화 알고리즘을 사용한다. (보안성이 좋지않다)

<WPA & WPA-PSK의 암호화>

WPA/WPA2는 WEP의 보안 취약점이 드러난 이후 그 대안으로 나오게 되었다. WPA는 TKIP 알고리즘을 사용하며 기본적으로 WEP와 같은 RC4 키 스트림 암호화 알고리즘을 사용하지만 보안 강화를 위해 MIC라는 8바이트의 메세지 무결성 코드를 추가했고, IV 생성에서 새로운 배열 규칙을 적용했다.


'Study > Book' 카테고리의 다른 글

정보보안개론 0x06  (0) 2015.01.23
정보보안개론 0x05  (0) 2015.01.22
정보보안개론 0x04  (0) 2015.01.21
정보보안개론 0x03  (0) 2015.01.13
정보보안개론 0x01  (2) 2015.01.11