Троянская программа, предназначенная для выполнения DDoS-атак, ориентирована на работу с 32-разрядными дистрибутивами Linux Ubuntu и CentOS.
Для установки запускается с входным параметром "-add". В систему устанавливается под именем "pktmake". Для установки выполняет последовательно команды:
killall pktmake
cp /home/user/guchun /bin/pktmake -f 2>&1
chmod 777 /bin/pktmake 2>&1
Путь до исполняемого файла получает, читая линк "/proc/exe" и автоматически регистрирует себя в параметрах автозагрузки ОС
chmod 777 /etc/init.d/pktmake
ln -s -f /etc/init.d/pktmake /etc/rc2.d/S99pktmake
ln -s -f /etc/init.d/pktmake /etc/rc3.d/S99pktmake
ln -s -f /etc/init.d/pktmake /etc/rc4.d/S99pktmake
ln -s -f /etc/init.d/pktmake /etc/rc5.d/S99pktmake
ln -s -f /etc/init.d/pktmake /etc/rc6.d/S99pktmake
ln -s -f /etc/init.d/pktmake /etc/rc.d/rc2.d/S99pktmake
ln -s -f /etc/init.d/pktmake /etc/rc.d/rc3.d/S99pktmake
ln -s -f /etc/init.d/pktmake /etc/rc.d/rc4.d/S99pktmake
ln -s -f /etc/init.d/pktmake /etc/rc.d/rc5.d/S99pktmake
ln -s -f /etc/init.d/pktmake /etc/rc.d/rc6.d/S99pktmake
В теле троянца хранятся зашифрованные конфигурационные данные, например:
#pragma pack(push,1)
struct CONFIG_DATA{
DWORD SIGNATURE;
DWORD port; //порт C&C сервера
char ip[15]; //IP C&C сервера
BYTE Dummy[17];
char szAppName[16];
BYTE Smth[24];
};
После запуска он также собирает сведения об аппаратной конфигурации инфицированного компьютера и отправляет на командный сервер в зашифрованном виде. Данные имеют следующую структуру:
#pragma pack(push,1)
struct CPU_INFO{
DWORD NumberOfCores; // /proc/cpuinfo cpu cores
char szCPUModelName[63]; // /proc/cpuinfo model name
};
struct MEM_INFO{
DWORD MemTotal;
DWORD MemFree;
DWORD Buffers;
DWORD Cached;
DWORD SwapCached;
DWORD SwapTotal;
DWORD SwapFree;
};
struct OS_INFO{
WORD SIGNATURE1; // 0x67
WORD wSize; // размер структуры
BYTE Dummy[24]; // 0x00
char szSmth[36]; //
char szLinux[6]; // "Linux"
BYTE Dummy1[58]; // 0x00
struct CPU_INFO CpuInfo;
BYTE Dummy2[4]; // 0x00
DWORD MemTotal; // MEM_INFO->MemTotal >> 10
BYTE Dummy3[16]; // 0x00
char szVersion[4]; // "1.4"
};
Для установки связи с управляющим сервером троянец посылает специально сформированный логин-пакет (LOGIN_PACKET), на который сервер отвечает 8 байтным пакетом, зашифрованным с использованием алгоритма RC4, где последние 4 байта содержат размер следующего пакета. Второй входящий пакет также зашифрован с использованием RC4. Если второй входящий пакет содержит "f" по нулевому смещению и "1" по смещению 8 байт, то бот отправляет на сервер собранную информацию в виде структуры OS_INFO.
struct LOGIN_PACKET
{
WORD SIGNATURE1; //0x0065
WORD wSize; //размер пакета
DWORD Dummy; //0x00
char szAppName[72]; //берется из конфигурации
char szVersion[4]; //"1.4"
BYTE SIGNATURE2; //0x02
};
После отправки собранных данных о системе троянец переходит в цикл ожидания команд от управляющего сервера.