Bhunter - hakowanie węzłów botnetu

Analitycy wirusów i badacze bezpieczeństwa komputerowego ścigają się, aby zebrać jak najwięcej próbek nowych botnetów. Wykorzystują Honeypoty do własnych celów... A co jeśli chcesz obserwować szkodliwe oprogramowanie w rzeczywistych warunkach? Narażasz swój serwer lub router na ryzyko? A co jeśli nie ma odpowiedniego urządzenia? To właśnie te pytania skłoniły mnie do stworzenia bhuntera, narzędzia umożliwiającego uzyskanie dostępu do węzłów botnetu.

Bhunter - hakowanie węzłów botnetu

Główną ideą

Istnieje wiele sposobów rozprzestrzeniania złośliwego oprogramowania w celu rozszerzenia botnetów: od phishingu po wykorzystywanie luk typu 0-day. Jednak najpopularniejszą metodą nadal jest brutalne wymuszanie haseł SSH.

Pomysł jest bardzo prosty. Jeśli jakiś węzeł botnetu próbuje brutalnie wymusić hasła dla Twojego serwera, najprawdopodobniej sam węzeł został przechwycony za pomocą prostego wymuszania haseł. Oznacza to, że aby uzyskać do niego dostęp, wystarczy się odwzajemnić.

Dokładnie tak działa bhunter. Nasłuchuje portu 22 (usługa SSH) i zbiera wszystkie loginy i hasła, za pomocą których próbują się z nim połączyć. Następnie, wykorzystując zebrane hasła, próbuje połączyć się z atakującymi węzłami.

Algorytm pracy

Program można podzielić na 2 główne części, które działają w oddzielnych wątkach. Pierwszym z nich jest miód. Przetwarza próby logowania, zbiera unikalne loginy i hasła (w tym przypadku para login + hasło traktowana jest jako jedna całość), a także dodaje adresy IP, które próbowały połączyć się, do kolejki w celu dalszego ataku.

Druga część jest bezpośrednio odpowiedzialna za atak. Ponadto atak przeprowadzany jest w dwóch trybach: BurstAttack (atak impulsowy) – loginy i hasła brute force z listy ogólnej oraz SingleShotAttack (atak single shot) – hasła brute force, które były używane przez atakowany węzeł, ale nie zostały jeszcze dodany do ogólnej listy.

Aby od razu po uruchomieniu mieć choć trochę bazy danych loginów i haseł, inicjalizowany jest bhunter listą z pliku /etc/bhunter/defaultLoginPairs.

Interfejs

Istnieje kilka sposobów uruchomienia bhuntera:

Podobnie jak zespół

sudo bhunter

Dzięki temu uruchomieniu możliwe jest kontrolowanie bhuntera poprzez jego menu tekstowe: dodawanie loginów i haseł do ataku, eksportowanie bazy danych loginów i haseł, określanie celu ataku. Wszystkie zhakowane węzły można zobaczyć w pliku /var/log/bhunter/hacked.log

Używając tmuxa

sudo bhunter-ts # команда запуска bhunter через tmux  
sudo tmux attach -t bhunter # подключаемся к сессии, в которой запущен bhunter

Tmux to multiplekser terminali, bardzo wygodne narzędzie. Umożliwia utworzenie kilku okien w obrębie jednego terminala i podzielenie okien na panele. Dzięki niemu możesz wyjść z terminala, a następnie zalogować się, nie przerywając uruchomionych procesów.

Skrypt bhunter-ts tworzy sesję tmux i dzieli okno na trzy panele. Pierwsza, największa, zawiera menu tekstowe. W prawym górnym rogu znajdują się logi Honeypota, tutaj możesz zobaczyć komunikaty o próbach zalogowania się do Honeypota. W prawym dolnym panelu wyświetlane są informacje o postępie ataku na węzły botnetu oraz o udanych włamaniach.

