Вы используете устаревший браузер!
Страница может отображаться некорректно.
Свяжитесь с нами Незакрытые запросы:
Анализ используемых злоумышленниками технологий позволяет нам делать выводы о возможных векторах развития вирусной индустрии и еще эффективней противостоять будущим угрозам. Узнайте и вы о том, как действуют в зараженных системах те или иные вредоносные программы и как этому противостоять.
Семейство вредоносных программ для ОС Linux. Описание составлено по одному из образцов.
Модифицированная версия троянцев Linux.DDoS.87 и Linux.DDoS.89. Основные отличия от Linux.DDoS.89:
Конфигурация в этой версии троянца имеет следующий вид:
Номер | Значение | Где используется |
---|---|---|
3 | listening tun0 | main вывод на stdin |
4 | Host | IP-адрес управляющего сервера |
5 | Port | порт управляющего сервера |
6 | "https://youtube.com/watch?v=dQw4w9WgXcQ" | |
7 | "/proc/" | runkiller |
8 | "/exe" | runkiller |
9 | " (deleted)" | |
10 | "/fd" | runkiller |
11 | ".anime" | runkiller |
12 | "REPORT %s:%s" | runkiller |
13 | "HTTPFLOOD" | runkiller |
14 | "LOLNOGTFO" | runkiller |
15 | "\x58\x4D\x4E\x4E\x43\x50\x46\x22" | runkiller |
16 | "zollard" | runkiller |
17 | "GETLOCALIP" | |
18 | Host | |
19 | Port | |
20 | "shell" | |
21 | "enable" | |
22 | "system" | |
23 | "sh" | |
24 | "/bin/busybox MIRAI" | |
25 | "MIRAI: applet not found" | |
26 | "ncorrect" | |
27 | "/bin/busybox ps" | |
28 | "/bin/busybox kill -9 " | |
29 | "TSource Engine Query" | |
30 | "/etc/resolv.conf" | |
31 | "nameserver" | |
32 | "Connection: keep-alive" | |
33 | "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" | |
34 | "Accept-Language: en-US,en;q=0.8" | |
35 | "Content-Type: application/x-www-form-urlencoded" | |
36 | "setCookie('" | |
37 | "refresh:" | |
38 | "location:" | |
39 | "set-cookie:" | |
40 | "content-length:" | |
41 | "transfer-encoding:" | |
42 | "chunked" | |
43 | "keep-alive" | |
44 | "connection:" | |
45 | "server: dosarrest" | |
46 | "server: cloudflare-nginx" | |
47 | "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" | User Agent |
48 | "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" | User Agent |
49 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36" | User Agent |
50 | "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36" | User Agent |
51 | "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7 (KHTML, like Gecko) Version/9.1.2 Safari/601.7.7" | User Agent |
Все образцы троянца используют функцию сокрытия строк следующего вида:
def decode(str_enc):
return "".join([chr(ord(x) ^ 0x22) for x in str_enc])
При запуске троянец удаляет с диска собственный исполняемый файл, затем блокирует сигнал остановки процессов SIGINT с помощью sigprocmask. Устанавливает параметр SIG_IGN для SIGCHLD, а также обработчик для SIGTRAP.
Затем троянец пытается открыть на чтение и запись файл /dev/watchdog (также проверяется /dev/misc/watchdog) и, если попытка увенчалась успехом, отключает сторожевой таймер watchdog (чтобы исключить перезагрузку устройства).
ioctl(fd, WDIOC_SETOPTION, WDIOS_DISABLECARD)
После этого троянец переходит в корневую папку и обращается к адресу 8.8.8.8:53, чтобы получить IP-адрес своего сетевого интерфейса.
Затем вычисляет функцию от значения argv[0]:
def check(name):
print name
a = [ord(x) for x in name]
sum = (0 - 0x51) & 0xff
for i in [2,4,6,8,10,12]:
z = (~a[i % len(a)] & 0xff)
sum = (sum + z)&0xff
#print "%x %x %x" % (z, sum, sum % 9)
return sum % 9
Эта функция возвращает число от 0 до 8, которое является индексом в массиве функций:
off_8055DC0 dd offset bind_socket ; DATA XREF: main+109o
.rodata:08055DC4 dd offset sub_80517E0
.rodata:08055DC8 dd offset sub_8051730
.rodata:08055DCC dd offset create_config
.rodata:08055DD0 dd offset sub_8051760
.rodata:08055DD4 dd offset sub_80523F0
.rodata:08055DD8 dd offset strcopy
.rodata:08055DDC dd offset runkiller
.rodata:08055DE0 dd offset sub_804E900
Если значение argv[0] == "./dvrHelper", то родительскому процессу отсылается сигнал SIGTRAP (для которого ранее был установлен обработчик). Обработчик, в свою очередь, заменяет позаимствованный из конфигурации IP-адрес и порт сервера, к которому будет выполняться подключение.
Далее запускается слушающий сокет на адресе 127.0.0.1:48101. Если этот порт занят другим процессом, запускается функция, которая находит владеющий сокетом процесс и завершает его.
Затем троянец генерирует имя в виде случайной последовательности, состоящей из символов [a-z 0-9], и записывает его в argv[0]. С помощью функции prctl имя процесса меняется на случайное.
Далее происходит создание дочерних процессов и завершение родительского. Все последующие шаги выполняются в дочернем процессе – в частности, заполняется структура, содержащая обработчики. Затем запускается функция сканирования уязвимых telnet-узлов и функция, завершающая процессы других троянцев. После этого запускается обработчик поступающих от управляющего сервера команд. Если обнаруживается попытка соединения с локальным сервером, завершаются все дочерние процессы, запускается процесс-потомок с целью сканирования уязвимых telnet-узлов, а родительский процесс завершается.
Для сравнения на иллюстрации ниже показан фрагмент кода Linux.DDoS.87 (слева) и Linux.Mirai (справа).
Linux.Mirai.2140
Linux.Mirai.2141
Linux.Mirai.2142
Linux.Mirai.2150
Linux.Mirai.2188
Linux.Mirai.2193
Linux.Mirai.2197
Linux.Mirai.2199
Linux.Mirai.2207
Linux.Mirai.2208
Linux.Mirai.2225
Linux.Mirai.2232
Linux.Mirai.2233
Linux.Mirai.2234
Linux.Mirai.2235
Linux.Mirai.2247
Linux.Mirai.2252
Linux.Mirai.2257
Linux.Mirai.2258
Linux.Mirai.2259
Linux.Mirai.2260
Linux.Mirai.2264
Linux.Mirai.2266
Linux.Mirai.2269
Linux.Mirai.2270
Linux.Mirai.2271
Linux.Mirai.2272
Linux.Mirai.2278
Linux.Mirai.2289
Linux.Mirai.2332
Linux.Mirai.2333
Linux.Mirai.2334
Linux.Mirai.2335
Linux.Mirai.2336
Linux.Mirai.2337
Linux.Mirai.2338
Linux.Mirai.2339
Linux.Mirai.2340
Linux.Mirai.2346
Linux.Mirai.2347
Linux.Mirai.2348
Linux.Mirai.2349
Linux.Mirai.2350
Linux.Mirai.2351
Linux.Mirai.2352
Linux.Mirai.2353
Linux.Mirai.2354
Linux.Mirai.2355
Linux.Mirai.2358
Linux.Mirai.2359
По статистике каждая пятая программа для ОС Android — с уязвимостью (или, иными словами, — с «дырой»), что позволяет злоумышленникам успешно внедрять мобильных троянцев на устройства и выполнять нужные им действия.
Аудитор безопасности в Dr.Web для Android произведет диагностику и анализ безопасности мобильного устройства, предложит решения для устранения выявленных проблем и уязвимостей.