Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Майкл_Сикорски,_Эндрю_Хониг_Вскрытие_покажет!_Практический_анализ.pdf
Скачиваний:
18
Добавлен:
19.04.2024
Размер:
17.17 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Глава 13. Кодирование данных  309

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

дыдущая строка, у которой символ a передвинут в начало. Злоумышленник просто взял стандартный алгоритм и поменял строку кодирования. На рис. 13.8 мы еще раз пытаемся расшифровать данные, но на этот раз с помощью новой строки.

Рис. 13.8. Успешное декодирование данных в формате Base64 с помощью нестандартной индексирующей строки

Распространенные криптографические алгоритмы

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

Примитивные методы кодирования, рассмотренные выше, даже не пытаются защитить данные от простого перебора. Их основная задача — сделать информацию неузнаваемой. Со временем криптография эволюционировала и стала более развитой. Теперь без нее не обходится ни один аспект работы с компьютером: в браузере используется SSL, в беспроводных точках доступа включено шифрование и т. д. Почему же вредоносное ПО не всегда применяет криптографию для скрытия своей внутренней информации?

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

Криптографические библиотеки могут иметь большой размер, из-за чего вредоносу приходится интегрировать их код статически или прибегать к динамической компоновке уже имеющегося кода.

Динамическая компоновка существующего системного кода может ухудшить совместимость с другими платформами.

Стандартные криптографические библиотеки легко обнаруживаются (по таблице импорта, криптографическим константам или путем сопоставления функций).

При использовании симметричных алгоритмов шифрования приходится думать о том, как спрятать ключ.

Надежность многих стандартных криптографических алгоритмов основана на устойчивом ключе. Идея состоит в том, что сам алгоритм широко известен, но

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

310  Часть IV  •  Возможности вредоносного ПО

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

без ключа зашифрованный текст почти невозможно расшифровать (это потребует огромного объема работы). Раз нужно сделать расшифровку максимально трудоемкой, ключ должен быть настолько длинным, чтобы невозможно было проверить все его потенциальные варианты. В случае со стандартными алгоритмами, которые применяются во вредоносном ПО, нужно определить не только метод шифрования, но и ключ.

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

Распознавание строк и импортированных символов

Один из методов распознавания стандартных криптографических алгоритмов заключается в поиске строк, которые указывают на применение шифрования. Например, во вредоносную программу может быть статически вкомпилирована криптографическая библиотека, такая как OpenSSL. Ниже показана строка, изъятая из вредоносного кода, который был скомпилирован с поддержкой шифрования на основе OpenSSL:

OpenSSL 1.0.0a

SSLv3 part of OpenSSL 1.0.0a TLSv1 part of OpenSSL 1.0.0a SSLv2 part of OpenSSL 1.0.0a

You need to read the OpenSSL FAQ, http://www.openssl.org/support/faq.html %s(%d): OpenSSL internal error, assertion failed: %s

AES for x86, CRYPTOGAMS by <appro@openssl.org>

Еще одним способом обнаружения стандартной криптографии является поиск импортированных символов, которые ссылаются на криптографические функции. Например, на рис. 13.9 показано окно IDA Pro со списком импортированных символов, которые предоставляют такие операции, как хеширование, генерация ключей

ишифрование. В Windows большинство функций, имеющих отношение к криптографии, начинается с Crypt, CP (cryptographic provider) или Cert (хотя бывают

иисключения).

Рис. 13.9. Список криптографических функций импорта в IDA Pro

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Глава 13. Кодирование данных  311

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Поиск криптографических констант

Третий базовый метод обнаружения криптографии заключается в использовании инструментов, способных находить распространенные криптографические константы. Здесь мы рассмотрим Krypto ANALyzer и расширение FindCrypt2 из состава IDA Pro.

Использование FindCrypt2

IDA Pro предоставляет расширение FindCrypt2, которое входит в состав IDA Pro SDK (и доступно по адресу www.hex-rays.com/idapro/freefiles/findcrypt.zip). Оно ищет в теле программы любые константы, имеющие отношение к криптографическим алгоритмам. Это позволяет добиться хороших результатов, поскольку в большинстве методов шифрования применяются какие-нибудь виды магических констант. Магическая константа — это некая фиксированная последовательность байтов, которая относится к основной структуре алгоритма.

ПРИМЕЧАНИЕ

Некоторые криптографические алгоритмы неиспользуют магические константы. В частности, международный алгоритм шифрования данных (International Data Encryption Algorithm, IDEA) и алгоритм RC4 формируют свои структуры во время выполнения, благодаря чему они неподлежат идентификации. Вредоносное ПО часто применяет алгоритм RC4 — вероятно, ввиду небольшого размера и простоты в реализации, к тому же он не содержит криптографических констант, которые могли бы его выдать.

