DNS Amplification – skrypt wykrywający atak

Ostatnimi czasy nadużycia związane z atakami DDoS w opraciu o popularne usługi i możliwość zwielokrotnienia siły ataku (amplification DDoS) stają się dosyć popularnym, łatwym do wykorzystania narzędziem umożliwiającym unieszkodliwienie dowolnego celu w sieci. Jeśli posiadacie własny serwer DNS z którego korzysta znaczna liczba użytkowników warto jest umożliwić rozwiązywanie nazw jedynie Waszym klientom (acl trusted) oraz limitowanie zapytań ANY, które również mogą posłużyć do wykonania silnego ataku.

Poniższy skrypt pozwala na automatyczne wykrycie prób dokonywania ataków, który informuje nas o ‘kłopotliwej’ domenie, oraz umożliwia automatyzację blokowania niepożądanego ruchu.

— cut here —

#!/bin/bash

LANG=C
PATH=’/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin’

cd /scripts/dnsflood/

cat /dev/null > dnssyf_mailbody
echo “DNS AMPLIFICATION” >> dnssyf_mailbody
echo ” ” >> dnssyf_mailbody
netstat -tupan | grep 53 | awk ‘{ print $5 }’ | grep -v 0.0.0.0 | grep -v :::* | sed -e ‘s/:53//g’ | sort | uniq -c | sort -k1n | tail -n 3 > dnssyf_tmp
while read l
do
ip=`echo $l | awk ‘{print $2}’`
polaczenia=`echo $l | awk ‘{print $1}’`
netname=`whois $ip | grep -m 1 -i netname`
echo “Adres IP: $ip Polaczenia: $polaczenia Netname: $netname” >> dnssyf_mailbody
done < dnssyf_tmp
echo ” ” >> dnssyf_mailbody
awk ‘{ if ($1 >=70) print “Hosty problematyczne: “$2 }’ dnssyf_tmp >> dnssyf_mailbody
echo ” ” >> dnssyf_mailbody
tcpdump -n -l -p -c 10 -i INTERFEJS host $ip | awk ‘{ print $9 }’ > dnssyf_domains
domena=`sed -e ‘s/\./ /g’ dnssyf_domains | awk ‘{print $(NF-1)”.”$NF}’ | sort | uniq`
echo “Domena wykorzystana do ataku: *”$domena >> dnssyf_mailbody
grep “problematyczne” dnssyf_mailbody && mail -s “DNS Amplification – Ostrzezenie – `hostname`” NOC@DOMENA.LTD < dnssyf_mailbody
rm dnssyf_tmp
rm dnssyf_domains

— cut here —

Skrypt umieszczamy w katalogu /scripts/dnsflood. Następnie do crontaba dodajemy:

*/10 * * * * /scripts/dnsflood/dnssyf >/dev/null 2>&1
*/5 * * * * killall dnssyf >/dev/null 2>&1

W przypadku wystąpienie nadużycia otrzymujemy mail:

DNS AMPLIFICATION
 
Adres IP: 173.245.59.133  Polaczenia: 72  Netname: NetName:        CLOUDFLARENET
Adres IP: 173.245.58.118  Polaczenia: 156  Netname: NetName:        CLOUDFLARENET
Adres IP: 61.164.144.24  Polaczenia: 404  Netname: netname:        CHINANET-ZJ-WZ
 
Hosty problematyczne: 173.245.59.133
Hosty problematyczne: 173.245.58.118
Hosty problematyczne: 61.164.144.24
 
Domena wykorzystana do ataku: *amcbet.com

Reakcja na wystąpienie ataku wygląda następująco:

Blokada domeny:

iptables -I OUTPUT -p udp --dport 53 -m string --string $DOMENA --algo bm -j DROP

A następnie kolejna weryfikacja ilości połączeń:

netstat -tupan | grep 53 | wc -l

Można również samodzielnie próbować znaleźć domenę, która sprawia problem:

tcpdump -n -l -p -i $INTERFEJS_NASLUCHUJACY port 53

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *