[제품] NetSpear DDoS 트랙픽 생성기 Develop Tip

2010년7월7일에는 기자 간담회를 했었다.
우리회사 (CQVista)에서 만든 NetSpear라는 제품을 소개하기 위함이었다.
간단히 이야기 하면 BotNet 등을 통한 공격이 많은데 이를 방어하기 위하여
몇년 전부터 Anti-DDoS 장비들이 팔리고 있다.
한데 이를 제대로 테스트 및 검증을 위해서 대부분,
IXEA, BreakingPoint, Smartbit, Avalnche 등의 계측기에 의존하여 테스트 및 검증을 한다.

물론 몇가지 소프트웨어로 된 테스트를 하기는 하지만, 주로
ping3 등과 같은 오픈 소스 또는 NetBotAttacker 라는 중국산
봇넷 C&C 프로그램과 많아야 10여대의 장비를 쌓아놓고
테스트를 진행한다.

문제는 봇넷 역시 감염된 PC 에서 몰래 돌고 있는 소프트웨어라는 점이며,
이것이 기존 계측기에서 표현하고자 하는 공격과 다를 수 있다는 점이다.

지금까지 DoS(Denial of Service) 공격은 이미 과거에서 부터 존재해 왔으며
그것이 BotNet이 나타나고 대량으로 분산되어 공격이 들어와서 분산 DoS (DDoS)
라고 이름 붙여진다.

과거 1.25 대란이라는 것이 실은 DDoS의 시초이며 이는 슬래머웜이라는 것에 의하여
발생되었고, 이것으로 인하여 그 전에 없었던 IPS (침입방지시스템)이라는 것이
방화벽 만큼이나 유명해져 팔리게 된 계기가 되었다.

이것과 유사한 사건으로 작년에 있었던 7.7 대란이 있었는데,
이것은 실제 존재하는 BotNet을 이용하여 여러 사이트를 공격하여 
서비스가 중단되게 되었던 것이다.
물론 이 덕에 Anti-DDoS 장비들이 많이 깔리게 된 계기가 되었다.

패킷의 패이로드에 대한 시그니쳐로 악성 공격을 방어하는 IPS의 테스트는
생각보다는 쉽다. 해당 시그니쳐를 포함하는 패킷을 대량으로 뻥튀기 하여 
보내보고 잘 막나 못 막나 확인하면 되는 O/X의 문제이다.
이것을 위해 IPS로 유명한 TippingPoint의 토마호크라는 OpenSource가 있으며,
이를 계측기화 하여 회사를 만들은 것이 지금의 BreakingPoint 이다.

하지만 현재 Anti-DDoS의 방어를 제대로 테스트 하기란 쉽지 않다.
말하자면 봇넷으로 직접 공격을 해서 막는지 못하는지 확인해야 하는데,
이것이 봇넷을 구입하는 것도 불법이요, 그것을 이용하는 것도 불법이기 때문이다.

따라서 이것에 대한 것을 몇년 전부터 준비를 해 왔었다.
NSPG (Network Sending Packet Generator)라는 것을 소스포쥐에 올려
순수한 소프트웨어 방식으로 임의의 패킷을 위변조(랜덤) 하여 보낼 수 있는
것을 만들어 올렸다.

그 후에 소프트웨어 방식을 커널의 모듈로 커널 쓰레드(하나의 커널 코어)가 하나의 포트를
담당하여 직접 NIC 카드로 패킷을 보낼 수 있는 방식으로 바뀌었고,
이를 상품화 하게 되었다.
이렇게 커널로 보내면 최소 64byte 로 1G 에서 이론적으로 보낼 수 있는 패킷 수가
1,488,092개로 나오는데, 74byte TCP SYN 이 거의 120만개 정도 나온다.

문제는 L7 봇넷 시뮬레이션인데 처음 접근은,
VirtualBox를 이용한 가상화를 이용해 보았으나,
이는 관리 및 서로다른 IP를 갖는 것이 가상화 머신의
개수에 제약을 받는다.
결국은 현재의 5만 봇 시뮬레이션을 하기에 이르렀고,
이를 이용하면 쉽게 봇 테스트를 할 수 있다.

하지만, 아직은 HTTP 만 지원하므로 추후 필요한 프로토콜은
확장할 계획인다.

실제 앞서 언급한 계측기로 다 테스트를 완비한 장비들도,
소스트웨어 방식의 봇넷 시뮬레이션을 제대로 방어를 하지 못해
실제 웹서버가 죽는 것을 실험실 및 인터넷 환경에서 확인을 하였다.

그 이유는 어떻게 보면 간단하다.
왜냐하면 통신상으로 놓고 보았을 때,
봇이 요청하는 HTTP 통신이나 사람이 F5를 누르면서 하는
HTTP 통신이 결국은 똑같기 때문에,
정상/비정상을 가리는 것이 불가능하다.

따라서 5만명이 한 웹서버에 동시 접속을 하여
서비스가 안되는 현상이나 봇넷 시뮬레이션을 통해
5만개의 서로 다른 IP로 통신을 하며 HTTP GET 요청을 하는 것이
차이가 없기 때문에 죽을 수 밖에 없는 것이다.

물론 사람이 만든 것이기에, 결국은 어떻게던 해결책이 나올 것이지만 말이다.

NetSpear 브로셔

덧글

  • 2013/05/02 19:35 # 삭제 답글 비공개

    비공개 덧글입니다.
  • 지훈현서아빠 2013/05/02 21:13 #

    실험실 용이시라면, http://code.google.com/p/bonesi/ 를 참조하시면 될 듯 싶습니다~
    나중에 어려움이 있으시면 또 연락주세요~ ^^
  • Lespaul 2013/05/03 14:47 # 삭제 답글

    답변주셔서 감사합니다.^^

    문제가 생기면 다시 연락드리겠습니다.ㅎ
댓글 입력 영역

구글애드텍스트