Расширение FindCrypt2 выполняется автоматически при каждом анализе, хотя его можно запустить вручную из соответствующего меню. На рис. 13.10 показана панель вывода IDA Pro с результатами работы FindCrypt2 в контексте зараженной DLL. Вредонос содержит целый ряд констант с префиксом DES. Определив функции, которые обращаются к этим константам, вы сможете быстро найти криптографический код.

Рис. 13.10. Вывод FindCrypt2 в IDA Pro

Использование Krypto ANALyzer

Krypto ANALyzer (KANAL) работает по тому же принципу, что и FindCrypt2. Это расширение PEiD (www.peid.has.it), обладающее более широким спектром констант (что в итоге приводит к большему числу ложных срабатываний). Помимо констант

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

w

 

 

to

 

 

312  Часть IV  •  Возможности вредоносного ПО

w Click

 

 

 

 

 

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

KANAL также распознает таблицы Base64 и импорты функций, имеющие отношение к криптографии.

На рис. 13.11 показаны два окна: слева PEiD, а справа — расширение KANAL. Чтобы запустить расширение в PEiD, можно щелкнуть на стрелке в нижнем правом углу. В процессе анализа KANAL ищет константы, таблицы и криптографические функции импорта из своего списка. На рис. 13.11 во вредоносе найдены таблица Base64, константа CRC32 и несколько функций вида Crypt*.

Рис. 13.11. PEiD и вывод Krypto ANALyzer (KANAL)

Поиск информации с повышенной энтропией

Еще одним признаком применения криптографии является наличие информации с повышенной энтропией. Помимо криптографических констант или ключей эта методика позволяет идентифицировать сами зашифрованные данные. Ввиду своего широкого охвата она может использоваться в ситуациях, когда не удается найти криптографические константы (как в случае с RC4).

ПРЕДУПРЕЖДЕНИЕ

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

Одним из инструментов, который реализует этот подход для PE-заголовков, является расширение IDA Entropy (www.smokedchicken.org/2010/06/ida-entropy-plugin.html). Чтобы его установить, поместите файл ida-ent.plw в каталог с расширениями IDA Pro.

Вернемся к вредоносу на рис. 13.10, показывающему признаки DES-шифрования. Загрузите этот файл в IDA Pro и запустите IDA Entropy. Вначале на экране появится окно Entropy Calculator, показанное в левой части рис. 13.12. Вы можете выбрать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Глава 13. Кодирование данных  313

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

и проанализировать любой отдельный сегмент. В данном случае нас интересует небольшой участок сегмента rdata. Если нажать кнопку Deep Analyze (Глубокий анализ), в заданной области будет выполнен поиск отрезков данных, превышающих определенный лимит. При этом учитываются указанные параметры (размер отрезка, длина шага и максимальная энтропия). Сравнив вывод на рис. 13.10 с результатами глубокого анализа на рис. 13.12, вы увидите те же адреса в районе 0x100062A4. Расширение IDA Entropy нашло константы DES, руководствуясь лишь их высокой степенью энтропии и при этом не имея никакого представления об их назначении!

Рис. 13.12. Расширение IDA Entropy

Для эффективного применения этой методики необходимо понимать связь между размером отрезка и уровнем энтропии. Параметры, представленные на рис. 13.12 (размер отрезка — 64 с максимальной энтропией 5,95), на самом деле хорошо подходят для поиска многих видов констант и позволяют найти любые строки в кодировке Base64 (даже нестандартные).

Самый высокий уровень энтропии будет иметь 64-байтная строка, в которой у каждого байта есть уникальное значение. Эти 64 значения дадут показатель, равный 6 (6 битов энтропии), поскольку количество вариантов на основе 6 битов равно 64.

Есть еще одно сочетание параметров, которое может оказаться полезным: размер отрезка — 256 и максимальная энтропия — 7,9. Это подразумевает наличие строки, которая состоит из 256 последовательных байтов и представляет 256 возможных значений.

Расширение IDA Entropy включает в себя инструмент для графического представления заданной области. Он может помочь подобрать параметры для ма­ ксимального показателя энтропии и участки, на которых стоит сосредоточиться. Кнопка Draw (Нарисовать) генерирует диаграмму, в которой более светлые полоски соответствуют повышенному уровню энтропии. Разместив указатель мыши над определенным участком диаграммы, вы сможете увидеть уровень его энтропии. Сложно понять полезность этого инструмента лишь по его напечатанному изображению,