ВРЕДОНОСНЫЙ КОД (ВРЕДОНОСНАЯ ПРОГРАММА) Технология обнаружить В настоящее время основными являются следующие: Сканирование кода технология функции, технология сканирования на основе сигнатур, технология эвристического сканирования, Технология моделирования «песочница»、Импортировать анализ технологии таблиц, а также технологии облачного сканирования и уничтожения.
Обнаружение вредоносного кода обычно делится на статический анализ и динамический анализ.
Самым классическим статическим анализом являетсяСканирование кода функциитехнология(Signature scanning),Сканирование кода Функция технологии является краеугольным камнем обнаружения вредоносного кода. Она определяет, содержит ли файл угрозы, путем обнаружения наличия в двоичном файле значений характеристик вредоносного кода. кода функциитехнология依赖于海量已知из恶意代码特征,Большинство из этих функций представляют собой шестнадцатеричные коды с определенным значением, извлеченным путем ручного обратного проектирования.,Это также может быть код функции, автоматически извлекаемый программой.
Технология обнаружения на основе сигнатур вредоносного кода и технология анализа таблицы импорта также являются технологиями статического анализа. Однако технология обнаружения на основе сигнатур вредоносного кода не анализирует файл, а только выполняет расчет подписи для файла.
动态分析из代表就даЭВРИСТИЧЕСКАЯ техника сканирования,Эвристическое сканирование также опирается на библиотеки функций.,Но в отличие от статического сканирования подписи,,Эвристическое сканирование обнаруживает наличие процесса в вашей системе в режиме реального времени.,Когда процесс совершает какие-то деликатные действия (например, изменение реестра, форматирование диска, чтение и запись большого количества файлов в течение длительного времени, скрытие файлов, добавление элементов автозагрузки, вызов неэкспортированных системных функций и т. д.), процесс накапливает вес.,Разное поведение соответствует разному весу,Когда вес процесса достигает установленного порога, можно определить, что программа ведет себя вредоносно.
Этот метод динамического анализа эвристического сканирования позволяет обнаруживать неизвестные вредоносные программы, а также устранять ложноотрицательные результаты, вызванные упаковкой двоичных файлов. Хотя эвристическое сканирование имеет эти преимущества, процесс обнаружения эвристического сканирования основан на запуске программы. То есть, когда запускается программа с неизвестной безопасностью, ее поведение будет обнаружено в реальном времени в течение ее жизненного цикла. вредоносная программа После обхода эвристического обнаружения каким-либо образом опасное поведение вредоносной программы будет напрямую влиять на систему и вызывать угрозы.
Таким образом, на этой основе появился метод анализа «песочницы». Метод анализа «песочницы» также является методом динамического анализа. Он помещает обнаруживаемый файл и запускает его в моделируемую и контролируемую виртуальную среду, а также анализирует его поведение и вызовы функций. оценить свою угрозу, благодаря этой технологии моделирования кода она компенсирует недостатки эвристического сканирования и снижает ненужные потери.
Вышеуказанные технологии обнаружения обогащают средства борьбы с вредоносными кодами, а также обеспечивают возможности обнаружения и экстренного реагирования на появление новых вирусов. Большинство этих технологий обнаружения опираются на огромную библиотеку функций, которая содержит различные функции известного вредоносного кода, такие как шестнадцатеричные функции, функции сигнатур вирусных файлов, функции поведения вирусов и т. д. Поскольку информация о функциях играет решающую роль в обнаружении компьютерных вирусов, качество выбора функций напрямую определяет производительность сканирования на вирусы.
Технология сканирования сигнатурного кода обладает определенной степенью универсальной способности уничтожения (конечно, это зависит от качества выбора кода функции), то есть сканирование кодов функций, которые широко присутствуют во вредоносных файлах, может обеспечить возможности сканирования «один ко многим». (т. е. один код функции может соответствовать множеству вредоносных файлов).
Благодаря уникальности характеристической сигнатуры для выборки может быть достигнута 100%-ная степень обнаружения. Однако из-за уникальности характеристической сигнатуры она может достигать только соотношения один к одному (т. е. может быть только одно значение сигнатуры). сопоставить один вредоносный файл). Этот метод Хотя ложные срабатывания маловероятны, требуемая вирусная база данных будет слишком большой и только Если автору вредоносного кода потребуется перекомпилировать файл или изменить какой-либо байт, значение подписи не будет совпадать. Однако, поскольку вычисление подписи очень простое и быстрое, технология обнаружения на основе сигнатурных подписей подходит для экстренного реагирования на неожиданное вредоносное действие. code, при условии, что вредоносный код не обновляет свою онтологию динамически.
Технология анализа таблицы импорта (метод эвристического сканирования). Присвоив разным API разные веса, программа обычно вызывает несколько API. Когда общий вес программы достигает порогового значения, ее можно определить как вредоносную программу, об этом также свидетельствует. что технология анализа таблицы импорта (технология эвристического сканирования) не может идентифицировать конкретный тип или имя вируса. В то же время уровень ложных срабатываний эвристического сканирования также очень высок, но этот метод идентификации также полезен для предотвращения неизвестных вредоносных программ. Программа внесла большой вклад.
Подводить итоги,Характеристики каждой технологии сканирования следующие:
Технология обнаружения | Поддерживать ли обнаружение без сигнатур | Убийственный | Ложное срабатывание | Возможности обнаружения неизвестных вирусов |
---|---|---|---|---|
Сканирование кода функции | X | Y | Y- | Y-- |
MD5-сканирование | X | X | X | X |
Импортировать анализ таблицы | X | Y | Y+ | Y+ |
Теория и реализация технологии вредоносного кода
Под внедрением вредоносного кода подразумевается прикрепление вредоносного кода к нормально работающей программе с целью нанесения ущерба, модификации и т. д. системы или обычных программ.
Программа Windows обычно загружает несколько файлов динамической библиотеки (dll). Например, процесс с именем nika.exe импортирует библиотеки динамической компоновки (dll), такие как kernel32 и gdi32. Внедрение вредоносного кода заключается в загрузке вредоносных модулей в библиотеки динамической компоновки, вызываемые обычными программами для выполнения вредоносных действий. После внедрения вредоносной динамической библиотеки с именем hacker в nika.exe мы обнаружили, что вредоносная программа поместила динамическую библиотеку с именем hacker.dll в файл библиотеки, связанный с nika.exe. Вредоносный код в hacker.dll прикреплен к nika. .exe и запускается.
Технология внедрения вредоносного код делится на несколько типов: Thread Injection、КРЮК-инъекция、APC-инъекция и т. д.
Потоковая инъекция загружает вредоносную динамическую библиотеку путем создания удаленного потока, который обычно реализуется с помощью следующей функции:
Простой процесс инжекционной технологии (технологии дистанционного впрыска резьбы) заключается в следующем:
Далее мы пытаемся реализовать простую программу внедрения:
Шаг 1: Реализуйте простую программу (вывод Hello World) в качестве внедряемой программы.
Код выглядит следующим образом:
#include <stdio.h>
int main()
{
printf("Hallo World!\n");
getchar();
return 0;
}`
*Функция getchar в коде используется для предотвращения вывода строки и прямого выхода программы, чтобы невозможно было наблюдать экспериментальное явление.
Шаг 2. Создайте новый проект (проект библиотеки динамической компоновки) и используйте следующий код для реализации простого всплывающего окна:
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
{
HANDLE hHandle = GetCurrentProcess();
DWORD pressID = GetProcessId(hHandle);
char temp[100] = { 0 };
sprintf(temp, "I am Form pressID = %d", pressID);
MessageBoxA(0, temp, "Success!", MB_OK);
break;
}
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
* DLL_PROCESS_ATTACH указывает, что dll загружена успешно, в случае Код под DLL_PROCESS_ATTACH получает текущий идентификатор процесса и передает MessageBoxВсплывающее окно. Это может облегчить нам понимание технологии инъекций.
Шаг 3. Создайте новый проект для удаленного внедрения динамически подключаемых библиотек, Код. выглядит следующим образом:
#include <stdio.h>
#include <Windows.h>
int main()
{
printf("Пожалуйста, введите ID процесса:");
DWORD processID = 0;
scanf("%d", &(DWORD)processID);
char dllPath[MAX_PATH];
memset(dllPath, 0x00, sizeof(dllPath));
printf("Пожалуйста, введите путь к модулю внедрения (абсолютный путь):");
scanf("%s", dllPath);
LPVOID pathSize = lstrlen(dllPath) + 1;
HANDLE hHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processID);
if (hHandle == NULL)
{
printf("Не удалось удаленно открыть процесс!\n");
getchar();
return -1;
}
LPVOID NewMemoryAddress = VirtualAllocEx(hHandle, NULL, pathSize, MEM_COMMIT, PAGE_READWRITE);
if (NewMemoryAddress == NULL)
{
printf("Не удалось создать пространство удаленного процесса!\n");
getchar();
return -1;
}
SIZE_T real_size = 0;
if (WriteProcessMemory(hHandle, NewMemoryAddress, dllPath, pathSize, &real_size) == FALSE)
{
printf("Не удалось записать пространство удаленного процесса!\n");
getchar();
return -1;
}
printf("Запись в пространство целевого процесса прошла успешно [write %zu Байты]\n", real_size);
FARPROC LoadFun = GetProcAddress(GetModuleHandleA("kernel32.dll"), "LoadLibraryA");
if (LoadFun == NULL)
{
printf("Не удалось получить адрес функции LoadLibrary!\n");
getchar();
return -1;
}
HANDLE rHandle = CreateRemoteThread(hHandle, NULL, 0, (LPTHREAD_START_ROUTINE)LoadFun, NewMemoryAddress, 0, NULL);
if (rHandle == NULL)
{
printf("Не удалось выполнить внедрение LoadLibrary при удаленном вызове!\n");
getchar();
return -1;
}
CloseHandle(hHandle);
printf("Инъекция успешна!\n");
getchar();
return 0;
}
*в ProcessID — это идентификатор целевого процесса, а dllPath — это путь к файлу Dll, созданному на втором этапе (обратите внимание, что необходимо использовать абсолютный путь к DLL)
Выше мы реализовали простую программу удаленного внедрения потоков, и результаты ее работы следующие:
После внедрения целевой процесс успешно открывает окно и отображает PID процесса.
Дисплей модуля впрыска (dll)
Используйте инструмент ProcessExplorer для просмотра PID процесса и загруженных модулей:
Технология шифрования файлов
использовать Технология шифрования Файлы — одна из распространенных характеристик поведения вирусов-вымогателей. Вирусы-вымогатели действуют через важные файлы на компьютере. Некоторые вирусы-вымогатели используют только файлы с определенными суффиксами (например, .pdf). .txt .doc и т. д. (в основном типы файлов документов) для быстрого шифрования и шантажа.
Распространенные методы шифрования условно делятся на следующие категории:
1. Симметричное шифрование ( symmetric encryption algorithm ):симметрияшифрованиетолько один ключ,Их хранят сторона шифрования и сторона дешифрования соответственно.,Его шифрованиеалгоритм фиксирован,Ключ никогда не меняется,Данные после прохождения ключа шифрования передаются стороне дешифрования.,Сторона дешифрования может расшифровать зашифрованный текст, используя тот же ключ, что и сторона шифрования, и тот же алгоритм. Преимуществами этого алгоритма шифрования являются скорость шифрования, сложность, эффективность, удобство и простота использования.,Но безопасность у него низкая,Поскольку ключ шифрования сгенерировал ключ шифрования, открытый текст необходимо отправить стороне дешифрования вместе с ключом шифрования, чтобы расшифровать зашифрованный текст.,Это может быть усечено или подделано во время передачи.,Конфиденциальность и безопасность нарушены. Общие симметричные алгоритмы шифрования включают AES, DES, RC и т. д. алгоритм.
2. Нет Симметричное шифрование ( public key encryption ):Нетсимметрияшифрованиедвумя ключами,Это открытый ключ и закрытый ключ соответственно.,Открытый ключ может просмотреть любой,Закрытый ключ обычно хранится у стороны шифрования.,Данные с открытым ключом шифрования можно расшифровать только с помощью закрытого ключа.,Данные с использованием закрытого ключа шифрования могут быть расшифрованы только с помощью открытого ключа. шифрование Открытый ключ шифрования, сгенерированный получателем.,и отправить зашифрованный текст расшифровщику,Декриптор может расшифровать, используя соответствующий закрытый ключ.,Закрытый ключ хранится в секрете,Открытый ключ является общедоступным,Даже если публичный ключ будет перехвачен во время передачи,Поскольку закрытый ключ неизвестен, зашифрованный текст не может быть расшифрован. Таким образом, при асимметричном шифровании вам нужно защитить только ключ.,И никакой закрытый ключ не передается в процессе передачи.,Закрытый ключ всегда хранится на стороне дешифрования. Преимущества асимметричного шифрования: высокая безопасность, зашифрованный текст нелегко изменить и расшифровать. Недостатки: сложность алгоритма шифрования.,шифрование, расшифровка занимает много времени. Распространенными асимметричными алгоритмами шифрования являются: RSA, Elgamal и др. алгоритм.
Выше приведены два основных типа шифрования. Вот введение в режим шифрования файлов:
Для шифрования файлов обычный процесс: прочитать поток файлов → зашифровать с использованием алгоритма шифрования побайтно (симметричный или асимметричный алгоритм) → получить зашифрованный файл. Процесс расшифровки аналогичен описанному выше.
Технология кейлогинга также часто используется троянскими вирусами для кражи (например, номеров счетов,Пароль и др.) одно из средств информации,Обнаруживая информацию о нажатиях клавиш пользователя в режиме реального времени,Вырезаем полезные детали,То есть введите пароль учетной записи пользователя,Это позволяет троянскому коню совершать кражу учетных записей и другие угрожающие действия. В Windows мы можем использовать функцию GetRawInputData для получения пользовательского ввода. Процесс выглядит следующим образом:
Зарегистрировать необработанные устройства ввода (RegisterRawInputDevices) → Получить необработанные входные данные (GetInputRawData) → Записать данные клавиатуры в файл.
Требуется таблица информации о позиции ключа, соответствующей коду ASCLL, которую необходимо настроить для запроса и записи кода ASCLL, соответствующего ключу.
Технология захвата экрана также является распространенной функцией троянского пульта дистанционного управления и других программ. Сделав снимок экрана целевой машины.,Терминал дистанционного управления можно использовать для просмотра текущего состояния и операций объекта. Снимок экрана можно сделать с помощью GetDC.,GetDc умеет рисовать.
Код выглядит следующим образом:
#include <stdio.h>
#include <Windows.h>
#include <atlimage.h>
int PrintScreen()
{
HWND hWnd;
HDC hdc;
HBITMAP bmp;
HGDIOBJ bmp_t;
HDC mdc;
unsigned int width = 0;
unsigned int hight = 0;
hWnd = GetDesktopWindow();
hdc = GetDC(hWnd);
mdc = CreateCompatibleDC(hdc);
width = GetSystemMetrics(SM_CXSCREEN);
hight = GetSystemMetrics(SM_CYSCREEN);
bmp = CreateCompatibleBitmap(hdc, width, hight);
bmp_t = SelectObject(mdc, bmp);
BitBlt(mdc, NULL, NULL, width, hight, hdc, NULL, NULL, SRCCOPY);
CImage image;
image.Attach(bmp);
image.Save("ScreenPrint.jpg");
return 0;
}
int main(void)
{
PrintScreen();
}
Технология вредоносного кода обнаруженияпринцип Обсуждать
Технология обнаружения MD5 подразумевает генерацию строки фиксированной длины для вредоносных файлов с помощью алгоритма MD5.,И единственное значение MD5,Расчет по большому количеству образцов,Сохраните значения MD5 нескольких вредоносных файлов в файл, который станет вирусной базой данных MD5.,При определении того, является ли новая программа вредоносным файлом, нам нужно использовать только тот же алгоритм MD5 для этого файла.,Полученное значение MD5 вводится в базу данных для запроса.,Если совпадает,Тогда мы сможем судить,Должно быть, это вредоносный файл.
MD5 быстро и легко вычисляется и не вызывает ложных срабатываний.,Большинство механизмов обнаружения вредоносного кода обнаруживают файл MD5. Но в силу уникальности MD5,Даже 1 байт во вредоносном файле изменился,MD5 также изменится соответствующим образом. Это приводит к появлению еще одного оптимизированного метода обнаружения MD5.,Путем поиска раздела .text (т.е. сегмента кода) PE-файла.,Выполните для него расчет MD5.,Полученное таким образом значение MD5 лучше, чем раньше. Конечно,Теперь есть и метод расчета нечеткого хэша.,Вычислив хеш-значение фрагментов вредоносного файла, можно сравнить сходство двух файлов.。Этот видалгоритм Больше подходит для обнаружения вредоносных файлов.。Далее мы используем картинку, чтобы углубить понимание Технология обнаружения Понимание MD5:
На приведенном выше рисунке просто показан пример базового обнаружения вируса MD5 путем расчета MD5 проверяемого файла и сравнения его со значением MD5 вредоносного файла, хранящегося в базе данных вирусов, когда значение MD5 A и значение MD5. B одинаковы, вредоносный файл соответствует, и наоборот. Это обычный файл.
Далее давайте узнаем о технологии обнаружения кода подписи,Технология обнаружения кода Доставка — метод статического обнаружения, Технология обнаружения кода оплату, найдя указанный Код в двоичном файле функции (обычно шестнадцатеричное) Выполните сравнительный анализ, чтобы определить, представляет ли программа угрозу.
Технология сопоставления кодов объектов имеет следующие методы:
[1] Метод сопоставления на основе смещения подписи + длины подписи: этот метод сопоставления использует адрес смещения полученной подписи во вредоносном файле плюс длину подписи для выполнения сопоставления местоположения. Преимущество этого метода заключается в том, что он сканирует. быстро, но недостатком является то, что этот метод сопоставления неэффективен и не может сканировать правильные результаты на наличие вредоносных файлов, которые имеют подписи, но разные адреса смещения. На картинке ниже поясняется вид парламентия. подписей процесса технического сканирования:
[2] На основе метода полнотекстового сопоставления: Метод подписей использует полнотекстовое сопоставление и использует автоматы KMP, AC или сопоставление методом перебора BF для сопоставления функций в двоичном коде всего тестируемого файла. Если сопоставление успешно, файл может быть определен как исправный. вредоносный файл. На рисунке ниже поясняется вид Сканирование кода функциипроцесс:
Импортировать анализ технология таблиц (эвристическое сканирование)
Импортировать анализ Технология таблиц представляет собой подкатегорию эвристического сканирования, а также метод статического анализа. Анализируя таблицу функций импорта и экспорта PE-файлов под Windows, можно присвоить уровень угрозы программе, когда оценка достигает определенного порога. можно судить, что программа может быть вредоносной. Импортировать анализ Технология таблиц также опирается на библиотеку функций. Эта библиотека записывает чувствительность различных функций API и присваивает баллы функциям API. При сканировании программы, когда программа сопоставляется и вызывает функцию API, записанную в библиотеке, выполните поиск API. функция, записанная в библиотеке. Вес, соответствующий функции, добавляется к общему количеству подозрительных файлов. Преимущество этого метода обнаружения заключается в том, что он позволяет обнаруживать неизвестные файлы угроз. Недостатком является высокий уровень ложных срабатываний.
На рисунке ниже кратко описано Импортировать анализ Процесс табличной технологии:
Конечно, это всего лишь самый простой способ. Реальная ситуация гораздо сложнее. Более точное обнаружение обычно осуществляется путем импорта комбинаций и упорядочений таблиц или процессов вызова функций.
Технология моделирования «песочница»,Это метод динамического анализа.,Угроза неизвестного файла оценивается путем виртуализации среды выполнения неизвестного файла и запуска неизвестного файла в виртуальной среде (изолированной от физической машины) и мониторинга работы неизвестного файла в режиме реального времени. Поскольку виртуальная среда полностью изолирована от физического хоста,Поэтому, даже если в этой программе произойдет опасная операция, она не затронет реальный физический хост.