http://www.cse.scu.edu/~tschwarz/COEN252_09/Lectures/IPTraffic.html 참고

IP fragmentation 정의

- IP 프로토콜은 IP패킷을 작은 몇개의 패킷으로 나누어 전송되고 목적지 시스템에서 재조합하는 것을 허용하는데 이러한 과정을 fragmentation이라고 부른다. IP fragmentation은 데이터그램이 네트워크를 통해 전송될 때, 전송되는 IP 데이터그램의 크기가 전송될 수 있는 최대크기 보다 클 경우 발생한다.

- ethernet에서 전송 가능한 IP 데이터그램의 최대크기(MTU)는 1,500바이트이다. 만약 1,500바이트보다 큰 데이터그램이 전송된다면 fragmentation이 발생하게 된다.


IP fragmentation 예제


Kali linux(192.168.100.14)에서 target pc(192.168.100.5)에 4000바이트의 ICMP데이터를 전송하였다.


데이터그램의 총 크기는 4,028(4000+20(ip header)+8(icmp header))바이트가 된다. 

그러나 데이터그램의 최대 크기는 1,500바이트이기 때문에 fragment가 발생한다.

아래는 예이다. 자세한 내용은 최상위 첨부를 참고하면 된다.

다른건 위의 것과 동일하고 다만 ID만 54321에서 40818로 생각하면 되겠다.


요약

1. 공격자는 타겟에 4,000바이트의 ICMP 데이터를 전송하였다.

2. 데이터 그램의 총 바이트는 4,028이 된다.(4,000+20(ip header)+8(icmp header))
3. MTU가 1,500바이트이기 때문에 3개로 fragment로 쪼개진다.

  1)첫 조각1,500= 20(ip header)+8(icmp header)+1,472(data)    //남은 데이터 수: 2,528

  2)두 번째 조각1,500= 20(ip header)+1,480(data)              //남은 데이터 수: 1,048

  3)세 번째 조각1,068= 20(ip header)+1,048(data)

  4,068-4028=40(ip header*2)


공격 유형
(그림 출처: http://www.slideshare.net/gofortution/best-3178984)

1) tiny fragment attack

- tiny fragment는 최초의 조각을 아주 작게 만들어서 네트워크 침입탐지시스템이나 패킷 필터 장비를 우회할 수 있다.
TCP 헤더(default 20바이트)가 2개의 조각으로 나뉘어질 정도로 작게 쪼개서 목적 포트가 두 번째 조각에 위치하도록 함

  침입탐지시스템이나 패킷필터 장비에서 포트번호를 확인하는데 작게 쪼개어진 첫 번째 조각을 통과 시킨다. 또한, 실제 포트가 포함된 두 번째 조각을 검사 없이 통과시키기 때문에 서버에서 조각은 재 조합이 되어 공격자는 무사히 연결할 수 있다.  



2) fragment overlap

- fragment overlap공격을 위해 공격자는 두 개의 조각을 생성한다.
첫 조각에는 필터 장비에서 허용하는 예를 들면 80포트를 가진다. 그리고 두 번째 조각에는 offset을 아주 작게 하여 재 조합 시, 두 번째 조각을 첫 번째 조각의 일부분을 덮어쓰게 한다. 일반적으로 첫 조각의 포트 번호를 포함하여 덮어쓴다.

침입 장비에서는 첫 번째 조각이 허용된 포트번호 80이기 때문에 통과시키고 두 번째 조각은 이미 허용된 id이기 때문에 역시 통과시키게 된다. 통과되면 재 조합 시 첫 번째 조각을 덮어쓰기 때문에 두 번째 포트번호의 포트번호로 전달되게 된다.

위의 그림을 보면 80번 포트는 OK를 해서 통과되고 이후 2번째 조각의 23번 포트로 1번포트를 덮어쓰고 서버 23번 포트의 응용프로그램으로 전달되는 것을 의미한다.


3) DoS공격

(http://kkn1220.tistory.com/75 참고)

+ Recent posts