# Shell inversa con SSH
:authors: Celestino Amoroso
:docinfo: shared
:encoding: utf-8
:toc: right
:toclevels: 4
:toc-title: Indice Generale
:icons: font
:icon-set: fi
:numbered:
:table-caption: Tabella
:figure-caption: Diagramma
:docinfo1:
:sectlinks:
:sectanchors:
:source-highlighter: rouge
// :rouge-style: ThankfulEyes
:rouge-style: gruvbox
// :rouge-style: colorful
//:rouge-style: monokay

toc::[]

## Scenario
Un host target esegue il servizio SSH sul proprio indirizzo IP non raggiungibile da Internet. Lo stesso host può però stabilire connessioni SSH verso Internet (es. via NAT).

## Reverse-Shell
Una reverse-shell consente di aprire una shell sull'host target con una connessione via Internet da un determinato host bridge, eventualmente anche il proprio PC, una volta che dal target sia stabilito un tunnel SSH all'host bridge.
Lo scopo del tunnel è di aprire una porta remota sull'host bridge che ruoti il traffico inviato a quella porta verso il servizio SSH del target.

.Schema per l'attivazione del tunnel SSH per l'apertura della porta remota
[source,sh]
----
ssh -NR IP-remoto:porta-remota:IP-locale:porta-locale bridge-host
----

L'__IP-remoto__ e la _porta-remota_ si riferiscono al _bridge-host_; se _IP-remoto_ è _localhost_ può essere omesso in quanto è il valore predefinito.

L'__IP-locale__ e la _porta-locale_, nel caso di reverse-shell, specificano i riferimento al servizio SSH del _target-host_; pertanto i valori standard sono _localhost_ e _22_.

.Esempio: Reverse-shell sul mini-pc minis verso il server www.portale-stac.it
[source,ssh]
----
# NOTA-1: il servizio SSH su portale-stac (bridge) è attivo sulla porta 110.
# NOTA-2: il servizio SSH sul mini-pc (target) è attivo sulla porta 2222.
[camoroso@minis ~]$ ssh -NR 7022:127.0.0.1:110 -p 110 camoroso@www.portale-stac.it
----

.Accesso alla reverse-shell dell'host portale-stac (bridge)
[source,sh]
----
# Connessione a portal-stac dalla propria postazione (PC)
[camoroso@localhost ~]$ ssh -p 110 camoroso@www.portale-stac.it

# Connessione al mini-pc (minis.internet) da portale-stac
[camoroso@www ~]$ ssh -p 7022 camoroso@localhost
----

Per accedere direttamente dal PC alla reverse-shell, il valore di _IP-remoto_ dev'essere l'indirizzo o il nome dell'host bridge visibile da Internet e dev'essere disponibile il flusso entrante sulla porta remota *7022*.
Se questo condizioni sono soddisfatte, la reverse-shell dev'essere attivata con il comando seguente.

.Reverse-shell su Internet
[source,sh]
----
[camoroso@minis ~]$ ssh -NR www.portale-stac.it7022:127.0.0.1:110 -p 110 camoroso@www.portale-stac.it
----

.Accesso diretto via Internet
[source,sh]
----
[camoroso@localhost ~]$ ssh -p 7022 camoroso@www.portale-stac.it
----

'''
*Celestino Amoroso* +
*celestino . amoroso @ gmail . com*

image::https://gravatar.com/avatar/88d204d546890e5d89073fb1cec29fe9.png?size=48[]
