Reverse tcp shell windows

Reverse tcp shell windows

Reverse Shell Cheat Sheet

Don’t forget to check with others shell : sh, ash, bsh, csh, ksh, zsh, pdksh, tcsh, bash

TLS-PSK (does not rely on PKI or self-signed certificates)

Java Alternative 1

Java Alternative 2

NOTE: This is more stealthy

Windows and Linux

by frohoff NOTE: Java reverse shell also work for Groovy

Groovy Alternative 1

NOTE: This is more stealthy

Compile with gcc /tmp/shell.c —output csh && csh

Windows Staged reverse TCP

Windows Stageless reverse TCP

Linux Staged reverse TCP

Linux Stageless reverse TCP

Spawn TTY Shell

In order to catch a shell, you need to listen on the desired port. rlwrap will enhance the shell, allowing you to clear the screen with [CTRL] + [L] .

Sometimes, you want to access shortcuts, su, nano and autocomplete in a partially tty shell.

⚠️ OhMyZSH might break this trick, a simple sh is recommended

The main problem here is that zsh doesn’t handle the stty command the same way bash or sh does. [. ] stty raw -echo; fg[. ] If you try to execute this as two separated commands, as soon as the prompt appear for you to execute the fg command, your -echo command already lost its effect

or use socat binary to get a fully tty reverse shell

Spawn a TTY shell from an interpreter

  • vi: :!bash
  • vi: :set shell=/bin/bash:shell
  • nmap: !sh
  • mysql: ! bash

Alternative TTY method

Fully interactive reverse shell on Windows

The introduction of the Pseudo Console (ConPty) in Windows has improved so much the way Windows handles terminals.

ConPtyShell uses the function CreatePseudoConsole(). This function is available since Windows 10 / Windows Server 2019 version 1809 (build 10.0.17763).

TCP reverse shell on Windows

I am trying to implement a proof of concept BadUSB DigiSpark that can emulate a HID keyboard and open a reverse shell just using Windows default package (i.e. PowerShell and/or CMD).

What I have found so far:

Despite working, the aforementioned code takes too long to be typed. Is it possible to create a reverse shell with fewer lines of code?

1 Answer 1

284 characters. Yes you can have fewer «lines of code» just by putting them all on one line, and you can’t have fewer than one line, so hooray, best case already achieved.

😐 face for not even using the same tricks consistently within the same code. And for not giving any way to test it.

  1. remove all the semicolons.
  2. remove the space around -ne 0
  3. remove -ne 0 because numbers cast to true and 0 casts to false
  4. single character variable names
  5. drop port 55555 to 5555

Change byte array from

Nest that into the reading call because who cares if it gets reinitialized every read.

You can call [text.encoding]::ASCII.GetString($b) directly, but why ASCII? If it works if you can drop the encoding, then do

but you’re only using that to call iex so put it there and don’t use a variable for it. And do similar to make the byte array without calling ASCII as well.

Читайте также:  Windows api windows folder

. and: 197 chars, 30% smaller:

Assuming it works, with no way to test it, it probably won’t.

Edit: I guess if you can change the other side completely, then you could make it so the client would use JSON to communicate back and forth, and do a tight loop of

and your server would have to have the command ready in JSON like <'c':'gci'>and also accept a POST of the reply.

Difference between “windows/shell_reverse_tcp” and “windows/shell/reverse_tcp” Exit Behavior

The above 2 Metasploit payloads are used to create a reverse shell from one system to another. The difference between them is clearly explained here https://github.com/rapid7/metasploit-framework/wiki/How-payloads-work

However, I am trying to understand how both payloads will act if the system they are trying to connect to is not reachable.

will try to connect to «10.0.0.50». The question is how each payload is going to act if «10.0.0.50» is not listening on port «443» ?

Both payloads are using EXITFUNC process , however, when I run them inside a debugger and place a breakpoint at the last instruction of the shellcode, I got different results.

I see both of them utilize «mswsock.dll» trying to connect to the remote system, once timed out (default is 5 seconds):

  • shell_reverse_tcp will show «process terminated» inside the debugger and EIP is pointing to ntdll.KiFastSystemCallRet . The breakpoint will never be hit
  • on the other hand shell/reverse_tcp will hit the breakpoint at the end of the shellcode
  • I confirmed that both payloads working fine by connecting successfully to the remote system if its listening on the preconfigured port.
  • shell_reverse_tcp hits the breakpoint only if it first was able to connect to the remote system. After exiting the shell on the remote system using exit inside CMD, then the breakpoint will be hit.

