V repositáři Kali linuxu je spousta připravených balíčků s hacking nástroji, ale dříve nebo později každý takový balíček zestárne a ne vždy vývojáři linuxové distribuce Kali osvěží repositář o nové verze. Jak se s tím poprat? To si ukážeme právě v tomto příspěvku.

Proč ostřit nástroje?

Aktualizuj hacking nástroje

Příprava nástrojů a jejich aktualizace je zásadní pro každý bezpečnostní test. Zvyšujeme šance, že objevíme více nálezů nebo nepřehlédneme zásadní chybu.

Proto před každým testem ověřujeme, zda neexistují nové aktualizace. K této přípravě patří i aktualizace vnitřní znalostní databáze, pokud ji nástroj má.

Abych nemluvil moc obecně, budeme si ukazovat vše na příkladu nástroje WPScan.

WPScan

WPScan, je skener zranitelností pro WordPress. Tento nástroj je takový detektiv, který se snaží identifikovat konfiguraci WordPressu, tj. verzi jádra, instalovaných pluginů a šablon. Pokud máme štěstí, tak zahlásí rovnou zranitelné komponenty.

Jak zjistit aktuální verzi nástroje?

Většina nástrojů vypisuje před svým spuštěním nějaký informační “banner”, který nese název programu, jeho verzi a další znaky.

Zkouším spustit WPScan bez dalších parametrů a hledám informaci o podrobné nápovědě (wpscan –help). Následně se dovídám, že existuje parametr –version, který mě zajímá.

Z výpisu vidím, že nástroj je ve verzi 2.8 a má starou aktualizaci znalostní databázi provedenou naposledy v srpnu 2015. Tato databáze je pro WPScan důležitá, protože uchovává seznam existujících rozšíření WordPressu, dále obsahuje dotazy na identifikaci verze každé komponenty včetně evidence zranitelných verzí.

Dobře, teď znám aktuální verzi nástroje v Kali linuxu, ale zajímá mne, jaká poslední verze tohoto nástroje je veřejně dostupná. Hodím ještě “WPScan” do Googlu a zjišťuji na stránce projektu, že poslední verze ke stažení je 2.9.1-15. Potřebuji nástroj zaktualizovat a zkusím to nejdříve přes repositář balíčků distribuce Kali linuxu.

Aktualizace přes balíčky systému

Aktualizace přes repositář balíčků je správná cesta pro integritu instalovaného softwaru v operačním systému. Nehrozí následné kolize při aktualizaci celého systému nebo dílčích aplikací. Nevěřím, že tato cesta v tomto případě pomůže, ale vrhám se do toho.

Aktualizuji repositář balíčků pomocí příkazu apt-get update

a následně aktualizuji samotné balíčky pomocí příkazu apt-get upgrade.

Bohužel nástroj WPScan v seznamu aktualizovaných balíčků nevidím. Kontrola příkazem wpscan –version tento neúspěch potvrzuje. Jsem pořád na verzi 2.8 se starou interní databází.

Aktualizace přes samotný nástroj

Pokročilejší nástroje se umějí sami zaktualizovat a to buď úplně nebo částečně. Je to vlastně navržená funkcionalita nástroje, která nemá dopad na konfiguraci v operačním systému. Stačí uvést specifický příkaz nebo parametr, který je zdokumentovaný v nápovědě.

Zkoumám nápovědu nástroje (wpscan –help) a nacházím parametr pro aktualizaci interní znalostní databáze (–update). Touto aktualizací ovlivníme jen jeho databázi a “nachytřime” WPScan o nové testovacích dotazy. Nejedná se tedy o plnou aktualizaci nástroje z hlediska jeho funkcí.

Zkouším parametr “update” a funguje.

Aktualizace interní databáze proběhla. Zkontroluji znovu verzi.

Z výpisu vidím, že se podařilo zaktualizovat databázi. Pro klid duše bych mohl projít historii úprav funkcí nástroje na stránkách projektu, zda jsou nové změny zásadní.

Někdy se stane, že automatická aktualizace nástroje nezafunguje. Autoři nástroje něco změní nebo se jedná o chybu. Pak už zbývá jen cesta manuální instalace.

Manuální instalace

Než začneme instalovat

Manuální instalace většinou znamená překlad zdrojových kódů nástroje do binární spustitelné podoby a řešení různých závislostí, jejichž rozmotání stojí čas a nervy.

