Taggat med: Shodan

Shodan Monitor

Shodan Monitor

Shodan är en onlinetjänst som har funnits sedan 2009 och söker kontinuerligt av hela internet med omfattande portskanningar. Tjänsten är omtyckt och ger bra statistik samt har en sökfunktion som visar sådant som organisationer exponerar mot internet.

För några veckor sedan så släppte Shodan en ny intressant funktion som går under namnet Shodan Monitor. Med hjälp av Monitor kan Er organisation övervaka den internet-exponering ni har och få notifieringar över händelser.

Även för mig som konsult kan detta vara intressant då jag kan övervaka mina kunder och meddela dem om något nytt suspekt dyker upp eller som ett OSINT-verktyg vid RedTeam och penetrationstester.

Det går att lägga upp nya nät och övervaka via webbgränssnittet som återfinnes på monitor.shodan.io eller direkt via CLI och det python-program som Shodan tillhandahåller (byt ut APIKEY mot din nyckel och ALERTID mot det ID som returneras)

sudo pip install shodan
shodan init APIKEY
shodan alert create "My Production Networks" 198.20.0.0/16 8.20.5.0/24
shodan alert triggers
shodan alert enable ALERTID malware

När du skriver shodan alert triggers så kan du se vilka larm du kan slå på eller av. Listan ser ut enligt följande:

Du kan även ange ”any” och då får du larm för samtliga ovan kategorier:

shodan alert enable ALERTID any

Innan du kan övervaka några IP-nummer så måste du först bli betalande medlem. Jag valde den nivå som heter Freelancer och gör att jag kan lägga upp övervakning 5120 IPs och kostar 59$ per månad (ca 560 kr). Övriga nivåer är enligt följande:

  • $299 /månad (2 865 sek) ger dig 65536 IPs
  • $899 /månad (8 614 sek) ger dig 300000 IPs

Efter några timmar dyker det första larmet upp i min E-post. Relativt ointressant men som tur var så finns det även en möjlighet att vitlista vissa portar, så här ser mailet ut:

Och längst ner så finns länken ”Ignore this event in the future”.

Andra användningsområden för Shodan Monitor kan också vara för nät som ingår i Bug Bounty-program. Du får även använda tjänsten i kommersiellt syfte.

Samtliga argument till shodan alert för den som kör med python-mjukvaran:

Det är även möjligt att erhålla realtidsdata via shodan stream på följande sätt:

Video med demo:

Threat Hunting med Maltrail

Maltrail är en open-source mjukvara för att upptäcka skadlig kod, skriven i programspråket python. Mjukvaran består av en serverdel och en klientdel som kan köras fristående.

Maltrail kan titta på nätverkstrafik och larma om något av följande matchar någon av de medföljande listorna:

  • HTTP Host Headers
  • DNS-uppslag
  • IP-adresser
  • URL
  • User-agent

För att installera Maltrail så klonar du bara hem Git-repot och installerar beroenden såsom python-pcapy. Jag kör dessa tester på en Raspberry Pi och det fungerar fint.

Och när du startar upp Maltrail för första gången så laddas 68 stycken olika publika listor hem med IOCer:

Förutom att sniffa nätverkstrafik direkt mot ett interface så kan köra sensor.py mot en pcap-fil på följande sätt:

$ sudo python sensor.py -i /data/pcap/trace_2018-12-15_14.54.33.pcap

Och vill du se vad som larmar direkt till konsollen kan du starta Maltrail på följande sätt med –console:

sudo python sensor.py -i /data/pcap/trace_2018-12-15_14.54.33.pcap --console

En annan sak som jag noterar är att dessa 68 st listor som laddas hem innehåller hela 1 396 712 st IOC:er samt att det pcap-filter som används som standard är enligt följande:

udp or icmp or (tcp and (tcp[tcpflags] == tcp-syn or port 80 or port 1080 or port 3128 or port 8000 or port 8080 or port 8118))

Vilket den observanta läsaren kan se att HTTPS tcp port 443 exempelvis inte finns med, dock all ICMP och UDP. Som standard kontrollerar inte maltrail http-host headern men detta kan snabbt ändras i maltrail.conf som du bör ta en titt på. Du kan även ändra pcap-filtret i konfigurationsfilen, men då tar analysen givetvis längre tid.

Att analysera en 2.2GB pcap-fil med min Raspberry Pi 3 Model B+ tog cirka 3 minuter. Då hade jag satt USE_HEURISTICS till false samt CHECK_HOST_DOMAINS till true, främst för att USE_HEURISTICS gav så många false-positives.

För den som gillar trevliga webb-gränssnitt så finns det även ett till Maltrail och startas upp med server.py:

Sedan är det bara att surfa till IP-adressen där du har Maltrail installerat och port 8838. Du måste även logga in med användarnamn och lösenord som är satt till admin/changeme! som standard. Går givetvis att ändra i konfigg-filen, och server.py stödjer även SSL/TLS.

Följande bild är en skärmdump på en dag där det identifierats 145 st threats:

Maltrail larm

Majoriteten av larmen som dykt upp under mina tester är klassificerade som medium eller low. Och precis som vid Threat Hunting så är det viktigt att följa upp varför just dessa larm uppstår. Vid denna vidare analys kan det vara intressant att kolla källan som framgår samt om du har rådata i pcap:ar kvar så bidrar även detta till större framgång.

Ett annat tips är att kolla datakällor såsom Zoomeye, Censys.io och Shodan där dessa IP-nummer eller domäner kan identifieras.