Secuirell - SecOps työkalupakki
Kurssi kulminoituu pienprojektiin.
Eli Iljan kanssa mietimme, että jatkuvasti on tarvetta yksilölliselle kokonaisuudelle tietoturvatyökalujen parissa. Vaikka voisimme käyttää esimerkiksi Kalista omaa tyhjää kuvaa aina uudestaan, voisi olla hyödyllistä luoda keskitetty hallintajärjestelmä omille työkaluillemme.
Eli tähän Salt voisi olla täydellinen demo. Tätä varten siis loimme Secuirrel salt-kokonaisuuden.
Tavoitteet, periaatteet ja suunta
Meillä tässä tavoitteena on rakentaa ratkaisu joka noudattaa modernin keskitetyn hallinnan periaatteita. Kurssilla keskityimme Salttiin, niin käytämme tässä tuota. Jos projekti lähtee laajenemaan, jatkotavoitteet ovat myös Ansiblessa jolloin tarvetta ei olisi omalle binäärille pohjalla.
Kurssiin verrattuna pidimme tavoitteina seuraavia:
- Infra koodina: Koko työaseman konfiguraatio – paketit, työkalut, asetukset ja käyttäjäkohtaiset säädöt – on määritelty koodina YAML-tiedostoissa. Tämä tekee ympäristöstä versiohallittavan ja läpinäkyvän. Git-repositorio on "yksi totuus" siitä, miltä koneen kuuluu näyttää.
- Idempotenssi: Konfiguraation voi ajaa uudelleen ja uudelleen. Salt varmistaa, että vain tarvittavat muutokset tehdään, eikä mitään hajoa tai asenneta kahteen kertaan. Tämä on merkittävä parannus perinteisiin shell-skripteihin, jotka suorittavat komennot sokeasti joka kerta.
- Modulaarisuus ja laajennettavuus: Projektin rakenne on jaettu loogisiin kategorioihin (forensiikka, web, reverse ym). Tämä tekee uusien työkalujen lisäämisestä ja vanhojen ylläpidosta helppoa. Ainakin teoreettisesti.
Jo tässä parin päivän rakennuksessa saimme aika laajasti nämä tehtyä. Sain myös omat tekniset pohjarakenteet tehtyä. Josta.
Toteutus ja arkkitehtuuri
Projekti on rakennettu SaltStack-tiloilla (states). Pääohjaustiedosto (top.sls) kutsuu ctf_box-nimistä tilaa, jonka init.sls-tiedosto orkestroi kaiken muun.
- Rakenne: Asetukset on jaettu kategorioihin, kuten
forensics/,reverse/,web/jacracking/. Jokaisella kategorialla on omainit.sls-tiedosto, joka sisällyttää kyseisen kategorian työkalut. - Logiikka: Jinja2 käytin dynaamisesti luomaan konfiguraatioita ja hallitsemaan Salttia ja sen suoritusta. Esimerkiksi
pillar-datan avulla voidaan asentaa vain tietyt kategoriat tai aktivoida käyttäjäkohtainen profiili.
Tämä jäi vielä kovin kesken, mutta laajennettavuus näkyy jo nyt.
Otimme omista käyttökokemuksista ja tarpeista työkalut tähän demoon. Näitä pystyy laajentamaan sitä mukaan kun tarpeet kasvaa.
- Rinnakkaiset Työkaluversiot: Asentaa
Binwalk v2:n jaBinwalk v3:n rinnakkain komentoinabinwalk2jabinwalk.
Binwalk hyvä esimerkki jossa uudemman ja vanhemman välillä on niin suuri ero, että kiva pitää molemmat lähellä.
- Monimutkaiset Asennukset: Hoitaa monivaiheiset asennukset, kuten Ghidran (JDK-riippuvuus, purku, oikeuksien hallinta) ja Pwndbgn (virallinen asennusskripti).
Ideana oli tottakai saada myös ghidra vaikka debianiinkin pohjalle.
Mukana myös demossa sitten omat henkilökohtaiset tarpeet (esimerkiksi Oh-my-posh ym). Ne helppo lisätä kokonaisuuteen.

Kommentit
Tässä n 10h teon aikana tuli opittua todella paljon saltstackista ja jinja2 toimintalogiikasta. Itse pidän paljon haasteista ja nyt jo näen paljon mitä tekisin eri tavalla. Saltin vahvuus on kuitenkin siinä, että yksittäin tehtyjä asioita saadaan kasattua monimutkaiseen kokonaisuuteen.
Veikkaan, että tämä ajatus on juuri tämän kurssin hedelmä!
Lähteet
Secuirell https://github.com/ilpakka/secuirrel/tree/main
Käytetty aika: n 10h miniprojektin tekoon. Valtaosa ajasta jinjan ymmärrykseen ja ensimmäisen ison binwalk kokonaisuuden tekoon. Seuraavat helpottuivat huomattavasti.