Automatyczny tcpdump podczas ataku DDoS/DoS

Tagi: #<Tag:0x00007f2adda864e8> #<Tag:0x00007f2adda86420>

Witajcie, chciałbym przedstawić wam krótki myk na robienie automatycznych tcpdumpów podczas ataku DDoS/DoS


1. Co to jest atak DDoS/DoS i jak się przed nim bronić?

2. Halooo serwer spadł z rowerka, co zrobić jak żyć?!

  • Nie panikuj, zachowaj zimną krew :kappa:

  • Nie pisz ticketów w stylu: Admin mam ddosa pomocy - to nic nie da. Tracisz czas swój i administracji https://www.lvlup.pro

  • Jedynym rozsądnym rozwiązaniem (po uprzednim zabezpieczeniu serwera) jest wykonanie tcpdumpa i wysłanie go do obsługi https://www.lvlup.pro w celu zabezpieczania nowej metody.

3. Dobra _KrEdEnS_ skończ gadać i mów co i jak :kappa:

Do automatycznego zbierania dumpów wykorzystamy darmowy skrypt (https://github.com/xnite/dosmon), który po przekroczeniu ustalonego w pliku konfiguracyjnym rate limitu zacznie wykonywać wspomnianego już wyżej tcpdumpa. Poniższy poradnik przedstawia instalację i konfigurację dosmon-a na Ubuntu 18.04 & Debian 10

✸ Ubuntu 18.04 & Debian 10

  • Zacznijmy od sprawdzenia nazwy interfejsu sieciowego. W tym celu wpisujemy komendę ifconfig. Po jej wpisaniu ukazuje nam się taka litania :kappa:. No chyba, że się nie pokaże :sweat_smile: w tedy należy wpisać ip a.
    Do późniejszej konfiguracji wykorzystamy eth0 (jest to nazwa interfejsu sieciowego - po prostu karty sieciowej, którą definiujemy w późniejszym configu -> DEVICE=“i_tak_nikt_tego_nie_przeczyta”; gdzie i_tak_nikt_tego_nie_przeczyta to w naszym przypadku eth0)

root@vps6819:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 178.33.104.179 netmask 255.255.255.255 broadcast 0.0.0.0
inet6 fe80::ff:fedc:b60a prefixlen 64 scopeid 0x20
ether 02:00:00:dc:b6:0a txqueuelen 1000 (Ethernet)
RX packets 91658 bytes 129695612 (129.6 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 54947 bytes 4255629 (4.2 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Local Loopback)
RX packets 130 bytes 10782 (10.7 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 130 bytes 10782 (10.7 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

  • Kolejnym krokiem, który wykonamy, będzie instalacja wymaganych pakietów, które umożliwią bezproblemowe działanie naszego skryptu.
    apt-get install sudo - UWAGA wpisz dla Debiana
    sudo apt-get update - potwierdzamy wpisując y i zatwierdzamy enterem
    sudo apt-get upgrade - potwierdzamy wpisując y i zatwierdzamy enterem
    sudo apt-get install tcpdump perl git build-essential
    cpan install Net::Server::Daemonize - potwierdzamy wpisując yes i zatwierdzamy enterem

  • Następnie używając git clone pobieramy nasz skrypt :slight_smile:
    git clone https://github.com/xnite/dosmon.git
    przechodzimy do katalogu dosmon wpisując:
    cd dosmon
    nadajemy uprawnienia dla skryptu a następnie go włączamy i edytujemy plik konfiguracyjny:
    chmod +x INSTALL.sh
    sudo ./INSTALL.sh
    mv /etc/dosmon/sample_conf /etc/dosmon/dosmon.conf
    nano /etc/dosmon/dosmon.conf

  • W pliku ustawiamy poniżej przedstawione wartości:

DEVICE=“eth0”;
SEND_THRESHOLD=“50”;
RECV_THRESHOLD=“30”;
PPS_THRESHOLD=“10000”;
LOG_PATH="/var/log/dosmon";
SAMPLE_SIZE=“100000”;
COOL_DOWN=“60”;

  • Przykładowa konfiguracja (bardzo wyczulona na ataki). Testowana na serwerze, gdzie uruchomiony jest serwer Teamspeak3 (do 256 slotów), kilka botów muzycznych i mała strona internetowa.

DEVICE=“eth0”;
SEND_THRESHOLD=“35”;
RECV_THRESHOLD=“15”;
PPS_THRESHOLD=“15000”;
LOG_PATH="/var/log/dosmon";
SAMPLE_SIZE=“100000”;
COOL_DOWN=“30”;

PS. Wartości dla SEND_THRESHOLD; RECV_THRESHOLD; PPS_THRESHOLD warto dobrać pod obecny ruch na serwerze (skorzystaj z wykresu sieci w proxmoxie). Gdzie SEND_THRESHOLD to przędność wysyłania w Mbps w skrócie, masz duży serwer Minecraft/TeamSpeak3 ustaw większą wartość, dzięki temu również można logować atak, który ktoś wykona z naszego serwera :kappa: . RECV_THRESHOLD to otrzymana prędkość :kappa: również w Mbps. Tutaj fajnie jest ustawić wartość od 50 w górę. Oczywiście wszystko zależy od tego jakie ataki chcemy rejestrować. Ostatnim parametrem jaki warto ustawić jest PPS_THRESHOLD, czyli pakiety na sekundę. Przy serwerze TS3, gdzie w godzinach szczytu jest około 500 osób + bot query normalnym ruchem jest około 35k pakietów :open_mouth: . Dodatkowo przyjrzyjmy się parametrowi COOL_DOWN odpowiada on za czas pomiędzy wykonywaniem kolejnych tcpdumpów, out of the box jest on ustawiony na 120 sekund. Osobiście polecam zmniejszyć tą wartość do 60 lub 30 sekund, żeby zebrać więcej logów.

  • Stopujemy naszą aplikację wpisując dosmon.pl stop a następnie uruchamiamy ją wpisując dosmon.pl start

  • Ok, nasze cudeńko już bangla ale to jeszcze nie wszystko. Musimy dodać jego autostart do crontaba. W tym celu wpisujemy crontab -e, wybieramy dogodny dla nas edytor tekstu (polecam nano) i na samym końcu wklejamy @reboot /usr/sbin/dosmon.pl start Zapisujemy plik no i włala :tada: :clap:
    Nasze tcpdumpy będą się tworzyć w katalogu /var/log/dosmon

  • Żeby dumpy nie zjadły nam dysku musimy stworzyć skrypt, który będzie nam je systematycznie usuwał. W tym celu posłużymy się istniejącym już poradnikiem:


PS. Ścieżka do katalogu, gdzie będą gościć nasze dumpy /var/log/dosmon/

4. Łatwe wrzucanie zebranych dumpów na plik.root.gg za pomocą cURL-a

Żeby szybko i bezboleśnie zahostować zebrane tcpdumpy posłużymy cURL-em :wink:

  1. Przechodzimy do katalogu /var/log/dosmon
  2. Listujemy znajdujące się w nim pliki poleceniem ls
  3. Wybieramy tak bardzo interesujący obsługę dump (gdzie 2020-04-14_23-49_eth0-11372pps.pcap to nasza przykładowa nazwa dumpa): :kappa: i wpisujemy komendę:
    curl --form 'file=@/var/log/dosmon/2020-04-14_23-49_eth0-11372pps.pcap' https://plik.root.gg:443 | sed "s/http:\/\/127\.0\.0\.1:8080/https:\/\/plik.root.gg/"
  4. W odpowiedzi dostajemy (to co pięknie zakreśliłem :kappa: to link do pobrania wysłanego pliku):
    O8YorctVZ1

5. Hostowanie zebranych dumpów na Mega.nz

Do łatwego wyhostowania zebranych logów posłużymy się darmowym hostingiem plików https://mega.nz/

  1. Zakładamy konto na https://mega.nz/
  2. Po Założeniu konta instalujemy na naszym serwerze megatools-a komendą:
    sudo apt-get install megatools
  3. Tworzymy plik konfiguracyjny:
    sudo nano /root/.megarc
    z zawartością:
[Login]
Username = Your_Mega_Username
Password = Your_Mega_Password
  1. Nadajemy odpowiednie uprawnienia:
    chmod 640 /root/.megarc
  2. Sprawdźmy czy wszystko bangla wpisując megals :wink:
root@vps6819: megals 
/Contacts
/Inbox
/Root
/Trash
  1. Żeby wysłać naszego dumpa wpisujemy komendę (gdzie 2020-04-14_23-49_eth0-11372pps.pcap to nasz dump):
    megaput --path=/Root "/var/log/dosmon/2020-04-14_23-49_eth0-11372pps.pcap"
  2. Po przejściu do panelu https://mega.nz/ widzimy plik (u mnie działa :kappa:) i po kliknięciu na niego PPM możemy go udostępnić poprzez link :slight_smile:
8lajków

Zastanawia mnie, dlaczego tu są cztery polecenia zamiast jednego. Mniej kopiowańska by było :thinksmart:

1lajk

@artur9010 słuszna uwaga :wink:

1lajk

Świetny poradnik! Bardzo dobra robota!

Warto dopisać, gdzie później będzie to potrzebne lub się do tego odnieść w dalszej części poradnika (co dokładnie daje nam użycie komendy ifconfig, po co mamy ją wywołać, jakie dane mamy z niej wykorzystać), tj.:

Prawdopodobnie tutaj, warto to rozszerzyć.

2lajki

Ok, postaram, się rozwinąć wspomniane fragmenty :slight_smile:

EDIT. Dodałem co nieco

3lajki

polecam działa kredens umie dobrze wszystko ustawić

1lajk

działa jak natura chciała :nosacz:

1lajk

literówka

Poradnik spoko :slight_smile:

1lajk

Poprawione :slight_smile:

nie wiem czy wam dziala ale mi nie działa a mialem atatki małe ze tylko ping skoczył +25

jesteś pewien, że był to atak - jeśli tak po czym to stwierdziłeś?
Skok pingu nie musi być spowodowany atakiem.

w filtrowanie UDP mi pokazało

Zależy od konfiguracji wtyczki :slight_smile: Wejdź na proxmoxa ustaw sobie day (maximum) i pokaż wykres sieci.

EDIT: Co do lekkiego skoku -> Welcome to ovh :kappa: tak działa vac (o ile w ogolę zadziała :rofl: )

1lajk