Any idea why one is hitting the breakpoint and one does not if the remote listener is not reachable ?

О создании пэйлоадов для разных платформ с помощью msfvenom

«Голова — лучший антивирус», — эта идея никогда не потеряет актуальности. Для того, чтобы эффективно бороться с компьютерными угрозами, надо знать своих врагов. Среди таких врагов — программы, которые позволяют незаметно подключаться к компьютеру и выполнять с ним некие действия, проще говоря, софт для взлома систем. Полагаем, знание того, как создают подобный софт, хотя бы на базовом уровне, понимание того, как он работает, полезно любому, кого волнуют вопросы компьютерной безопасности. Кроме того, такой софт можно использовать для проверки защищённости собственных систем.

Предварительные требования

Для того, чтобы попробовать то, о чём пойдёт речь, на практике, вам понадобится компьютер с установленной на нём Kali Linux, компьютеры под управлением Windows и Linux, Android-смартфон. В процессе работы, при составлении команд, мы будем пользоваться следующими ключами:

  • Lhost — IP-адрес компьютера, на котором установлена Kali, то есть — нашей рабочей машины.
  • Lport — порт, который назначен серверу — программе, которая «слушает» сеть и ожидает подключения от клиента.
  • P — сокращение от «payload», пэйлоад для выбранной платформы
  • F — ключ, задающий тип файла, например, exe для Windows, apk для Android, и так далее.

В терминале Kali введём команду msfvenom . Результаты её работы показаны ниже. А именно, будет выведен список всех доступных опций для создания пэйлоадов. Тут мы рассмотрим лишь некоторые из них.

Читайте также:  Как найти get windows

Организация Bind Shell-подключения

Bind shell — это схема взаимодействия с удалённой консолью, при которой на целевом компьютере запускается сервис, к которому может подключиться атакующий. Фактически, речь идёт о прямом подключении к атакуемому компьютеру. Для того, чтобы создать соответствующий пэйлоад для Windows, нужно выполнить следующую команду в терминале:

В результате будет создан exe-файл, который будет сохранён по адресу, указанному при выполнении команды, а именно — это /root/Desktop/bind.exe . Полученный файл нужно каким-то образом доставить на компьютер жертвы и выполнить его. Например — воспользоваться методами социальной инженерии или выложить его на сервис обмена файлами.

Теперь запустим msfconsole и введём нижеприведённые команды для того, чтобы открыть сессию:

После выполнения файла в нашем распоряжении окажется meterpreter-подключение к целевому компьютеру:

Использованная здесь опция bind_tcp полезна в тех случаях, когда мы отключаемся от компьютера жертвы, но он при этом ещё работает. Мы можем выполнить ту же команду и подключиться снова, при этом не нужно, чтобы эксплойт снова запускали на удалённом компьютере.

Организация Reverse Shell-подключения

Reverse Shell (или Reverse TCP, или connect-back, или обратное подключение) — это схема взаимодействия с удалённым компьютером, обратная вышеописанной. При её использовании нужно, чтобы атакующий сначала запустил на своей машине сервер, при этом целевая машина будет играть роль клиента, который подключается к этому серверу, после чего атакующий получает доступ к оболочке целевого компьютера.

Для того, чтобы создать соответствующую полезную нагрузку, нужно ввести в терминале Kali следующую команду:

В данном случае мы включаем в команду некоторые новые параметры, такие, как lhost (локальный хост), lport (локальный порт) для того, чтобы принять обратное соединение от компьютера жертвы.

После того, как пэйлоад создан, отправлен на атакуемый компьютер и выполнен там, мы переходим ко второму шагу атаки. Запустим msfconsole и введём следующие команды для того, чтобы организовать подключение удалённого компьютера к нашей машине.

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

Организация Reverse HTTPS-подключения

Обратите внимание на то, что обе вышеописанные атаки осуществимы в том случаем, если на машине жертвы имеются подходящие работающие порты. Сейчас мы попытаемся найти выход из ситуации, когда на интересующем нас компьютере порты заблокированы. В подобном случае можно сориентироваться в ситуации и создать пэйлоад, например, воспользовавшись портом 443 для HTTPS. Для этого нужно ввести в терминале Kali следующую команду:

После создания пэйлоада и отправки его жертве, которая, как ожидается, рано или поздно запустит соответствующий файл, мы переходим к следующему шагу. Запускаем msfconsole и вводим следующие команды для организации подключения:

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

