Прошло совсем немного времени после выявления уязвимости CVE-2014-6271 (также известной как Shellshock) в командной оболочке bash, и нам стало известно о первых попытках киберпреступников эксплуатировать эту широко распространенную уязвимость.
Попытки получения контроля над веб-серверами, наблюдаемые нами в последнее время, выглядят следующим образом: создается новый экземпляр оболочки bash, а с него делается перенаправление на удаленный сервер, который ожидает соединение через определенный TCP-порт. Такая схема известна как «обратное соединение». Вот пример записи о такой атаке в журнале веб-сервера:
Атакующая сторона прослушивает IP-адрес 195.xx.xx.101 через TCP-порт 3333. Источник атаки – IP-адрес 94.xx.xx.131. Чтобы получить контроль над сервером с помощью этого метода, не требуется использовать внешние исполняемые файлы.
Другая атака, актуальная в настоящее время: киберпреступники отсылают специальным образом сформированный HTTP-запрос, эксплуатируют уязвимость Bash и устанавливают на сервере-жертве Linux-бэкдор. Продукты «Лаборатории Касперского» детектируют этот бэкдор и его варианты как Backdoor.Linux.Gafgyt.
В коде бэкдора содержатся два жестко заданных IP-адреса. Один из них используется только для того, чтобы сообщать киберпреступникам о новых успешных заражениях. По второму IP-адресу расположен командный сервер, к которому обращается зловред, действующий на зараженном веб-сервере.
Вот пример того, как может выглядеть такой обмен данными:
В первой строке бэкдор отсылает приветствие и сообщает злоумышленникам, для какой архитектуры был скомпилирован код. В данном случае это x86.
Независимо от команд, приходящих от киберпреступников, каждые 30 секунд бэкдор отсылает PING-запрос, в ответ на который сервер присылает ответ PONG (для большего удобства чтения мы убрали некоторые пары PING/PONG из примера выше).
Команды всегда начинаются с символов «!* «. Первая команда в данном случае – «SCANNER ON» в строке 10. Получив ее, вредоносная программа сканирует случайные диапазоны IP-адресов в поисках хостов, принимающих Telnet-соединения через TCP-порт 23. Когда такой хост найден, программа пытается залогиниться, используя жестко заданный список распространенных стандартных пар «логин/пароль».
Во вредоносный код также встроена простая программа для распознавания систем-ловушек, использующая набор утилит BusyBox (см. описание на странице Internet Storm Center).
В строке 14 зловреду приходит следующая команда – флудить IP-адрес 69.xx.xx.67 по протоколу UDP в течение 50 секунд. В строке 17 атакующая сторона останавливает эту операцию, чтобы возобновить ее в строке 18, уже на IP-адрес 178.x.x.241. Ответ «None Killed.» в строке 21 объясняется тем, что операция, инициированная в строке 14, уже завершилась в тот момент, когда атакующая сторона попыталась прервать ее командой «!* KILLATTK» в строке 17.
Вот полный список команд, которые принимает бэкдор:
!* PING – Посылает в ответ «PONG!»
!* SH — Выполнение произвольной shell-команды
!* GETLOCALIP – Посылает в ответ «My IP: $ipaddr»
!* SCANNER ON | OFF – Сканирует случайные сетевые диапазоны, выполняет атаку перебором по небольшому словарю (см. описание выше), проверяет мишень на признаки ловушки
!* HOLD – Приостановка флуда
!* JUNK – Флуд мусорным трафиком
!* UDP – UDP-флуд
!* TCP – TCP-флуд
!* KILLATTK – Полная остановка флуда
!* LOLNOGTFO – Завершение работы бэкдора.
Сопутствующие исполняемые файлы:
73b0d95541c84965fa42c3e257bb349957b3be626dec9d55efcc6ebcba6fa489
2d3e0be24ef668b85ed48e81ebb50dce50612fb8dce96879f80306701bc41614
ae3b4f296957ee0a208003569647f04e585775be1f3992921af996b320cf520b0fde4c72038189e3d86676d84a1370787bcd284f98d1dff7736707fe05af7d9a
3b13eef9b24919dc7e7071068a83defcc4808a41dc86fadf039e08dce1107f7d
64b3751182be737c005fb04ffbe8b4dfe5930ed46066e87a9f6344de1d9985b8
Первые случаи эксплуатации Shellshock