Qulalche tempo fa ho avuto l’esigenza di avviare un prcesso in background su una macchina Linux per poi doverne riprendere il controllo da un’altra shell. non sono un super esperto di linux e quindi ho cercato in giro su comandi che potevano essermi utili. Sapevo già benissimo come lanciare un comando in background e fare in modo che, chiudendo la shell, anche il processo non muoia, ma la domanda rimaneva:”come riportare in foreground il processo su un’altra shell, se quella da cui era stato generato era morta?”

A questo punto ho scoperto due tool estremamente interessanti che hanno risolto tutti i miei problemi. Il primo è screen, ovvero un software che permette di multiplexare terminali. Per farla breve consente di sganciare i processi dalla shell utilizzara per crearli.

La distribuzione linux che uso è ubuntu e per installare screen, qualora non lo troviate già installato, è sufficiente aggiornare i vostro apt repo tramite il comando apt update e poi dare il comando apt-get install screen.

Il secondo tool indispensabile è reptyr, che in pratica permette di trasferire un processo da una shell interattiva all’altra. Per quanto sia possibile installare reptyr via apt, vi consiglio di non scegliere questa opzione, in quanto altrimenti installerete una versione di reptyr mandante di un’opzione fondamentale.

Per installare reptyr nel modo migliore dovrete clonarlo dal git repository e compilarlo seguendo questa breve sequenza di comandi

$ git clone https://github.com/nelhage/reptyr

$ cd reptyr

$ mkdir -p /path/dove/volete/installare/reptyr

$ make PREFIX=/path/dove/volete/installare/reptyr BASHCOMPDIR=$(mktemp -d) install
$ /path/dove/volete/installare/reptyr/bin/reptyr --help

Nel mio caso ho utilizzato screen e reptyr per riprendere il controllo di una sessione meterpreter aperta precedentemente. Sostanzialmente ho dapprima lanciato il comando screen, poi ho impostato il mio metasploit per avviare il listener sulla porta prescelta; su un’altra shell ho controllato quale fosse il processo che controlla il listener, per effettuare questo controllo è sufficiente dare il comando netstat -luntp e vedere quale pid è associato.

A questo punto lanciando screen e poi lanciando il comanto reptyr -T <pid> si trasferisce il processo alla shell su cui siamo posizionati. Tutto qui! Ricordatevi però di seguire l’installazione di reptyr tramite la procedura che vi ho descritto e non da apt, altrimenti non avrete a disposizione l’opzione -T che è fondamentale!

Volendo riepilogare la sequenza di cose da fare ecco cosa risulta:

  1. lanciare il comando screen da una shell
  2. lanciare il processo in background
  3. da un’altra shell lanciare il comando screen
  4. dare il comando reptyr -T per trasferire il processo sulla nuova shell

A questo punto vrete di nuovo il controllo del processo ed il bello è che potrete trasferirlo di nuovo ad un’altra shell usando reptyr, ma ricordatevi sempre di lanciare prima screen, altrimenti il meccanismo non funziona.

Fatemi sapere nei commenti se questo articolo vi è stato utile!

 

 

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *