Платежные терминалы получают индивидуальные пакеты обновлений для установленного в них программного обеспечения через сеть. При этом в целях безопасности эти пакеты пересылаются в зашифрованных архивах. Пароли шифрования для терминалов разные и администратору не известны.
Администратор на CD-R диске получил очередной незашифрованный пакет обновлений (файл apu_test.rar) для отладочного терминала. В ходе проверки антивирусом оказалось, что файл «apu004.dll» заражен, а остальные файлы не содержат вредоносного кода.
Администратор предположил, что были подменены (заражены) отдельные файлы в пакетах и для других терминалов. С помощью специальной программы администратору удалось получить некоторые фрагменты пакетов обновлений нескольких терминалов.
Проанализируйте эти фрагменты и выясните, какие из файлов в них были заражены. Содержимое архива пакета обновлений с диска администратора:
Комментарий. К задаче прилагается: исходный архив с диска администратора (apu_test.rar), фрагменты пакетов обновлений для четырех терминалов (apu_termX.NNN).
Из условия можно извлечь информацию о содержимом архива, а именно – имена файлов, их размер и контрольная сумма (CRC32). При внесении изменений в файл его имя и размер могут не измениться, однако контрольная сумма при этом будет другой. Учитывая это, необходимо в перехваченных фрагментах определить контрольные суммы файлов и сравнить их с исходными.
Чтобы определить структуру информации, хранимую в архиве, необходимо открыть файл с помощью редактора и посмотреть его содержимое в шестнадцатеричном формате.
В этом режиме просмотра необходимо найти имя первого файла – «apu001.dat». Нетрудно заметить, что со смещением 16 байт влево от имени файла хранится контрольная сумма в обратном порядке байтов (рис. 1).
Рис. 1. Имя файла и его контрольная сумма в архиве
Проверив это и для остальных файлов архива, можно убедиться, что для всех файлов структура информации следующая:
[00 02] [xx xx xx xx] [другие данные 12 байт] [имя файла],
где xx xx xx xx – 4 байта контрольной суммы.
Для нахождения измененного файла необходимо в представленных фрагментах последовательно осуществлять поиск по имени файла и определять контрольную сумму. При несовпадении контрольной суммы с исходной можно однозначно сделать вывод, что файл был изменен.
Исключение составляет файл «apu004.dll», который изменен в исходном архиве. Если во фрагментах обнаружится этот файл с другой контрольной суммой, это означает, что файл не изменен.
Рассмотрим фрагменты архива для разных терминалов.
Терминал 1
Анализируя фрагмент «apu_term1.004» для терминала 1 было обнаружено имя файла «apu004.dll» и контрольная сумма BD E9 93 72, что соответствует исходному архиву, в котором этот файл заражен. А значит и в терминале 1 этот файл был изменен.
Рис. 2. Анализ фрагмента «apu_term1.004» для терминала 1
Для остальных файлов во фрагментах терминала 1 контрольные суммы совпадают с исходным архивом.
Терминал 2
Анализируя фрагмент «apu_term2.003» для терминала 2 было обнаружено имя файла «apu002.dll», однако контрольная сумма в файле содержится не полностью – только первый байт 88. Значит оставшаяся часть контрольной суммы находится в предыдущем фрагменте «apu_term2.002» – последние 3 байта.
Рис. 3. Анализ фрагмента «apu_term2.003» для терминала 2
Рис. 4. Анализ фрагмента «apu_term2.002» для терминала 2
В результате для файла «apu002.dll» контрольная сумма будет 88 4D 14 A8, что не соответствует исходному архиву, значит в терминале 2 этот файл был изменен.
Для остальных файлов во фрагментах терминала 2 контрольные суммы совпадают с исходным архивом, включая файл «apu004.dll», который в терминале 2 тоже был изменен.
Терминал 3
Анализируя фрагмент «apu_term3.003» для терминала 3 было обнаружено имя файла «apu003.dll» и его контрольная сумма 43 FA BC 74, которая не соответствует исходному архиву, значит в терминале 3 этот файл был изменен.
Рис. 5. Анализ фрагмента «apu_term3.003» для терминала 3
Анализируя фрагмент «apu_term3.005» для терминала 3 было обнаружено имя файла «apu004.dll» и его контрольная сумма 04 25 84 D7, которая не соответствует исходному архиву. Поскольку в исходном архиве этот файл был заражен, то можно сделать предположение, что в этом терминале файл «apu004.dll» является исходным, то есть без изменений.
Рис. 6. Анализ фрагмента «apu_term3.005» для терминала 3
Для остальных файлов во фрагментах терминала 3 контрольные суммы совпадают с исходным архивом.
Терминал 4
Анализируя фрагмент «apu_term4.005» для терминала 4 было обнаружено имя файла «apu004.dll» и его контрольная сумма 04 25 84 D7, которая не соответствует исходному архиву. Поскольку в исходном архиве этот файл был заражен, то можно сделать предположение, что в этом терминале файл «apu004.dll» является исходным, то есть без изменений.
Рис. 7. Анализ фрагмента «apu_term4.005» для терминала 4
Для остальных файлов во фрагментах терминала 4 контрольные суммы совпадают с исходным архивом.
а) терминал 1 – заражен файл «apu004.dll»,
б) терминал 2 – заражены файлы «apu002.dll» и «apu004.dll»,
в) терминал 3 – заражен файл «apu003.dll»,
г) терминал 4 – нет зараженных файлов.