메뉴 건너뛰기

SayClub.org

정보보안(InfoSec)

Fragment의 취약점을 이용한 공격기술

 

Fragment의 취약점을 이용한 공격기술

 

- fragment를 조작함으로써 패킷 필터링 장비나 침입차단시스템을 우회 또는 서비스거부공격을 유발 시킬 수 있다.

  1. Tiny fragment 공격
     
    - 최초의 fragment를 아주 작게 만들어서 네트워크 침입탐지시스템이나 패킷 필터링 장비를 우회하는 공격

    - TCP 헤더(일반적으로 20바이트)가 2개의 fragment에 나뉘어질 정도로 작게 쪼개서 목적지 TCP 포트번호가 첫 번째 fragment에 위치하지 않고 두 번째 fragment에 위치하도록 한다. 패킷필터링 장비나 침입탐지시스템은 필터링을 결정하기 위해 포트번호를 확인하는데 포트번호가 포함되지 않을 정도로 아주 작게 fragment된 첫 번째 fragment를 통과시킨다. 다음으로 들어오는 fragment의 경우 포트번호가 포함되어 있지만 필터링을 거치지 않고 통과시킨다.

    - 최근 필터링 장비에는 TCP 헤더의 포트번호가 포함되지 않을 정도로 작은 첫 번째 fragment는 drop시키기도 한다.

    - 해당 공격 기법은 nmap을 통해서도 공격이 가능하다. (-f 옵션을 이용)
     
  2. Fragment Overlap 공격

    - Tiny fragment 공격기법에 비해 좀 더 정교한 공격기법

    - 공격자는 공격용 IP 패킷을 위해 두 개의 fragment를 생성한다. 첫 번째 fragment에서는 필킷 필터링 장비에서 허용하는 http(TCP 80) 포트와 같은 포트번호를 가진다. 그리고, 두 번째 fragment에서는 offset을 아주 작게 조작해서 fragment들이 재조합될 때 두 번째 fragment가 첫 번째 fragment의 일부분을 덮어쓰도록 한다. 일반적으로 공격자들은 첫 번째 fragment의 포트번호가 있는 부분까지 덮어씌운다. IDS에서는 첫 번째 fragment는 허용된 포트번호이므로 통과시키고, 두 번째 fragment는 이전에 이미 허용된 fragment의 ID를 가진 fragment이므로 역시 통과시킨다. 이 두 개의 fragment가 목적지 서버에 도달하여 재조합되면 첫 번째 fragment의 포트번호는 두 번째 fragment의 포트번호로 overwrite되고 TCP/IP 스택은 이 패킷을 필터링 되어야할 포트의 응용프로그램에 전달한다.
     
  3. IP Fragmentation을 이용한 서비스거부공격

    - Ping of Death 혹은 Teardrop과 같은 것이 fragmentation을 이용한 서비스거부공격

    - 해당 공격들은 이미 잘 알려져 있으며 많은 시스템에서 이미 패치가 완료되었음

    - Ping of Death : 표준에 규정된 길이 이상으로 큰 IP 패킷을 전송함으로써 이 패킷을 수신받은 OS에서 이 비정상적인 패킷을 처리하지 못함으로써 서비스거부공격을 유발 (Jolt 이용)

    -Teardrop : 두 번째 fragment의 offset을 조작하여 fragment들을 재조합하는 과정에서 버퍼를 넘쳐 겹쳐쓰게 한다. Teardrop 프로그램은 겹쳐쓰진 offset 필드를 가진 fragment를 만들어 목표 시스템에 보내며, fragment들을 재조합하는 목표 시스템을 정지시키거나 재부팅시킨다.(Bonk, New Teardrop 이용)

 

기타 사용 가능한 툴

 

- fragrouter : 한국인 해커 송덕준(Dug Song이란 닉네임으로 활동)이 만든 툴로 모든 패킷을 다양한 형태의 fragment로 쪼개어서 전송함으로써 공격사실을 숨길 수 있는 툴.

 

 

* 현재는 운영체제에서 IP Fragmentation을 이용한 서비스거부공격(시스템 중지 및 재부팅 유발 공격)에 견딜 수 있도록 패치가 되었다. 그렇기 때문에 해당 취약점에 의해 더 문제가 되고 있는 것은 IDS/IPS를 우회할 수 있는 기술이라는 것이다.
 침입탐지시스템의 경우 침입사실을 결정하기에 앞서 fragment된 패킷들을 재조합 해보아야만 취약점을 통해 우회가 된 사실을 알 수 있을 것이다. 하지만 fragment된 패킷을 재조합하기 위해서는 메모리, 프로세스 등의 많은 시스템 자원을 필요로 하고 이를 실시간 탐지에는 많은 어려움이 따른다.

위로