2015년 4월 14일 화요일

DDOS(Distributed Denial of Service) 공격

ㅇ ㅂㅇ

DDOS 공격

DDos 공격의 구조
 > 공격자(Attacker) : 공격을 주도하는 해커의 컴퓨터다.
 > 마스터(Master) : 공격자에게서 직접 명령을 받는 시스템으로, 여러대의 에이전트(Agent)를 관리한다.
 > 핸들러(Handler) 프로그램 : 마스터 시스템의 역할을 수행하는 프로그램이다.
 > 에이전트(Agent) : 공격 대상에 직접 공격을 가하는 시스템이다.
 > 데몬(Daemon) 프로그램 : 에이전트 시스템 역할을 수행하는 프로그램이다.

< 왼쪽부터 공격자 / 마스터 / 에이전트 / 목표물 순서 >

공격자가 마스터와 에이전트를 획득하여 실제적으로 DDoS 공격을 하는 순서
 1). 많은 사용자가 사용하며, 대역폭이 넓다. 관리자가 모든 시스템을 세세하게 관리 할 수 없는 곳의 계정을 획득하여 스니핑이나 버퍼 오버플로우 등의 공격으로 설치 권한이나 루트 권한을 획득한다.
 2). 잠재적인 공격으 대상을 피하기 위해 네트워크 블록별로 스캐닝을 실시한다. 그리고 원격지에서 버퍼 오버플로우를 일으킬 수 있는 취약한 서비스를 제공하는 서버를 파악한다.
 3). 취약한 시스템 목록을 확인 후 실제 공격을 위한 프로그램을 작성한다.
 4). 권한을 획득한 시스템에 침투하여 프로그램을 컴파일하여 설치한다.
 5). 설치한 프로그램으로 공격을 시작한다.

다양한 DDoS Tool
TFN(TribedFlood Network)
 > 1999년 8월 사고를 일으켰던 Trinoo의 약간 발전된 형태로 믹스터(Mixter)라는 사람이 개발
 > TeletubbyFlood Network라고 부르기도 함
 > TFN도 Trinoo처럼 statd, cmsd, ttab 데몬의 취약점을 공격
 > 클라이언트를 구동하면 패스워드를 사용하지 않고, 클라이언트와 데몬 간에는 ICMP Echo Request 패킷을 사용
 > 클라이언트의 각 명령은 ICMP Echo Request 패킷에 16비트 이진수로 데몬에 전송
 > TFN은 공격자 시스템과 마스터 시스템 간 연결이 암호문이 아닌 평문으로 전달되는 약점이 있음, 이는 데이터가 다른 해커나 관리자에게 스니핑되거나 세션 하이재킹 될 수 있으며, 공격자를 노출시키는 등 치명적일 수 있음.

TFN 2K
 > TFN의 발전된 형태로, 역시 믹스터가 개발
 > 특징
  - 통신에 특정 포트를 사용하지 않고 암호화되어 있으며, 프로그램을 통해 UDP, TCP, ICMP를 복합적으로 사용하며 포트도 임의로 결정한다.
  - TCP, SYN Flooding, UDP Flooding, ICMP Flooding, Smurf 공격을 쓰고 있다.
  - 모든 명령은 CAST-256 알고리즘으로 암호화된다.
  - 지정된 TCP 포트에 백도어를 실행할 수 있다.
  - 데몬은 설치 시 자신의 프로세스 이름을 변경함으로써 프로세스 모니터링을 회피한다.
  - UDP 패킷의 헤더가 실제 UDP 패킷보다 3바이트 만큼 더 크다.
  - TCP 패킷의 헤더의 길이는 항상 0이다. 정상 패킷이라면 절대로 0일 수 없다.