Do manuální instalace se pouštíme, kdy potřebujeme poslední funkcionalitu nástroje nebo chceme lepší výkon na určitém HW.

Můžete se také setkat s případem, kdy dokumentace nástroje popisuje funkcionalitu, která v nástroji chybí. Pravděpodobně v době překladu chyběla správná knihovna a skript řídící překlad tento modul vypustil.

Jak úspěšně zkompilovat zdrojové kódy je mimo rozsah tohoto příspěvku. Jak uvidíme níže, zjednodušil jsem si situaci vhodnou volbou nástroje.

Interpretovaný jazyk – Ruby

WPScan je napsán v jazyce Ruby, což je interpretovaný jazyk. Tato třída skriptovacích jazyků se interpretuje a překládá za běhu, při každém spuštění programu. Pokud je v systému nainstalováno Ruby, mělo by stačit stáhnout a spustit aktuální verzi WPScanu. Zni to docela jednoduše, není potřeba nic kompilovat, tak uvidíme.

Stahujeme zdrojový soubor

Vytvořím si nový cílový adresář, například /tools, kde uložím novou verzi nástroje.

Protože je dnes GitHub populární, zkusím tuto metodu stažení zdrojových souborů. Ostatní metody stahování a práci s archivy (zip, tar) nejspíš znáš.

Nyní mohu “naklonovat” poslední verzi nástroje WPScan pomocí git klienta.

Po klonování mi vznikl nový adresář /tools/wpscan. Máme teď v systému dvě verze nástroje WPScan, které o sobě nevědí. Musíme volání rozlišit přes tečkovou notaci a volat nástroj ze správného adresáře. Jinak se se zavolá starý wpscan z předdefinované cesty.

Závislosti aktualizovaného nástroje

Zkouším spustit WPScan, přes tečkovou notaci z pracovního adresáře a vidím první chybu.

Nová verze WPScanu vyžaduje vyšší verzi Ruby. Jenže instalace nové verze Ruby může být docela velký zásah do systému, protože může “rozhodit” existující aplikace nebo nějakou podpůrnou část operačního systému. Co teď?

Pár dobrých rad než něco rozvrtám

Každá úprava tohoto typu je riziko a udělám si zálohu nebo se připravím rovnou na reinstalaci. Občas se hodí si práci v terminálu zapisovat do textového souboru, abych byl schopen postup reprodukovat.

Jak mít více verzí Ruby (RVM)

Procházím fórum Kali linuxu a vyhledávám přes vyhledávač Google spojení “ruby kali”. Našel jsem příspěvek, jak udržovat v operačním systému více verzí Ruby a přepínat jejich verze.

Toto kouzelné udělátko se jmenuje RVM – Ruby Version Manager a na stránkách projektu je popsána jeho instalace. Rozhodl jsem se vyzkoušet následující postup.

  1. Nainstalovat RVM.
  2. Dokončit fázi konfigurace po instalaci.
  3. Nainstalovat další verzi Ruby 2.3.1 a nastavit ji jako aktuální.
  4. Doinstalovat chybějící gemy, to jsou závislé aplikační moduly v Ruby. Při spuštění Ruby skriptu wpscan.rb interpret zahlásí, které gem moduly potřebuje a ty pak ručně doinstaluješ. Bohužel jsem si chybějící gem moduly nepoznačil, ale například instalace gem modulu JSON, vypadá takto.

Úspěšná aktualizace

Ze správného pracovního adresáře spouštím podruhé WPScan a vidím, že konfigurace pomocí RVM zafungovala. WPScan je spokojený s vyšší verzí Ruby.

Z výpisu je dále vidět, že jsem na nové verzi nástroje WPScan (2.9.1) a podařilo se mi aktualizovat i jeho databázi. Tímto můžeme dnešní ukázky ukončit.

Závěr

Na příkladu nástroje WPScan jsem demonstroval různé formy aktualizace:

  1. Aktualizace pomocí balíčků operačního systému.
  2. Aktualizace nástrojem (tato funkce nemusí v nástroji existovat).
  3. Manuální instalace (vlastnoručně přizpůsobená, občas riziková).

To je pro dnešek vše. Zvažujete-li cestu etického hackera od začátku, rád uvidím na hacking kurzech.