Information Gathering / OSINT Tools
Nog voordat je actief gaat scannen, exploits gaat toepassen en brute-forcen is het zaak om passief van alles over je “target” te weten te komen. Deze eerste fase noemen we binnen de information security ook wel de “information gatehering” fase. In deze fase probeer je te achterhalen wie er bij het bedrijf werken, welke functies deze personen hebben, hoe e-mailadressen opgebouwd zijn en welke apparaten ze mogelijk in het netwerk hebben staan. In deze post ga ik wat beter kijken naar deze fase en dan met name welke tools we in deze fase gebruiken. In deze post bespreek ik mijn persoonlijke favorieten van dit moment. Dit is dus geen volledige lijst en wellicht is deze volgende maand anders. Maar voor nu vindt ik een combiantie van onderstaande tools erg fijn werken. Tips of ideeën? Laat het gerust even weten want deze zijn altijd welkom.
Information Gathering kan eigenlijk verdeelt worden in 2 subclassen, namelijk:
- Passieve Information Gathering / Footprinting
- Actieve Information Gathering / Scanning en Enumeration
De eerste fase is altijd de “footprinting” ofwel de passieve fase. Dat betekend dat we tijdens deze fase geen sporen zoals log-entries achterlaten op de systemen van de target. Tijdens de actieve fase doen we dit meestal wel en proberen we deze zo goed mogelijk te verbergen. In deze post gaan we het hebben over de “footprinting” fase. Tijdens deze fase maken we veel gebruik van informatie die openbaar te vinden is (met dank aan alle social media pagina’s die er bijgehouden worden). Door deze informatie van openbare bronnen te halen kunnen we veel te weten komen over het “target”. Een populaire benaming hiervoor is “Open Source INTelligence” ofwel OSINT. De term OSINT is een term die al vele jaren gebruikt wordt in het Amerikaanse leger. Niet alleen digitale bronnen vallen onder de OSINT term. Ook publiekelijk beschikbare informatie welke offline is (denk aan bibliotheken, nieuwsbrieven, persberichten etc.) valt onder OSINT.
Een “hacker” kan soms veel relevante informatie achterhalen welke in een latere fase weer gebruikt kan worden. Denk o.a. aan:
- De opbouw van e-mailadressen
- Wie “belangrijke functies” bekleden
- Welke leveranciers door het target ingehuurd worden
- Welke IP ranges in gebruik zijn door het target
- Welke soorten devices er gebruikt worden
- etc.
Dit is allemaal zeer waardevolle informatie om te hebben zodat in een latere fase b.v. phishing, social engineering en targeted scanning toegepast kan worden.
Er zijn nogal wat OSINT tools op de markt. OSINT is immers ook een breed begrip. Om door de bomen het bos een beetje te kunnen vinden kun je gebruik maken van het OSINT Framework https://osintframework.com/. Dit framework geeft per toepassing een duidelijk inzicht in de beschikbare diensten, websites en tools.
Het OSINT Framework is echter niet compleet en focust zicht voornamelijk op specifieke diensten. Ontzettend handig als je even niet weet welke bronnen je zou kunnen aanroepen maar niet zaligmakend. Er zijn namelijk heel wat tools die prima meerdere bronnen kunnen doorzoeken op een gebruiksvriendelijke manier.
Laten we eens snel kijken naar mijn meest gebruikte OSINT Tools:
Information Gathering / OSINT Tools
Om een goed beeld van mijn toolset te krijgen is het handig om een denkbaar scenario te schetsen. Dit is een fictief scenario en dus zal ik hem toepassen op mijzelf. Hou er rekening mee dat er bij een bedrijf heel wat meer bruikbare informatie gevonden wordt.
Oké, ik heb dus de opdracht om een pentest uit te voeren op mezelf 🙂 Leuk. Dit zijn eigenlijk de zaken die ik graag zou willen weten:
- Wie werken er bij het bedrijf
- Welke functies hebben deze mensen
- Wat is de opbouw van de e-mailadressen
- Belangrijke telefoonnummers
- Wat voor IP adressen worden er gebruikt
- Welke devices kunnen we tegenkomen in het netwerk
- Welke software word er gebruikt
- Vorige versies van de website
Het is een feit dat na het verzamelen van deze data je alle data zult moeten ontdubbelen, structureren en op een rijtje moet zetten. Als je dat gedaan hebt begint de analyse op deze data en kun je de data gaan gebruiken binnen de verdere processen van je pentest.
Het verkrijgen van bovenstaande data werkt fantastisch met de volgende tools.
- Handmatig / Searx
- Maltego
- Recon-NG
- Metagoofil
- Spiderfoot
- XCTR
Handmatig / Searx
We beginnen simpel. Laten we eerst eens wat handmatig onderzoek doen en informatie verzamelen welke we later kunnen gebruiken als “voer” voor onze automatische tools. Er zijn een aantal sites die ik hiervoor altijd raadpleeg,
Business Website
In mijn geval dus https://jarnobaselier.nl en hier is niet zoveel op te vinden. Normaliter ben ik op zoek naar:
- Contactgegevens – De basis informatie. Welke vestigingen zijn er en waar bevinden deze zich (geografisch).
- E-mailadressen – Om te leren hoe de opbouw van de e-mailadressen is.
- Werknemers – Wie zijn belangrijke stakeholders binnen het bedrijf.
- Vacatures – Wie zoeken ze en vooral waarvoor. Een vacature verteld vaak iets over de interne infrastructuur.
- SSL Certificaat – De leverancier is in ieder geval een bekende supplier
- Overige suppliers – Ideaal bij social engineering doeleinden
Als ik bovenstaande onderzoek uitvoer op mijn eigen website is de informatie beknopt (maar ik ben dan ook geen business website). Dit is mogelijk waardevolle informatie:
- Wie werken er: Jarno Baselier
- Opbouw e-mailadressen: %voorletter%.%achternaam%@jarnobaselier.nl
- SSL Certificaat afkomstig van: Comodo
Zoals al gezegd is dit een footprinting onderzoek voor een bedrijf. Als ik een persoonsgebonden onderzoek zou doen dan zou deze site veel waardevolle informatie bevatten zoals mijn hobbies, familie, waar ik werk, welke besturingssystemen ik gebruik en owja… dat ik 2 konijnen heb 🙂 Maar vanuit “company footprinting” is er niet veel waardevols te vinden.
LinkedIn
LinkedIn is een fantastische resource. Als er een company page is kun je zien wie hier lid van zijn en dus krijg je nog meer informatie over medewerkers / vacatures en skills van mensen. En met skills komt ook weer informatie. Als je een Cisco engineer in dienst hebt… guess what… dan wordt waarschijnlijk ergens Cisco gebruikt. Zoek je een Siemens PA engineer dan zal er wel ergens Siemens gebruikt worden (en wellicht moet je een Profibus onderzoek doen).
Mijn company page bevat niet veel informatie maar mijn persoonlijke pagina wel. Echter in dit geval niet heel veel meer dan mijn website. Wat leren we van LinkedIn:
- Geboortedatum: 31 oktober 1981
- Relevante connecties
Maar nogmaals, veel interessanter bij een persoonlijk onderzoek. In dit voorbeeld… niet echt. Maar ik hoop dat de waarde wel duidelijk is.
Searx
Searx is geen handmatig onderzoek maar duidelijk een tool. Searx (https://asciimoo.github.io/searx/) komt als offline tool en als online instance. Aan jou de keuze welke je wilt gebruiken. Searx is een metasearch machine welke resultaten uit meer dan 70 zoekmachines correleert en zo veel relevante informatie retourneert. Meestal gebruik ik voor mijn “handmatige” onderzoek een instance. Er zijn meerdere instances welke hier te vinden zijn: https://searx.space/. Je ziet hier welke versie ze gebruiken, hoe snel de response is en welk netwerk gebruikt wordt. Ik zoek meestal naar een netwerk met een goede TLS grade en snelle resultaten maar die ook in de EU gehost wordt.
Dit levert verschillende interessante resultaten op:
Via Searx kom ik o.a. achter de volgende zaken:
- Namen en foto’s van familie
- Video’s
- Andere leveranciers
- Andere bedrijven
- Persberichten
Nu we al deze informatie hebben verzameld gaan we gebruik maken van automatische tooling te beginnen met Maltego.
Maltego
Maltego is software die wordt gebruikt voor open source-intelligentie en forensisch onderzoek en is ontwikkeld door Paterva. Maltego heeft een eigen database om informatie uit publieke bronnen te vinden, inzichtelijk te maken en te visualiseren zodat de informatie duidelijk inzichtelijk wordt.
De primaire focus van Maltego is het analyseren van relaties (zoals in sociale netwerken of computernetwerken) tussen mensen, groepen, webpagina’s, domeinen, netwerken, internetinfrastructuur en affiliaties met online services zoals Twitter en Facebook. Tot de eigen databronnen behoren o.a. DNS-records, whois-records, zoekmachines, online sociale netwerken, en verschillende API’s. Het mooie van Maltego is dat de gebuiker hier ook zijn eigen gegevens aan kan toevoegen.
Maltego komt in 3 varianten. De community edition is gratis en te installeren op Windows, Mac en Linux.
Het eerste wat ik in Maltego ga verwerken zijn de zaken die we tijdens het handmatige onderzoek geleerd hebben (en kunnen gebruiken).
Nu hebben we de keuze om Maltego meer informatie te laten zoeken, of om informatie welke we later met andere tools vinden toe te voegen aan Maltego. Met Maltego mag je relaties gemakkelijk duidelijk, het geeft overzicht en je kunt vanuit Maltego altijd verder onderzoek uitvoeren. Bijvoorbeeld:
Maltego vindt veel interessante informatie en er zijn zelfs heel veel extra diensten (scripts) welke je toe kunt voegen aan Maltego om nog meer sources te doorzoeken. Het nadeel vind ik ook meteen dat alle gevonden zaken in de grafiek gedumpt worden. Ik doe dit liever gestructureerd met alleen relevante informatie. Bij bedrijven van 100+ medewerkers is het echt heel lastig om een duidelijke grafiek bij te houden. In dat geval gebruik ik Maltego voor het weergeven van een aantal verbanden maar alle overige informatie is beter te structureren in andere tools zoals b.v. Excel. Maltego is absoluut een goede tool om tijdens een OSINT onderzoek te gebruiken. Maltego vindt veel interessante informatie en kan zaken gestructureerd weergeven.
Een tool die echter meer informatie vindt m.b.t. IP adressen, social media, nodes etc. is “Recon-NG”.
Recon-NG
Recon-NG is een zeer uitgebreide toolkit welke modulair op te bouwen is middels de vele beschikbare plugins. Voor dat ik Recon-NG gebruikte was “The Harvester” mijn go-to tool. Maar Recon-NG werkt zeker net zo fijn en geeft me meer en betere resultaten. Recon-ng klinkt qua naamgeving op bekende WiFi tools (airmon-ng) maar heeft een uiterlijk dat vergelijkbaar is met het Metasploit Framework en dat brengt ook meteen weer veel herkenbaarheid en dus een minder steile leercurve.
Recon-NG komt met vele verschillende modules:
Voor extra modules kun je de Recon-NG marketplace doorzoeken:
Het uitvoeren van een module doe je door deze te selecteren en zijn opties in te stellen. Vervolgens geef je een “run” commando om de module te draaien:
modules load hackertarget
options list
options set SOURCE jarnobaselier.nl
run |
IP adressen… interessant!
De volgende modules raad ik aan om minimaal te draaien (voor sommige heb je een API sleutel nodig):
- recon/companies-contacts/pen
- recon/companies-domains/pen
- recon/companies-domains/viewdns_reverse_whois
- recon/companies-multi/shodan_org
- recon/companies-multi/whois_miner
- recon/contacts-credentials/hibp_breach
- recon/domains-contacts/pgp_search
- recon/domains-credentials/pwnedlist/domain_ispwned
- recon/domains-credentials/pwnedlist/leak_lookup
- recon/domains-credentials/pwnedlist/leaks_dump
- recon/domains-hosts/certificate_transparency
- recon/domains-hosts/google_site_web
- recon/domains-hosts/hackertarget
- recon/domains-hosts/mx_spf_ip
- recon/domains-hosts/shodan_hostname
- recon/hosts-hosts/ssltools
- recon/hosts-hosts/virustotal
- recon/hosts-ports/shodan_ip
- recon/locations-pushpins/shodan
- recon/locations-pushpins/twitter
- recon/locations-pushpins/youtube
- recon/netblocks-companies/whois_orgs
Via het “dashboard” commando zie je een kort overzicht van de resultaten en gedraaide modules:
Je kunt ook gericht informatie opvragen via het “show” commando zoals b.v.:
show domains show contacts etc. |
Wil je de resultaten exporteren dan gebruik je een van de report modules:
search reporting |
- reporting/csv
- reporting/html
- reporting/json
- reporting/list
- reporting/proxifier
- reporting/pushpin
- reporting/xlsx
- reporting/xml
Om te exporteren naar een CSV gebruik je:
modules load reporting/csv options set FILENAME /root/Desktop/results.csv options set HEADERS True |
Als je alle modules (en misschien nog wat meer) gebruikt hebt dan heb je al een ton aan informatie kunnen achterhalen. Laten we nog wat extra informatie achterhalen. Dit doe ik met Spiderfoot.
Spiderfoot
Na het gebruiken van Spiderfoot zul je ontzettend veel overlap hebben met data die je verkregen hebt vanuit Recon-NG. Maar er zal ook veel aanvullende informatie gevonden worden waardoor ik aanraad om toch Spiderfoot te draaien.
SpiderFoot is een andere OSINT automatiseringstool welke net als Recon-NG gebaseerd is op Python. Het mooie van Spiderfoor is dat veel gegevens automatisch verkregen worden en opgemaakt worden om een makkelijke analyse uit te voeren. Daarnaast heeft SpiderFoot een ingebouwde webserver voor waarmee inzichtelijk gegevens geanalyseerd kunnen worden en waarmee zoekopdrachten uitgevoerd kunnen worden. Zoekopdrachten kunnen echter ook uitgevoerd worden via de terminal.
Om de webserver te starten gebruik je:
spiderfoot -l 127.0.0.1:4000 |
Het is belangrijk om eerst alle opties door te lopen en aan te passen waar nodig. Ik pas altijd de DNS server aan en uiteraard vul ik mijn API sleutels in.
Laten we eens een nieuwe scan starten:
Zoals je ziet, een top aan bruikbare informatie. Zo simpel is het.
Nadat de scan klaar is kun je deze informatie gemakkelijk inzien en exporteren:
Metagoofil
Een andere tool die ik graag ter aanvulling gebruik is Metagoofil omdat deze tool informatie achterhaald uit metadata op het internet en deze informatie blijft vaak verborgen in bovenstaande scans. Soms levert dit interessante informatie op.
Metagoofil voert een zoekopdracht uit in Google om documenten te vinden en te downloaden. Na het downloaden zal Metagoofil vervolgens de metagegevens extraheren met verschillende bibliotheken zoals Hachoir, PdfMiner, en anderen. Deze resultaten zullen vervolgens gepresenteerd worden. Dit werkt als volgt.
Metagoofil -d jarnobaselier.nl -l 100 -n 25 -t pdf,doc,docx,xls,xlsx |
Met de “-l” flag geef je het zoekbereik aan. De “-n” flag geeft het maximaal aantal bestanden aan die gedownload mogen worden en de “-t” flag geeft aan naar welke bestandstypes gezocht mag worden.
Bij mij niet heel succesvol dus:
XCTR
De laatste tool in dit rijtje is XCTR. XCTR maakt het namelijk gemakkelijk om Admin URL’s, dorks, IP History en nog meer informatie te achterhalen. Het kan heel goed zijn dat je deze ondertussen al verzameld hebt maar een extra XCTR scan kan zeker geen kwaad.
XCTR is ook een Python-based tool waarbij alle resultaten van de scans opgeslagen worden in de “results/%projectnaam%” folder. Je start XCTR als volgt:
python3 xctr.py |
Nadat je een projectnaam opgegeven hebt krijg je de keuze uit de verschillende modules:
Allereerst raad ik (zoals bij elke tool) aan om de settings toe te passen. Download de user-agent files en de proxy files en stel daarna de site-url (3) in zodat de scanner weet welke website we gaan onderzoeken.
Vervolgens kunnen we een aantal scans uitvoeren. De voor mij meest relevante scans zijn de Admin Panel Finder welke gebruik maakt van een wordlist waarin diverse admin panel URL’s staan. XCTR zal ze allemaal proberen op het target URL om te kijken of een van de combinaties succesvol is.
Vervolgens vind ik het ook leuk op IP History te draaien om te kijken wat er in het verleden met het opgegeven IP adres is gebeurt.
Conclusie
Zoals je ziet gebruik ik slechts een selecte combinatie van tools die me meestal kunnen voorzien van de juiste informatie. Het is belangrijk om vooraf te bepalen welke informatie je nodig hebt. Het nadeel van OSINT is dat je met Lead A 100 resultaten ophaalt en met deze 100 resultaten individueel nog meer resultaten kunt vinden. Soms zit hier gouden informatie tussen maar meestal verzamel je meer en meer onzinnige informatie. Mijn tip met het verzamelen van OSINT informatie is dan ook om een grens te stellen. Ik gebruik XCTR b.v. helemaal niet als ik geen admin URL’s hoef te verzamelen. En meestal als ik weet wie in een bepaalde functie werken, wie de leveranciers zijn en wat voor apparaten er aanwezig zijn dan weet ik genoeg. Dan kan ik gerust stoppen. Als ik echter een web-onderzoek doe dan wil ik juist alle sub-domeinen weten en de admin URL’s. Dus bedenk wat je nodig hebt en zet je tooling hier op de juiste manier voor in. Soms is stap 1, de handmatige information gathering al voldoende en kun je daarmee verder. De kunt is om de waarde van de informatie in te schatten en om deze netjes te structureren in Maltego of in een ander pakket. Excel werkt bij veel informatie veel beter. OSINT onderzoek is niet makkelijk maar de besproken tools maken het wel een stuk makkelijker.
Hopelijk vond je dit beknopte OSINT overzicht interessant en kun je jezelf er voordeel mee doen. Zoals je weet schrijf ik dit soort posts erg graag en deze arbeidsvitaminen krijg ik altijd van alle leuke reacties. Dus als jij dit een leuke post vond stuur me dan een berichtje, geef me een like of deel mijn post(s) weer verder op je eigen website of social media.
Hartelijk dank en graag tot het volgende onderwerp.