Stacheldraht
 > 독일어로 ‘철조망’이라는 뜻
 > 1999년 10월에 처음 출현 한 것으로 알려져 있으며, TFN을 발전시킨 형태
 > Stacheldraht(슈타첼드라트) 역시 TFN 2K 처럼 공격자와 마스터, 에이전트, 데몬과의 통신에 암호화 기능이 추가됨
 > 공격자가 마스터에 접속하면 마스터는 현재 접속을 시도한 이가 올바른 공격자인지 확인하기 위해 패스워드 입력을 요구
 > 입력된 패스워드는 최초 설치되기 전에 'Authentication'의 'Passphrase'를 사용하여 암호화된 상태로 공격자에게서 핸들러로 보내짐

Trinoo
 > 1999년 6월 말부터 7월 사이에 퍼지기 시작했으며, 미네소타 대학 사고의 주범, 원래 이름은 TrinOO
 > 처음 솔라리스 2.x 시스템에서 발견되었으며, 최초 227개 시스템이 공격에 쓰인 것으로 알려져 있음
 > UDP를 기본으로 하는 공격을 시행하며, 'statd, smsd, ttabserverd' 데몬이 주 공격 대상
 > Trinoo는 기본적으로 아래 표와 같은 포트 번호를 사용하지만 소스 코드에서 임의로 변경 가능


접속자
대상
프로토콜
포트
공격자
마스터
TCP
27665
마스터
에이전트
UDP
27444
에이전트
마스터
UDP
31335
에이전트
공격대상
UDP

 * 마스터 명령
 die : 마스터 작동 중지
 quit : 마스터 logout
 dos(mdos) IP : IP를 대상으로 공격
 mtimer N 공격 시간 지정 N은 1~1,999 까지 (d : 300)

DDOS 공격 by Trinoo

 공격 실습

 1). Trinoo master 컴파일
  > Trinoo 소스 압축 풀기


< 마스터 데몬 실행 비밀번호 : gOrave, 마스터 접속 비밀번호 : betaalmostdone >

 > master 디렉토리로 이동 후 make 명령을 이용 컴파일하기


 2). Trinoo 에이전트 컴파일 및 실행

< master와 마찬가지로 압축을 푼다. >

  > 이후 daemon 디렉토리에 있는 ns.c 파일을 master 디렉토리에 복사 후 편집한다.


< agent는 master의 ip 주소를 따로 지정해 주어야 한다. >

  > Makefile 편집
< Makefile의 내용이 바뀐 것을 확인 가능 >

  > master와 마찬가지로, 컴파일 후 daemon 실행

< 컴파일 후 데몬 실행 >

< 데몬을 실행하여 제대로 작동 중인지 확인 >

 3). 마스터 실행
  > master 디렉토리에서 master를 실행한다.
  > 암호는 gOrave이다. (O는 대문자)


< master의 실행이 제대로 되었는지 확인 >

 4). 공격을 위해 마스터 접속
  > telnet 192.168.10.104 27665 로 접속
  > 암호는 ' betaalmostdone ' 이다.
  > trinoo> 창에서 명령을 내릴 수 있다.


  > bcast 명령은 에이전트 목록을 검사한다.


  > 가끔 마스터에서 bcast 명령을 통해 에이전트 목록 확인이 불가능 할 경우
     에이전트의 데몬을 재실행하자.

< 목록이 안뜨는 경우 > 
< 에이전트의 데몬을 재실행 >

  > mdos 명령을 이용 대상을 공격 시도

< mdos와 관련된 정보 확인 >

 > 아주 잠깐이라도 UDP 패킷이 10만개 정도 전달
 > 공격에 참여한 에이전트 PC의 상태도 공격 당한 PC 만큼 좋지 않게 된다.

< tcpdump로 목표물이 주고 받은 패킷을 기록한 결과 325만개의 패킷 기록 >


< DDoS 공격은 UDP, ICMP 패킷을 가지고 공격을 하기에 UDP, ICMP 패킷이 가장 많이 확인된다. >

댓글 없음:

댓글 쓰기