예제 프로그램 작성 및 테스트
TCP 패킷을 스니핑하고 RST 패킷을 송신하여 TCP 세션을 끊어 버리는 예제를 만들어 보자. 예제는 WinPcap 패킷 캡처 드라이버를 기반으로 하고 있기 때문에, 우선 WinPcap 사이트(http://winpcap.polito.it)에서 드라이버를 다운받아 설치하기 바란다.
예제를 컴파일하기 위해서는 델파이 환경에서 WinPcap을 사용할 수 있는 Snoop 컴포넌트를 설치해야 한다(http://www.snoopanalyzer.com). 드라이버와 컴포넌트가 설치되면 델파이에서 <화면 2>와 같은 폼을 작성하고 <리스트 1, 2, 3>에 있는 소스를 이용해 프로그램을 작성하도록 한다. 프로그램을 실행하여 <화면 3>과 같이 웹 브라우저를 실행하여 웹 사이트가 차단되는지를 확인해 본다. 예제는 이달의 디스켓을 참고하기 바란다.




원하는 패킷만 차단하기
WinPcap이라는 패킷 캡처 드라이버는 필터라는 기능을 제공하여 모든 패킷을 전부 스니핑하는 것이 아니라 자신이 원하는 패킷만을 스니핑할 수 있다. 이 필터 기능을 이용해 특정 서비스만을 차단할 수도 있다.

<화면 4>는 포트 번호가 4661번 및 4662번인 패킷만을 스니핑해서 P2P 서비스를 차단하는 예제를 보여 주고 있다. <표 3>에서는 유명한 인터넷 서비스에 대해 차단하거나 제한할 수 있는 간단한 필터들을 정리해 보았다. 이 필터들은 정확한 내용도 아니고 100% 차단되지는 않으며 대부분 필자의 경험적인 내용이다.

요즘 인터넷 서비스는 차단하는 방식을 우회하여 접속이 가능할 수 있도록 점점 지능화되어 가는 추세에 있기 때문에 단순한 IP나 포트 번호만을 판별해 차단하기는 점점 힘들어지고 있다. 특히 MSN 메신저 서비스는 접속이 불가능한 네트워크 환경인 경우 80번 포트(HTTP)까지 사용하기 때문에 단순히 IP나 포트 번호 정보만을 이용해서는 안 되며, 응용 프로그램 레이어의 내용까지 검토해 봐야 차단이 가능한 실정이다.
각종 인터넷 서비스 차단하기
지능화되어 있는 인터넷 서비스를 차단하려면 결국 각각의 서비스별로 별도의 프로그래밍을 하여 차단할 수밖에 없다. 가장 널리 쓰이고 있는 MSN 메신저를 예로 들어 간략하게 설명해 보고자 한다.
MSN 서비스는 우선 1863 포트 번호를 이용하여 서버에 접속을 시도한다. 1863 포트 번호를 이용하여 서버로 접속되지 않는 경우 다시 포트 번호 80번을 사용하여 접속을 시도하여 HTTP 프로토콜로 통신한다. 일반적으로 회사나 공공기관에서 HTTP 통신을 차단하기가 현실적으로 어렵다는 점을 이용한 것이다.
하지만 이런 경우에도 이 패킷이 일반적인 웹 통신인지 아니면 MSN 패킷인지를 구별할 수 있는 방법이 여러 가지가 있는데 가장 좋은 방법 중 하나가 User-Agent 값을 확인해 보는 것이다. MSN에서 HTTP 통신을 하는 경우 User-Agent 부분에 ‘MSN Messenger’라는 문자열이 포함되어 있다. 이 스트링이 포함된 HTTP 통신인 경우 RST 패킷을 보내는 방법을 이용하면 된다.
개인적으로 ‘회사에서 쓸려고 하는데 이런 서비스를 막아주는 프로그램 좀 만들어 주세요’라는 요청을 많이 받는 편이다. ‘단순히 IP나 포트로만 막을 수 없다면 결국에는 TCP 레이어 위에 있는 응용 프로그램 레이어의 내용까지 봐야 합니다’라고 응답을 하는데, 기본적인 TCP의 성격이나 전문적인 프로그래밍의 실력을 갖추고 있는 네트워크 관리자를 보유하고 있는 업체가 드문 편이라서 어려움을 많이 겪을 것이다. 이번 연재를 통해 네트워크 관리자들에게 조금이나마 도움이 됐으면 하는 바람이다. 연재와 관련된 프로그램 등의 자료는 필자의 개인 홈페이지(http://www.gilgil.co.kr)에 올려놓고 있으므로, 관심 있는 독자는 한번 들러주기를 바란다.
개인적인 생각으로 TCP/IP라는 프로토콜이 엉터리라고 보지는 않지만 오랜 기간을 거쳐서 충분히 검토되어 온 완벽한 프로토콜이라고 보기도 어렵다. 오히려 많은 네트워크 벤더들이 OSI 모델보다는 TCP/IP 모델을 기반으로 하는 제품들을 출시해 왔기 때문에 TCP/IP가 세계적으로 표준화된 프로토콜이 되어 버렸다고 보는 것이 맞을 것이다.
사실 내부적으로 보면 현재 잘 사용하지 않는 필드들도 있으며, 결국 이러한 필드 사용의 축적은 네트워크 장비를 복잡하게 하고 쓸모없는 네트워크 트래픽만을 야기한다고 해도 틀린 말은 아닐 것이다(큰 문제가 될 정도로 심각하지는 않지만). 그렇다고 해서 우리나라에서 TCP를 대처하는 새로운 프로토콜을 만들어 보자는 현실성 없는 얘기를 하는 것은 아니다.
IPv6 인터넷 환경은 점차 확산되고 있다. 새로 접해야 하는 표준 프로토콜에 대해 어떤 것이 옳고 그른지 판단하기 위해, 개선적인 방향으로 나아가기 위해, 이미 만들어진 그들만(?)의 프로토콜을 이해하기 위해 스니핑을 사용하는 행위 자체가 단지 해킹의 범주만은 아니라는 인식이 일반화되어야 한다는 것이 필자의 바람임을 조심스럽게 얘기해 본다.
정리 | 전만환 | mhjun@korea.cnet.com
TCP 패킷을 스니핑하고 RST 패킷을 송신하여 TCP 세션을 끊어 버리는 예제를 만들어 보자. 예제는 WinPcap 패킷 캡처 드라이버를 기반으로 하고 있기 때문에, 우선 WinPcap 사이트(http://winpcap.polito.it)에서 드라이버를 다운받아 설치하기 바란다.
예제를 컴파일하기 위해서는 델파이 환경에서 WinPcap을 사용할 수 있는 Snoop 컴포넌트를 설치해야 한다(http://www.snoopanalyzer.com). 드라이버와 컴포넌트가 설치되면 델파이에서 <화면 2>와 같은 폼을 작성하고 <리스트 1, 2, 3>에 있는 소스를 이용해 프로그램을 작성하도록 한다. 프로그램을 실행하여 <화면 3>과 같이 웹 브라우저를 실행하여 웹 사이트가 차단되는지를 확인해 본다. 예제는 이달의 디스켓을 참고하기 바란다.




원하는 패킷만 차단하기
WinPcap이라는 패킷 캡처 드라이버는 필터라는 기능을 제공하여 모든 패킷을 전부 스니핑하는 것이 아니라 자신이 원하는 패킷만을 스니핑할 수 있다. 이 필터 기능을 이용해 특정 서비스만을 차단할 수도 있다.

<화면 4>는 포트 번호가 4661번 및 4662번인 패킷만을 스니핑해서 P2P 서비스를 차단하는 예제를 보여 주고 있다. <표 3>에서는 유명한 인터넷 서비스에 대해 차단하거나 제한할 수 있는 간단한 필터들을 정리해 보았다. 이 필터들은 정확한 내용도 아니고 100% 차단되지는 않으며 대부분 필자의 경험적인 내용이다.

요즘 인터넷 서비스는 차단하는 방식을 우회하여 접속이 가능할 수 있도록 점점 지능화되어 가는 추세에 있기 때문에 단순한 IP나 포트 번호만을 판별해 차단하기는 점점 힘들어지고 있다. 특히 MSN 메신저 서비스는 접속이 불가능한 네트워크 환경인 경우 80번 포트(HTTP)까지 사용하기 때문에 단순히 IP나 포트 번호 정보만을 이용해서는 안 되며, 응용 프로그램 레이어의 내용까지 검토해 봐야 차단이 가능한 실정이다.
각종 인터넷 서비스 차단하기
지능화되어 있는 인터넷 서비스를 차단하려면 결국 각각의 서비스별로 별도의 프로그래밍을 하여 차단할 수밖에 없다. 가장 널리 쓰이고 있는 MSN 메신저를 예로 들어 간략하게 설명해 보고자 한다.
MSN 서비스는 우선 1863 포트 번호를 이용하여 서버에 접속을 시도한다. 1863 포트 번호를 이용하여 서버로 접속되지 않는 경우 다시 포트 번호 80번을 사용하여 접속을 시도하여 HTTP 프로토콜로 통신한다. 일반적으로 회사나 공공기관에서 HTTP 통신을 차단하기가 현실적으로 어렵다는 점을 이용한 것이다.
하지만 이런 경우에도 이 패킷이 일반적인 웹 통신인지 아니면 MSN 패킷인지를 구별할 수 있는 방법이 여러 가지가 있는데 가장 좋은 방법 중 하나가 User-Agent 값을 확인해 보는 것이다. MSN에서 HTTP 통신을 하는 경우 User-Agent 부분에 ‘MSN Messenger’라는 문자열이 포함되어 있다. 이 스트링이 포함된 HTTP 통신인 경우 RST 패킷을 보내는 방법을 이용하면 된다.
개인적으로 ‘회사에서 쓸려고 하는데 이런 서비스를 막아주는 프로그램 좀 만들어 주세요’라는 요청을 많이 받는 편이다. ‘단순히 IP나 포트로만 막을 수 없다면 결국에는 TCP 레이어 위에 있는 응용 프로그램 레이어의 내용까지 봐야 합니다’라고 응답을 하는데, 기본적인 TCP의 성격이나 전문적인 프로그래밍의 실력을 갖추고 있는 네트워크 관리자를 보유하고 있는 업체가 드문 편이라서 어려움을 많이 겪을 것이다. 이번 연재를 통해 네트워크 관리자들에게 조금이나마 도움이 됐으면 하는 바람이다. 연재와 관련된 프로그램 등의 자료는 필자의 개인 홈페이지(http://www.gilgil.co.kr)에 올려놓고 있으므로, 관심 있는 독자는 한번 들러주기를 바란다.
개인적인 생각으로 TCP/IP라는 프로토콜이 엉터리라고 보지는 않지만 오랜 기간을 거쳐서 충분히 검토되어 온 완벽한 프로토콜이라고 보기도 어렵다. 오히려 많은 네트워크 벤더들이 OSI 모델보다는 TCP/IP 모델을 기반으로 하는 제품들을 출시해 왔기 때문에 TCP/IP가 세계적으로 표준화된 프로토콜이 되어 버렸다고 보는 것이 맞을 것이다.
사실 내부적으로 보면 현재 잘 사용하지 않는 필드들도 있으며, 결국 이러한 필드 사용의 축적은 네트워크 장비를 복잡하게 하고 쓸모없는 네트워크 트래픽만을 야기한다고 해도 틀린 말은 아닐 것이다(큰 문제가 될 정도로 심각하지는 않지만). 그렇다고 해서 우리나라에서 TCP를 대처하는 새로운 프로토콜을 만들어 보자는 현실성 없는 얘기를 하는 것은 아니다.
IPv6 인터넷 환경은 점차 확산되고 있다. 새로 접해야 하는 표준 프로토콜에 대해 어떤 것이 옳고 그른지 판단하기 위해, 개선적인 방향으로 나아가기 위해, 이미 만들어진 그들만(?)의 프로토콜을 이해하기 위해 스니핑을 사용하는 행위 자체가 단지 해킹의 범주만은 아니라는 인식이 일반화되어야 한다는 것이 필자의 바람임을 조심스럽게 얘기해 본다.
정리 | 전만환 | mhjun@korea.cnet.com
"Network" 카테고리의 다른 글
- 주로 사용하는 서비스의 포트 할당 (0)2007/01/09
- Denial of Service Attack (0)2006/11/24
- TCP 통신 차단 기법을 이용한 인터넷 서비스 차단-2 (0)2005/10/12
- TCP 통신 차단 기법을 이용한 인터넷 서비스 차단-1 (0)2005/10/12
- 네트워크 패킷 필터 드라이버 (0)2005/08/30

수안이의 컴퓨터 연구실



Leave your greetings.