Przewagą tej metody nad pierwszą jest to, że możemy bezpiecznie zamknąć terminal i wrócić do niego później, bez przerywania jego pracy przez bhuntera. Sugeruję tym, którzy nie są zaznajomieni z tmuxem tę ściągawkę.

Jako usługa

systemctl enable bhunter
systemctl start bhunter

W takim przypadku włączamy autostart bhuntera przy starcie systemu. W tej metodzie nie jest zapewniona interakcja z bhunterem, a listę zaatakowanych węzłów można uzyskać z pliku /var/log/bhunter/hacked.log

Skuteczność

Pracując nad bhunterem udało mi się znaleźć i uzyskać dostęp do zupełnie innych urządzeń: raspberry pi, routerów (zwłaszcza mikrotika), serwerów WWW, a kiedyś farmy wydobywczej (niestety dostęp do niej był w ciągu dnia, więc nie było tam nic ciekawego) fabuła ). Oto zrzut ekranu programu, który pokazuje listę zhakowanych węzłów po kilku dniach pracy:

Bhunter - hakowanie węzłów botnetu

Niestety skuteczność tego narzędzia nie spełniła moich oczekiwań: bhunter może przez kilka dni bezskutecznie próbować haseł do węzłów, a w ciągu kilku godzin może zhakować kilka celów. To jednak wystarczy, aby regularnie napływać nowe próbki botnetu.

Na skuteczność wpływają takie parametry jak: kraj, w którym znajduje się serwer z bhunterem, hosting oraz zakres, z jakiego przydzielony jest adres IP. Z mojego doświadczenia wynika, że ​​był przypadek, gdy wynajmowałem dwa serwery wirtualne od jednego hosta, a jeden z nich był atakowany przez botnety 2 razy częściej.

Błędy, których jeszcze nie naprawiłem

Podczas ataku na zainfekowane hosty w niektórych sytuacjach nie jest możliwe jednoznaczne określenie, czy hasło jest poprawne, czy nie. Takie przypadki są rejestrowane w pliku /var/log/debug.log.

Moduł Paramiko, który służy do współpracy z SSH, czasami zachowuje się niepoprawnie: przy próbie połączenia się z nim bez końca czeka na odpowiedź od hosta. Eksperymentowałem z timerami, ale nie uzyskałem pożądanego rezultatu

Nad czym jeszcze trzeba popracować?

Nazwa serwisu

Zgodnie z RFC-4253 klient i serwer wymieniają przed instalacją nazwy usług, które implementują protokół SSH. Nazwa ta zawarta jest w polu „NAZWA USŁUGI”, zawartym zarówno w żądaniu od strony klienta, jak i w odpowiedzi ze strony serwera. Pole jest ciągiem znaków, a jego wartość można znaleźć za pomocą wireshark lub nmap. Oto przykład dla OpenSSH:

$ nmap -p 22 ***.**.***.** -sV
Starting Nmap ...
PORT   STATE SERVICE VERSION
22/tcp open  ssh     <b>OpenSSH 7.9p1 Debian 10+deb10u2</b> (protocol 2.0)
Nmap done: 1 IP address (1 host up) scanned in 0.47 seconds

Jednak w przypadku Paramiko pole to zawiera ciąg znaków taki jak „Paramiko Python sshd 2.4.2”, który może odstraszyć botnety zaprojektowane w celu „unikania” pułapek. Dlatego uważam, że należy tę linię zastąpić czymś bardziej neutralnym.

Inne wektory

SSH nie jest jedynym sposobem zdalnego zarządzania. Jest też telnet i rdp. Warto przyjrzeć się im bliżej.

rozbudowa

Byłoby wspaniale mieć kilka pułapek w różnych krajach i centralnie zbierać od nich loginy, hasła i zhakowane węzły do ​​wspólnej bazy danych

Gdzie mogę pobrać?

W chwili pisania tego tekstu gotowa jest jedynie wersja testowa, z której można pobrać repozytorium na Githubie.

Źródło: www.habr.com

Dodaj komentarz