Pull to refresh
«Лаборатория Касперского»
Ловим вирусы, исследуем угрозы, спасаем мир

Извлечение ключа разблокировки из MBR-блокера

Reading time 3 min
Views 26K
Мы решили учесть пожелания читателей нашего блога и подготовили небольшую статью о том, как можно извлечь код разблокировки из блокера. Отвечает старший вирусный аналитик «Лаборатории Касперского» Вячеслав Закоржевский!..

Для разбора мной был выбран один из представителей нового семейства Trojan-Ransom.Win32.Mbro. Эти блокеры заражают MBR и вымогают деньги у пользователя за снятие блокировки компьютера.

Я решил не углубляться в разбор процесса попадания зловреда на компьютер и алгоритма заражения загрузочного сектора, а сразу приступить к анализу модифицированного MBR’а. Итак, после запуска рассматриваемого блокера операционная система уйдет в перезагрузку, а при последующей загрузке компьютера отобразится следующий текст.
image
Сообщение, появляющееся при загрузке компьютера после запуска блокера

Ниже представлены скриншоты начальных секторов жесткого диска до и после их заражения блокером.

image
Начальные секторы жесткого диска до заражения
image
Фрагмент той же самой области жесткого диска после заражения

Отчетливо видно, что начало жесткого диска значительно преобразилось – добавился дополнительный код, EGA-паттерны и текст, который был приведен на первой картинке.
Ниже я буду поэтапно расписывать весь функционал модифицированной Master Boot Record, а в конце статьи будет приведена полная схема, содержащая секторы, используемые блокером, и их назначение. Для отладки MBR’а я использовал комбинацию IDA и Bochs for Windows.
Первым делом вредоносный код считывает девятый сектор и сохраняет его по адресу 0186A:0000. Затем, на него выполняется переход с помощью CALLF 0186A:0000.
image
Фрагмент кода, выполняющий чтение девятого сектора

Далее, происходит проверка текущей даты и времени с эталонным значением. В моем случае, это значение (очевидно, представленное в удобном виде) равнялось 04.06.2011 15:04. Сообщение с требованием об оплате будет появляться только в том случае, если текущий отпечаток времени меньше, чем эталонный. А если он больше, то блокер восстанавливает оригинальный МБР и загружает компьютер, как ни в чем не бывало. Время и дата получаются напрямую из BIOS’а при помощи следующей последовательности команд:


    mov     al, x
    out     70h, al
    in     al, 71h
    aam     10h
    aad


Где ‘x’ принимает разные значения в зависимости от того, что требуется получить. Стоит отметить, что BIOS возвращает числа в формате BCD. Инструкции AAM и AAD преобразовывают эти числа в hex.

Если проверка на время и дату прошла успешно, то зловред зачитывает секторы с третьего по пятый включительно. В третьем и четвертом содержатся так называемые «user font table», а в пятом – текст, отображаемый при загрузке. Для применения собственного «стиля» (громко сказано) написания текста вызывается INT 10h. Далее, зачитываются секторы 5-8 включительно, и выводится текст, содержащийся в пятом и нулевом секторах (“Enter Code:»).
image
Фрагмент кода, выводящий на экран текст

После этого начинает работать цикл проверки введенного текста. Цикл реализован следующим образом. Вначале вызывается инструкция INT 16h. Это прерывание возвращает в AX значение нажатой кнопки (AH = скан-код, AL – символ) клавиатуры:

    mov     ah, 0
    push     di
    int     16h
    pop     di
    jmp     short loc_7CC7


Потом идет проверка на введенный символ. Если он находится между 20h и 7Fh, то его значение записывается по ES:DI при помощи инструкции STOSB. Если же была нажата клавиша Enter (0Dh), то выполняется проверка введенной и эталонной строки при помощи REPE CMPSB.
image
Сравнение введенной строка и кода разблокировки

Из скриншота видно, что по адресу ES:7DA5 находится строка, необходимая для разблокировки загрузки компьютера. Вот что находится по этому адресу: '002158RD',0. А так как в CL заносится число «6», то это означает, что достаточно ввести лишь «002158».
Если введен корректный код, то зловред берет из второго сектора оригинальный MBR и записывает его в начало жесткого диска.

Сектора, используемые блокером:

1 – основной код;
2 – оригинальный первый сектор;
3 – 4 – user font tables;
5 – 6 – текст, выводимый пользователю;
7 – 8 – сектора заполнены нулями;
9 – код, выполняющий сверку текущей даты и времени;

P.S. А можно было просто из Hiew «глазами» посмотреть на начало жесткого диска и найти пресловутый код.

Теперь, если каким-то чудом вы подцепите подобную штуковину, для вас не составит труда разблокировать ее самостоятельно. Но в случае заражения неопознанными объектами вам следует пройти по ссылке http://support.kaspersky.ru/viruses/deblocker. Буду рад ответить на все вопросы в комментариях.
Tags:
Hubs:
+49
Comments 42
Comments Comments 42

Articles

Information

Website
www.kaspersky.ru
Registered
Founded
Employees
5,001–10,000 employees
Location
Россия