How with Suricata you save the world - NDH2K14
-
Upload
sebastien-larinier -
Category
Internet
-
view
1.676 -
download
6
Transcript of How with Suricata you save the world - NDH2K14
How with Suricata you save the world
Last night the Suricate save my life
The gangSébastien Larinier● Membre de l’
Honeynet Project● Co-Organisateur de
Botconf● CTO du Cert Sekoia
Éric Leblond● Membre de la
coreteam Netfilter● Core développeur
Suricata● CO-fondateur de
Stamus Networks
IDSTu as mal mais au moins tu sais pourquoi.
IDS: Intrusion Detection System● Sonde de détection d’intrusion
○ HIDS: Système■ analyse des OS pour détecter des
compromissions○ NIDS: Réseaux
■ analyse sécurité du trafic réseau■ technologies variées: signature, comportementale
● NIDS open source:○ Snort, BRO, Suricata
IDS et NSMIDS basé signatures● Recherche de
motifs connus● Une signature par
CVE
Network Security Monitoring● Analyse et stockage
de traces réseaux○ stockage des
requêtes● Capture complète● But forensics et
détection
Travail de l’IDS
Mode de fonctionnementsOffline● Analyse de fichiers
pcap● Utilisé pour
○ l’analyse malware○ enquête à posteriori
Live● Sniffing d’interface
○ pcap○ carte de captures
dédiées● IPS
○ Niveau 2○ Niveau 3 (Netfilter)
Suricata: IDS et NSM● GPLv2● développé par une fondation l’OISF● Multithreadé● Reconnaissance protocolaire● Extraction de fichiers
Entrées et Sorties● IDS
○ PCAP○ AF_PACKET,
pf_ring○ carte de captures
● IPS○ Netfilter, ipfw○ Bridge AF_PACKET
● Alertes○ Fast.log○ Unified2○ EVE JSON
● NSM○ HTTP, File, DNS,
SSH, TLS○ Flat file and EVE
SELKSLet’s talk about SELKS
SELKS● Une distribution live et installable
○ Suricata○ Elasticsearch: base de données/moteur de recherche○ Logstash: des fichiers à la base de données○ Kibana: interface web d’analyse○ Scirius: interface web de gestion de signatures
● Gestion des signatures et analyse par le web● Basé sur Debian Live● Source: https://github.com/StamusNetworks/SELKS
Comment tester ?1. Télécharger depuis https://www.stamus-networks.
com/open-source/#selks2. Démarrer une VM
○ minimum 1 coeur et 3Go○ 2 coeurs et 4Go recommandés○ interface réseau
■ en mode bridge■ promiscuous activé
○ ISO téléchargée utilisée comme CD
Kibana
Drill Down sur libssh2_1.4.2
Démonstration● Fonctions NSM
○ Analyse du trafic lors d’une requête web■ Dashboard HTTP et DNS
○ Test twitter■ TLS et DNS
● Approche “Drill Down“○ Filtre temps○ Sélecteur loupe○ Filtre
Build Your Own Dashboard● Créer des requêtes pour définir des
ensembles○ Lucene Query Syntax○ Tutorial: http://www.lucenetutorial.com/lucene-
query-syntax.html● Ajouter un panel
○ Choisir le type○ Choisir les requêtes
Hacking EVELet’s start to play
EVE● Suricata 2.0 a introduit le format EVE
○ Journalisation au format JSON○ Fichier unique○ Support des alertes et des événéments
● Le format JSON permet○ Une intégration facile avec Logstash ou Splunk○ Des développements rapides d’outils
Exemple d’événément JSON
DOM● Un outil à la fail2ban
○ Analyse le fichier EVE○ Détecte les événéments ssh○ Ajoute les IP sources à un ensemble IPset
■ Utilisation dans le filtrage iptables■ Blacklist ou autre
● Intérêt○ Blocage des scans (DOM y nique trop de scans)○ Redirection vers un honeypot
KISS DOM code
Utilisation de DOM● Création de l’ensemble IPset
ipset create libssh hash:ip
● Lancement de DOM./dom -f /usr/local/var/log/suricata/eve.json -s libssh -m OpenSSH -i
● Téléchargement: https://github.com/regit/DOM
pshitt● Passwords of SSH Intruders Transferred to
Text○ Un faux serveur SSH pour collecter les mots de passe○ Sortie en JSON
● Pshitt:○ Origine du nom :
■ “Elles [Les attaques] font pshitt” (Jacques Chirac)
○ Développé en Python et basé sur paramiko
Mise en oeuvre● Lancement de pshitt
cd pshitt
./pshitt
● Paramétrage de Netfilteriptables -A PREROUTING -t nat -m set --match-set libssh src -i eth0 \
-p tcp -m tcp --dport 22 -j REDIRECT --to-ports 2200
Les mots de passe à éviter
MalwareAttraper du malware
Extraire des fichiers des flows● Configurer un .rules● Configurer Suricata.yaml
○ Activer le .rules○ Logguer le magic des fichiers○ Logguer le md5 du fichier
● repository: /var/log/suricata/files
le .rules● Créer files.rules● Copier le dans /etc/suricata/rules/● Synthaxe de la règle:
○ alert http any any -> any any (msg:"FILE store all"; filestore; sid:1; rev:1;)
le .yaml● ajouter files.rules dans la section rules
default-rule-path: /etc/suricata/rulesrule-files: - files.rules - emerging-all.rules
le .yaml● Configurer le logging:
- files: force-magic: yes # force logging magic on all logged files force-md5: yes # force logging of md5 checksums
- file-store:
enabled: yes # set to yes to enable log-dir: files # directory to store the files force-magic: yes # force logging magic on all stored files force-md5: yes # force logging of md5 checksums
Et le résultat:● Eve.json:
○ {"timestamp":"2014-04-27T05:12:19.430121","pcap_cnt":428773,"event_type":"alert","src_ip":"95.211.128.101","src_port":80,"dest_ip":"192.168.204.215","dest_port":50588,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2018031,"rev":2,"signature":"ET CURRENT_EVENTS Hostile _dsgweed.class JAR exploit","category":"A Network Trojan was detected","severity":1}}
○ {"timestamp":"2014-04-27T05:12:20.047905","pcap_cnt":428799,"event_type":"alert","src_ip":"95.211.128.101","src_port":80,"dest_ip":"192.168.204.215","dest_port":50588,"proto":"TCP","alert":{"action":"allowed","gid":1,"signature_id":2013037,"rev":7,"signature":"ET POLICY Java EXE Download","category":"A Network Trojan was detected","severity":1}}
○ {"timestamp":"2014-04-27T05:12:24.561932","pcap_cnt":428901,"event_type":"fileinfo","src_ip":"95.211.128.101","src_port":80,"dest_ip":"192.168.204.215","dest_port":50587,"proto":"TCP","http":{"url":"/1398547200.jar","hostname":"1315620091-6.babyserr.ru","http_user_agent":"Mozilla/4.0 (Windows 7 6.1) Java/1.7.0_13"},"fileinfo":{"filename":"1315620091.jar","magic":"Java Jar file data (zip)","state":"CLOSED","md5":"52c07b18e0508bb805e7a06054a997de","stored":false,"size":3819}}
Et le résultat:● Sur le filesystem:
○ file.* ○
● Mais où est le MD5 ?:
Let’s Hack Baby
Résultats● Malware ok● Sur une analyse Ok● Mais si je veux industrialiser ?
Threat intelligenceMon précieux !
Threat Intel: Kezako● Collection d’indice de compromission:
○ ip○ domaines○ metadata de fichiers○ Vulnérabilité utilisés○ Vecteur
Threats Intelligence VS SuricataOH WAIT !
Suricata: deux modes● Online
○ suricata -i eth0 -c /etc/suricata/suricata.yaml● Offline:
○ suricata -c /etc/suricata/suricata.yaml --unix-socket
Suricata: mode unix-socket● Balance moi les pcaps mon amour !
Threats Intelligence VS Suricata● Il faut que je réassemble mes datas qui sont
dans mon eve.json:○ Push dans Redis○ Réassemblages des données
Suricata loves Redis
Suricata loves Redis
Threats Intelligence VS Suricata● Résultats:"{\"files\": [{\"magic\": \"PE32 executable (GUI) Intel 80386, for MS Windows\", \"filename\": \"flashplayer11_7r22082_216_win.exe\", \"state\": \"CLOSED\", \"stored\": false, \"md5\": \"f326b9e4a8c734dee5d8a04d712c5f28\", \"size\": 3826}], \"alerts\": [\"ET INFO EXE - Served Inline HTTP\", \"FILE store all\", \"ET CURRENT_EVENTS Fiesta - Payload - flashplayer11\", \"FILE store all\", \"ET CURRENT_EVENTS Fiesta - Payload - flashplayer11\", \"ET CURRENT_EVENTS Fiesta - Payload - flashplayer11\"], \"http\": [{\"url\": \"/fvchd56/?180ec0511077e4e25440555e510b07030100025e5752050a040a560407520650;1;6\", \"hostname\": \"a.pimpmycar.ro\", \"http_user_agent\": \"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)\"}]}"
● Yes we can !
Threats Intelligence VS Suricata
● Trouver des feeds !○ malware-traffic.com
Threats Intelligence VS Suricata
Un ptit crawler