Ip Spoofing

TCP/IP 프로토콜의 결함에 대해서는 이미 1985년에 로버트 모리스의 논문 "A Weakness in the 4.2 BSD UNIX TCP/IP Software"에 언급되었고 1995년 유명한 해커 케빈미트닉이 이 이론을 실제화하여 해킹을 시도하다가 체포된 사건이 있었다. 이 사건 이후로 케빈미트닉이 사용한 해킹기술은 IP spoofing라는 용어로 불리게 되며 현재까지 TCP/IP 약점을 이용한 여러 가지의 공격기법 이 지속적으로 나오고 있다.

IP spoofing이란?

spoofing이라는 것은 '속이다'라는 의미이고 IP spoofing은 IP를 속여서 공격하는 기법을 의미한다. 현재 알려진 TCP/IP 프로토콜의 약점을 이용한 IP spoofing은 다음과 같다.

- 순서제어번호 추측(Sequence number guessing)

- 반(Half)접속시도 공격(SYN flooding)

- 접속가로채기(Connection hijacking)

- RST를 이용한 접속끊기(Connection killing by RST)

- FIN을 이용한 접속끊기(Connection killing by FIN)

- SYN/RST패킷 생성공격(SYN/RST generation)

- 네트워크 데몬 정지(killing the INETD)

- TCP 윈도우 위장(TCP window spoofing) 그러나 일반적으로 IP spoofing이란 케빈미트닉이 사용한 방법을 의미하며 순서제어번호추측 공격, 반(Half)접속시도 공격 등이 함께 사용되는 고난도의 수법으로 볼 수 있다.

공격과정

1. 위 그림에서 C는 A로 자신의 IP주소를 위장하여 SYN를 보내 접속요청을한다.

요청에 대한 응답으로 A가 C에 대한 ACK와 함께 자시의 SYN을 전송하지만 C가 이에 대해 ACK를 보내지 않으면 A는 자신이 보낸 ACK에 대한 C의 응답을 기다리게 된다. 이 과정을 연속적으로 반복하면 (예를 들어 SunOs의 경우, 약 8개 정도의 SYN패킷을 80초 정도 간격으로 보낸다.) A는 외부의 접속요청에 응답할 수 없는 오버플로우 상태가 된다. 2.이후, C는 B로 정상적인 접속을 시도하여 순서제어번호의 변화를 패킷 모니터링을 이용하여 관측한다. 3. 순서제어번호의 변화를 관찰아여 추측한 순서제어번호를 이용하여 C는 자신의 IP주소를 A로 가장한후 B에 접속요청(SYN)을 보낸다. (순서제어번호의 변화는, 예를 들어 4.4BSD에서 OS부팅시 1로 세트되고 0.5초마다 64,000씩 증가한다. 또한 새로운 TCP 접속이 만들어질 때마다 64,000씩 증가한다.) 4. B는 수신된 SYN 패킷이 A에서 온 것으로 인식, A에게 ACK와 새로운 SYN를 보내지만 이미 A는 외부와 통신 불능상태이므로 응답을 할 수 없게 된다.. (만일 A가 C보다 먼저 응답하여 RST을 보내게되면 C의 공격은 실패한다.) 5. C는 자신의 IP 주소를 A주소로 위장하여 추측된 순서제어번호를 이용해 B가 A로 보낸 SYN/ ACK에 대한 ACK를 B에 보낸다. 6. 결국 C와 B 불법적 접속이 이루어지고, B와 A는 연결되어 있는 것으로 착각한다. 7. 이후 rsh을 이용하여 echo '+ +' >/.rhosts과 같은 데이터를 보내면 된다.

방지대책

외부에서 들어오는 패킷중에서 출발지 IP주소(Source IP Address)에 내부망 IP주소를 가지고 있는 패킷을 라우터 등에서 패킷 필터링을 사용하여 막아낼 수 있다.

그러나 내부 사용자에 의한 공격은 막을 수 없으므로 각 시스템에서 TCPwrapper, ssh 등을 설치해서 운영하고 , rsh, rlogin 등과 같이 패스워드의 인증 과정이 없는 서비스를 사용하지 않는 것이 바람직하다.

그러나 여러종류의 IP spoofing은 TCP/IP의 설계와 구현상의 문제점에 기인한 것으로 새로운 프로토콜을 사용하지 않는 한 완벽한 보호대책은 존재할 수 없다. 다만 지속적인 보안관리 및 점검만이 최소한의 피해를 막을 수 있다고 할 수 있겠다.

누구나 수정하실 수 있습니다. 위키 사용법 참고하세요.