Введение
Добро пожаловать в мою новую статью, сегодня я покажу вам, как я создаю две функции для шифрования и дешифрования шелл-кода с помощью XOR.
Эти две функции созданы с помощью C++ и их очень легко понять, давайте начнем.
Что такое XOR?
Шифрование XOR — это тип побитовой операции, который обычно используется в криптографии для шифрования данных. Он работает путем объединения открытого текста с секретным ключом с помощью оператора XOR (исключающее или). Результатом этой операции является зашифрованное сообщение, которое можно расшифровать, только объединив его с исходным ключом с помощью той же операции XOR. Безопасность шифрования XOR основана на том факте, что операция XOR является обратимой и очень трудно определить исходный ключ только по зашифрованному тексту.
Почему используется для шифрования шелл-кода?
Шифрование XOR часто используется для шифрования шеллкода, потому что это простая и быстрая операция, которую можно использовать для сокрытия содержимого кода. Операция XOR принимает два двоичных значения и возвращает результат, равный 1, если ровно один из входов равен 1, и 0 в противном случае. Когда для шифрования шеллкода используется шифрование XOR, выбирается ключ, который используется для XOR каждого байта шеллкода. Чтобы расшифровать шелл-код, тот же ключ снова используется для операции XOR каждого байта, что отменяет шифрование и восстанавливает исходный шелл-код.
Использование шифрования XOR для сокрытия содержимого шелл-кода может помочь избежать обнаружения программным обеспечением безопасности, поскольку зашифрованный шелл-код будет иметь другую структуру битов, чем исходный шелл-код, и может не совпадать с известными сигнатурами вредоносного кода. Однако шифрование XOR можно легко взломать, если известен ключ, поэтому его часто используют в сочетании с другими методами, такими как обфускация, чтобы затруднить обратный инжиниринг.
Код
#include <iostream> #include <string> #include <iomanip> using namespace std; void XOR_decrypt(unsigned char key) { for (int i = 0; i < len; i++) { payload[i] = payload[i] ^ key; cout << "\\x" << hex << setfill('0') << setw(2) << (int)payload[i]; } cout << endl; } void XOR_encrypt(unsigned char key){ for(int i = 0; i < len; i++){ payload[i] ^= key; } for(int i = 0; i < len; i++){ cout << "\\x" << hex << (int)payload[i]; } cout << endl; }
Функция XOR_decrypt(unsigned char key)
выполняет расшифровку XOR над payload
с помощью входного ключа и выводит результат в шестнадцатеричном формате.
Функция XOR_encrypt(unsigned char key)
выполняет шифрование XOR над payload
с помощью входного ключа и выводит результат в шестнадцатеричном формате.
ПОС
Давайте попробуем код:
Сначала я создаю шеллкод для всплывающего окна calc.
Теперь я поместил сюда в .cpp код:
Он использует объект, потому что этот код на самом деле является объектом из моей библиотеки разработки вредоносных программ, но функции те же, здесь я помещаю ссылку на эту библиотеку:
Давайте выполним:
Первая показывает реальный шеллкод, а затем шифрует внутри во второй части.
Выводы
Это одна из тем, я надеюсь, вам понравится и вы будете использовать ее для разработки своих вредоносных сценариев.
Если вам нравится мой контент и вы хотите помочь мне вывести этот проект на новый уровень, вы можете стать участником, пожертвовав ежемесячную подписку. Ваша поддержка поможет мне продолжать создавать качественный контент. Благодарим вас за щедрость!
Если в настоящее время пожертвование невозможно для вас, не проблема! Ваша поддержка в обмене моим проектом и распространении слова очень ценится. Я буду продолжать создавать и делиться своими работами, несмотря ни на что, и я благодарен за вашу поддержку и интерес.
Спасибо, что прочитали это :)
S12.