Tmux je terminálový multiplexer, který řídíte klávesovými zkratkami. Mezi hlavní výhody tmuxu jsou terminálové relace (“sešny”), které běží na pozadí, ikdyž se zrovna odpojíte. Další zajímavé funkce jsou práce s okny a panely. V jednom terminálovém okně tak můžete sledovat více věcí a zefektivnit svoji práci.

Instalace

Všechny demonstrace budeme dělat v Kali Linuxu. Instalaci provedeme příkazem apt install tmux

Spuštění

První spuštění provedeme příkazem tmux

Dole se objevila lišta, která uvádí název “sešny” (0) s jedním oknem (0:) ve kterém běží shell “zsh”. Dále v pravo je název počítače (hostname) a čas s datumem. Příkazem exit ukončíme proces shellu a tím i vyskočíme z poslední tmux relace.

Příkazový režim

Tmux na své příkazy reaguje pomocí speciální “prefix klávesy”, která je po instalaci nastavena na stisk ctrl+b. Jednotlivé příkazy tmuxu vždy začínají touto sekvencí, až na malé výjimky, jako je například kopírovací mód, který v tomto článku neřešíme.

Všechny zkratky v tmuxu lze předefinovat a to včetně i prefix klávesy. Konfiguraci lze připravit v konfiguračním souboru .tmux.conf, který tmux hledá v domovském adresáři uživatele.

Relace

Relace nebo-li “sešna” reprezentuje vaší práci s tmuxem, ke které se můžete vracet.

Nová relace

Pokud bychom chtěli nastartovat pojmenovanou relaci (“sešnu”), provedeme to takto:

tmux new -s “mojeSesna”

Koukneme znovu na lištu a vidíme, že první slovo už je název “sešny”, pak následující číslo před dvojtečkou, který identifikuje okno.

Odpojení relace

Chceme-li se od relace odpojit a nechat ji běžet na pozadí, stiskneme ctrl +b + d. Spustíme si v tmuxu například program top, který je interaktivní a sleduje vytíženost systému.

Pomocí příkazu “detach” se odpojíme od relace. Stiskneme ctrl + b + d a vyskočíme z tmuxu, na pozadí ale náš tmux s procesem “top” neustále běží.

Eskalace práv

Je potřeba si uvědomit, že pokud se odpojíte z relace (ctrl +b + d), tak ta stále běží na pozadí. Pokud je v relaci spuštěný termínál pod rootem, může kdokoliv s přístupem k vašemu nízkoprivilegovanému účtu eskalovat práva na roota jen připojením tmuxu k běžící relaci.

Při pentestech na vaší pracovní stanici to asi není problém, ale pokud byste používali tmux na serverech, je potřeba hlídat, že jste po ukončení práce vše řádně pozavírali. To je celé.

Připojení k existující relaci

Pomocí příkazu tmux ls vylistujeme seznam tmux relací.

Pomocí příkazu “attach” se zpět připojíme k vybrané relaci.

tmux -a -t “mojeSessna”

Případně pomocí zástupného znaku #, který zastupuje poslední relaci.

tmux -a #

Obě dvě varianty nás připojí k naší relaci, kde běžel process “top” pro sledování vytíženosti.

Okna

Okno je obrazovka s jedním nebo více panely. Okna můžeme chápat jako záložky terminálu.

Vytvoření okna

Okno vytvoříme stiskem ctrl + b + c a v novém okně se nám spustí přednastavený shell, což je v Kali linuxu zsh. Je-li oken více, na liště můžeme vidět čísla oken oddělená dvojtečkou.

Tato lišta znázorňuje, že máme v relaci dvě okna. První okno s indexem 0 je pojmenované (okno s procesem “top”) a druhé okno s indexem 1 obsahuje proces zsh.

Přejmenovat okno

Stiskem ctrl + b + , vyvoláme v liště příkaz pro přejmenování okna, zvolíme nový název okna a potvrdíme jej stiskem klávesy enter.

Seznam oken

Seznam oken vidíme částečně v liště, ale stiskem kláves ctrl +b + w se v aktivním panelu (vysvětlíme z a okamžiku) zobrazí nabídka seznamu oken, kterou můžeme listovat šipkami. Vybrané okno potvrdíme klávesou enter.

Pokud bychom se chtěli přepnout do okna s určitým indexem, který známe, využijeme kombinace kláves ctrl +b + číslo, kde číslo je klávesa 0 až 9, která odpovídá pořadí vytvoření okna (indexu okna).

Panely

Panely jsou pro mne nejatraktivnější funkcionalita, dokáží rozdělit okno na více oblastí, tzv. panelů, mezi kterými je možno přepínat vstup nebo sledovat výpisy běžících programů. Ideální situace pro panely nastává, že si v jednom panelu spustíte webový server, v druhém panelu si spustíte výpis z access logu a ve třetím máte terminál, kde něco zkoušíte.

Vertikální rozdělení panelu

Nový vertikální panel v aktivním okně zajistíme stiskem kláves ctrl + b + %

Aktivní panel lůze znovu rozdělit, třeba opět vertikálně stiskem ctrl + b + %

Horizontální rozdělení panelu

Horizontální panel vytvoříme stiskem kláves ctrl + b + “

Nic nám nebrání vytvořit horizontální a vertikální panely v kombinaci a docílit následujícího rozložení.

Asi už začínáte tušit, kde je síla tmuxu.

Přepínání mezi panely

Aby bylo možné psát do konkrétního panelu, musí být aktivní. Pro výběr aktivního panelu v okně slouží stisk kláves ctrl + b + šipka, kde šipka znamená směrovou klávesu (nahoru, dolu, doprava nebo doleva). Tato kombinace zajistí aktivaci nového panelu v požadovaném směru od vašeho současného aktivního panelu.

Ukončení panelu

Ukončení práce v panelu provedeme stiskem ctrl + b + x, tmux nabídne potvrzovací dialog, zda skutečně chceme panel zavřít.

Pokud je to poslední panel v okně, okno se zruší. Je-li to poslední okno v relaci, ukončíte relaci a práci v tmuxu.

Jsme-li v shellu, můžeme ukončit jeho proces příkazem exit, který zavře panel ve kterém shell běžel.

Změna rozložení panelů

Ještě se může hodit funkcionalita změna rozložení panelů, kterou provedeme stiskem ctrl + b + mezerník.

Závěr

Ukázali jsme si základní funkcionality tmuxu a celá řada dalších příkazů čeká na vaše objevení.

Pokud vás tmux zaujal, doporučuji prozkoumat tmux cheat sheet a balíček témat pro tmux (tmux-themepack) se kterým můžete dosáhnout atraktivního vzhledu v několika barvách.

Pokud tmux používáte v pentest projektech nebo bug bounty programech a máte tipy na vylepšení jeho konfigurace, napište mi. Zajímavé nastavení a projekty připojíme pod článek pro další zvědavce. To je pro dnešek vše.