Скрытое Bind Shell-подключение

Исследуем ещё одну возможность msfvenom и попытаемся с её помощью обрести контроль над удалённым компьютером. В этот раз мы хотим заполучить доступ к командной оболочке, а не к сессии meterpreter.

Пэйлоад, который мы создадим нижеприведённой командой, после выполнения, прячется в системе, его нельзя обнаружить сканером портов.

После того, как файл готов и отправлен жертве, мы можем перейти к следующему шагу. А именно, воспользуемся Netcat, введя в терминале Kali следующую команду:

Reverse Shell-подключение с помощью Netcat

Теперь рассмотрим ещё один подход к использованию пэйлоадов типа shell_reverse_tcp , которые позволяют получить доступ к оболочке командной строки атакуемого компьютера. Введём в терминале Kali следующую команду:

Читайте также:  Windows application server 2012 r2 настройка

После создания файла и отправки его на атакуемый компьютер, создадим прослушиватель порта с использованием netcat :

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

Пэйлоады-макросы на VBA

Создадим пэйлоад в виде VBA-скрипта, который будем использовать в качестве макроса MS Excel для атаки на целевую машину. Для того, чтобы это сделать, выполним следующую команду в терминале Kali:

После выполнения команды, нужно скопировать то, что выделено на рисунке выше, от #if vba 7 до End if . Далее, откроем файл MS Excel, нажмём Alt+F11 для вызова окна управления макросами.

Тут введём имя макроса и нажмём на кнопку Create . Макрос мы хотим сохранить в открытой книге, поэтому в соответствующем выпадающем списке надо выбрать This Workbook .

После этого надо вставить в редакторе VBA ранее скопированный код пэйлоада, закрыть редактор и включить макросы.

Теперь можно заполнить Excel-файл какими-нибудь правдоподобно выглядящими данными, в нашем случае — это просто слово Test , сохранить и отправить жертве. Для организации подключения к удалённому компьютеру нужно открыть терминал Kali, выполнить команду msfconsole , после чего ввести следующие команды:

Когда Excel-файл будет открыт на интересующем нас компьютере, жертве будет предложено включить макросы. После их включения выполнится VBA-скрипт, который создаст обратное подключение к удалённому компьютеру. Выглядеть это будет так, как показано ниже.

VNC-пэйлоад

Хотя и неприлично, без ведома человека, наблюдать за тем, что он делает за компьютером, тот пэйлоад, который мы создадим сейчас, занимается именно этим. Откроем терминал Kali и введём следующую команду:

После создания пэйлоада мы, как обычно, отправляем его жертве, после чего начинаем готовиться к подключению. Для этого вызываем в терминале команду msfconsole и делаем следующее:

Тут можно видеть, что выполнена VNC-инъекция, что установлено удалённое соединение. Так же на компьютере под управлением Kali откроется окно Remote Desktop.

Пэйлоад для Android

Взлом мобильных устройств всегда привлекал к себе немалое внимание, поэтому рассмотрим методику создания пэйлоадов для платформы Android. Откроем терминал Kali и введём следующую команду:

После подготовки apk-файла его нужно передать на интересующее нас мобильное устройство. Затем нужно подготовиться к подключению на Kali:

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

Пэйлоад для Linux

Откроем терминал Kali и введём следующую команду:

После создания файла его нужно отправить на компьютер жертвы и подготовиться к подключению:

После выполнения пэйлоада будет создано обратное TCP-подключение к нашему компьютеру, которое предоставит в наше распоряжение сессию meterpreter.

Пэйлоад для PowerShell

Для того, чтобы создать пэйлоад для PowerShell, откроем терминал Kali и введём следующую команду:

Теперь, как обычно, после создания пэйлоада, передадим его на интересующий нас компьютер и подготовимся принять подключение:

После запуска пэйлоад создаст обратное подключение к оболочке. Выглядит это так, как показано ниже.

Итоги

Как видите, с использованием msfvenom очень просто создавать программы, предназначенные для удалённого подключения к самым разным системам. То, что это доступно даже пользователям с минимальной подготовкой, придаёт особую актуальность правилу, которое знают все, но далеко не все соблюдают: «Не открывайте файлы, в происхождении которых сомневаетесь».

Уважаемые читатели! Известны ли вам случаи взлома систем с использованием пэйлоадов, похожих на те, о которых мы сегодня говорили?

Оцените статью