IP 보안 취약점
1.스니핑(Sniffing)
sniff라는 단어에는 냄새를 맡다, 코를 킁킁거리다 라는 의미가 있습니다. 그래서 이처럼 데이터들 사이에서 냄새를 맡듯이 원하는 데이터를 찾는것을 지칭합니다. 즉 일종의 네트워크 도청이라 할 수 있습니다. 가끔 보안 뉴스같은데서 나오는 인터넷 도청 같은게 대부분 이런식이죠.
그리고 이 공격은 공격자가 공격시에는 아무런 행위를 하지 않는 수동적인 공격이기 때문에 지금 공격당하고 있는지도 잘 모르는 경우가 많습니다.
이러한 스니핑 공격을 웹 호스팅,IDC등과 같이 여러 업체가 같은 네트워크를 공유하는 환경에서는 위협적인데요, 이유는 하나의 시스템이 공격당하게 될 경우 그 시스템을 이용하는 다른 시스템들의 정보를 빼낼수가 있기 때문이지요.
스니핑을 할 때는 랜카드는 프라미스큐어스 모드(자신의 주소값을 무시하고 모든 패킷을 받아들이게 되는 모드)에 들어가게 되며, 모든 패킷을 수집하여 원하는 정보를 빼내게 됩니다.
2.IP 스푸핑(Spoofing)
IP스푸핑은 IP프로토콜 자체의 취약성을 이용한 공격입니다. 앞의 모듈 1에서 자세한 설명이 나와있습니다....만 전 그런 설명을 안올렸군요.
IP프로토콜의 취약점이란, IP에는 전송자와 수신자의 IP가 들어가 있는데, IP에는 보안체계가 매우 허술하기 때문에(TCP에서의 보안을 믿기에 별다른 보안체계가 있지 않습니다.) 그 전송자와 수신자의 IP를 바꿀수 있게 되는 것을 말합니다.
공격자는 이런 취약점을 이용하여 자신의 IP를 전송자의 IP로 바꾸고 수신자에게 침입을 시도하게 되는데요 이를 IP 스푸핑이라 합니다.
IP스푸핑에는 2가지 종류가 있습니다. 우선 첫째는 Non - Blind IP 스푸핑 공격인데요 이때는 호스트 사이의 주고받는 패킷을 볼 수 있는 상태에서 발생하는 것으로, 시퀸스 번호를 알 수 있기에 쉽게 공격이 가능하게 됩니다.
두번째는 Blind IP 스푸핑 공격으로서 호스트 사이에 주고받는 패킷을 볼 수 없는 상황에서의 공격이기에 시퀸스 번호를 얼마나 잘 추정하냐에 따라서 공격의 성공여부가 결정이 됩니다. 예전에는 시퀸스 번호가 추정이 쉬웠으나 요즘엔 꽤 어려워 졌기에 공격성공률은 많이 낮아진 상황입니다.
IP스푸핑의 경우 공격자의 소스를 위장할 수가 있기 때문에 이런 공격 패킷의 출처를 알기가 매우 힘듭니다.
3.Abuse of Source Routing
일반적인 패킷은 목적지까지 가기 위한 경로는 그 경로상에 있는 라우터에 의해 정해질 뿐 그 패킷 자체는 경로에 관해서 아무런 정보도 가지고 있지 않습니다.
IP프로토콜의 특징중 하나는 라우팅 경로를 지정해서 보내게 될 경우 그에 대한 응답은 정해진 경로의 역순으로 오게 된다는 것입니다. 이를 악용하여 IP옵션을 사용하여 패킷의 경로를 설정한 뒤 스푸핑한 정보를 보내게 되면 희생자는 공격자에게 정보를 보내게 됩니다.
4.Land Attack
land에는 나쁜상태에 빠지게 하다 란 의미도 가지고 있습니다. 말 그대로 이 land공격은 상대를 나쁜 상태에 빠지게 하는 공격이며 공격법도 매우 간단합니다.
IP패킷은 수신된 뒤에 송신자의 주소로 답신을 하게 됩니다. 이때 그 송신자의 IP주소가 수신자의 IP주소일 경우 패킷이 무한으로 돌게 되고 결국 시스템은 다운되게 됩니다.
하지만 요즘은 왠만한 OS에선 송신자와 수신자의 IP주소가 같을 경우 Drop시키기 때문에 거의 통하지 않는 방법입니다.
5.Using Fragmentation Attack
IP 포로토콜은 IP 패킷을 몇개의 작은 패킷으로 나누고, 목적지에서 재 조합되는 과정을 허용합니다. 이 과정을 fragmentation이라 부르며, 최대 패킷 사이즈를 초과한 데이터의 전송도 가능하게 합니다.
이를 이용해서 공격하는 방법은 TCP헤더를 2개의 fragment로 나눠질 정도로 잘게(?) 쪼갠 뒤 공격할 목적지의 포트 번호가 첫번째 fragment에 위치하지 않고 두번째 fragment에 위치하게 만듭니다. 이렇게 하면 대부분의 패킷필터링 장비나 침입탐지 시스템은 포트번호를 확인하고 그것이 공격패킷인지 아닌지를 확인하게 되는데 이때 첫번째 fragment에 포트번호가 없다면 나머지 fragment들은 그냥 통과시키게 됩니다. 이렇게 되면 결국 목적지에서 패킷들은 재 조합되게 되고 결국 공격이 실행되게 됩니다.
ARP 보안 취약점
ARP 프로토콜
일반적으로 TCP/IP 네트워크 환경에서는 IP의 주소나 ARP주소를 사용하여 상대를 인식하는 취약성을 가지고 있기에 남으로 위장하기가 쉽고 현재까지도 이것이 문제점으로 지적되고 있습니다. 하지만 이를 바꾸기가 결코 쉽지 않기 때문에 획기적인 방법이 나오기 전까지는 이 방법이 계속 쓰일것이기에 이런 취약점때문에 발생하는 문제들에 대해서는 잘 알아두어야만 합니다.
ARP는 네트워크를 구성하는 노드들의 하드웨어 주소(6bytes)와 IP주소(4bytes)를 확인하기 위해 고안된 프로토콜입니다. 확인하는 방법은 다음과 같습니다.
1.ARP Request : A컴퓨터가 네트워크에 브로드케스팅을 한다.
2.ARP Reply : B컴퓨터가 A 컴퓨터에게 유니케스트로 응답한다.
3.Reverse ARP Request : A컴퓨터가 네트워크에 브로드케스팅을 한다.(RARP 방식)
4.Reverse ARP Reply : B컴퓨터가 A 컴퓨터에게 유니케스트로 응답한다.
(브로드 케스팅이란? 데이터는 IP주소만으로는 상대에게 전송할 수가 없고 MAC주소가 있어야 전송이 가능한데 이때 MAC주소를 알기 위하여 그 네트워크에 있는 모든 호스트들에게 호스트의 IP와 자신이 가지고 있는 수신자의 IP가 같은지 물어보고 이때 같은 IP가 있을경우 그 호스트가 MAC주소를 보내는 방식을 말합니다.-대답하는 경우는 유니케스트라 합니다-)
ARP 프로토콜의 구조적 문제
이런 ARP프로토콜은 인증 메커니즘이 없습니다. 만약 악의적인 목적으로 ARP Reply들을 주기적으로 보낸다면 희생자는 소스에 대한 검증없이 ARP table에 반영됩니다. 즉 ARP Reply 메세지가 옳은 것인지 옳지 않은 것인지 판단할 기준이 없다는 것입니다. 그때문에 ARP cache의 기존 정보를 쉽게 변경할 수가 있습니다.
ARP 프로토콜의 악의적 이용
-서비스 거부 공격(DoS Attack)
공격자가 네트워크를 통하여 라우터에 관련된 ARP Reply메시지를 공격대상 호스트에게 전달해 줍니다. 이때 보내지는 ARP Reply 메시지에는 발신자가 라우터의 IP로 설정되며 그때 라우터의 하드웨어 주소를 네트워크에 존재하지 않는, 허위 주소로 설정합니다. 즉, ARP Reply를 받은 대상은 외부와의 네트워크를 하지 못해 서비스 거부공격 상태에 빠지게 됩니다.
이 서비스 거부공격은 하기도 쉬우며 다른 2차적 공격을 위해 사용하는 경우도 있으므로 충분한 주의를 기울여야 합니다.
-Man in the Middle
동일 네트워크에 존재하는 두 호스트의 통신을 가로채 중간에서 주요 정보를 획득하거나 조작하는 공격입니다.
일종의 스니핑이랄까요.
서로의 컴퓨터에게 자신의 주소가 들어있는 ARP Reply를 각각 보내어 자신의 컴퓨터를 지나게 하여 정보를 가로채는 방법입니다.
-Mac Flooding
이 공격은 네트워크 스위치 장비를 공격하기 위한 ARP Cache Poisoning 공격입니다. 스위치는 네트워크의 패킷 전달을 위해 ARP 테이블을 사용합니다. 이때 공격자는 수많은 양의 ARp Reply를 스위치로 전송하여 스위치로 하여금 더이상 스위치 모드로 동작할 수 없게 만듭니다. 이때 이렇게 되면 대부분의 스위치는 허브모드로 전환하게 되는데요, 허브모드가 되면 보안기능이 없기 때문에 공격자는 스니핑을 통하여 네트워크 상의 중요한 데이터를 얻게 될 수 있습니다.
(이렇게 여러 ARP Reply가 오게 될 경우 스위치는 2가지 선택을 할 수 가 있습니다. 스위치로서의 기능을 버리고 허브로서 작동을 하게 되는것을 Fail Open이라 하고, 그냥 기능을 정지시켜 버리는것을 Fail Close라고 합니다. 보안을 위해서는 Fail Close가 좋지만 업무를 위해서는 Fail Open쪽이 효율이 좋기에 대부분은 Fail Open을 선택하고 있습니다.)
-Switch Jamming
MAC Flooding과 거의 비슷한 공격입니다. MAC 주소를 지속적으로 스위치에게 전송하여 ARP table의 오버플로우를 유도하여 Fail Open 상태로 몰고가는 방식의 공격입니다.
-ARP Redirect
위조도니 ARp Reply를 보내는 방법을 이용하는 공격입니다. ARP의 취약점중 하나는 네트워크가 중단되면 경로를 재설정 하게 되는데요 이때 이 경로를 공격자의 컴퓨터를 거치게 만들어 버리는 공격입니다. 결국 모든 트래픽이 공격자의 컴퓨터를 지나게 되고 공격자는 스니퍼를 통하여 원하는 정보를 도청할 수 있게 되는 것입니다.
-ARP Spoofing
ARP Redirect와 비슷한 공격 방법으로서, 다른 세그먼트에 존재하는 호스트의 트래픽을 스니핑하고자 할 때 사용합니다. 공격자는 자신의 MAC 주소를 스니핑하고자 하는 호스트의 MAC 주소로 위장하는 ARP Reply(or Request)패킷을 네트워크에 뿌립니다. 이러한 Reply를 받은 호스트와 게이트웨이는 자신의 ARP Cache를 업데이트하게 되고, 연결이 일어날 때 공격자 호스트의 MAC 주소를 사용하게 됩니다. 결국엔 모든 트래픽이 공격자의 호스트를 거치게 되게 됩니다.
오늘은 여기까지만 적도록 하겠습니다.
사실은 어제부터 작성하기 시작한건데... 이거 의외로 양이 많더군요 -_-;;;(사실 Module 1보다 페이지수는 좀 더 적은듯 하지만...) 이제부터 본격적인 보안 관련 부분으로 들어갑니다만.... 이번주에도 Kucis 강의가 있고(이번엔 리버스더군요. 제가 가장 관심있는 분야라 엄청 기대중입니다.) 따로 프로그래밍을 해야하는것도 있기에... 나머지 파트가 과연 언제 올라올지는 장담하지 못하겠군요.
Module 1,2 같은 경우는 기초 관련이라 그냥 대강대강 성의없게(...) 적었습니다만, 지금부터는 본격적인 내용이 들어가기 때문에 말투도 바꾸고, 좀 더 자세하게 적으려고 노력하고 있습니다. 덕분에 양이 좀 심하게 늘어버리긴 했습니다만... 그래도 자세하면 다음에 제가 볼때도 더욱 도움이 되는거니까요 뭐...
그럼 저는 이만 물러나겠습니다.


