
Détecteur d'attaques et d'exploits ShellShock pour Bro.
Ce script détecte l'exploitation réussie de la vulnérabilité Bash CVE-2014-6271, surnommée « ShellShock ». Il est plus complet que la plupart des détections existantes, car il surveille le comportement de l'hôte attaqué susceptible d'indiquer une compromission réussie ou une vulnérabilité réelle.
Si un hôte reçoit une attaque via HTTP, Bro surveille cet hôte pour voir s'il télécharge une charge utile de type dropper ou envoie un ping ICMP. De nombreux autres mécanismes pourraient apparaître, mais cela couvre la plupart des mécanismes de réponse connus. Par défaut, ce script est configuré pour surveiller les fichiers de type MIME application/x-executable, ce qui couvre le dropper mentionné dans l'attaque ici :
https://gist.github.com/anonymous/929d622f3b36b00c0be1
Alternativement, si les attaquants se contentent de tester avec une commande ping, ce script surveillera une commande ping provenant de la victime peu de temps après qu'une attaque a été détectée.
Ce script ajoutera également une étiquette au champ « tags » du journal HTTP pour toutes les requêtes qui semblent être des attaques possibles. Le contenu de l'étiquette est : ShellShock::HIT.
Pour ce que ça vaut, ce script est compatible cluster et devrait fonctionner parfaitement sur les clusters Bro ; il est également suffisamment stable pour une utilisation opérationnelle.
Ce script prend actuellement en charge Bro 2.3, 2.4 et 2.5. Veuillez ouvrir un ticket si ce script vous cause des problèmes sur une version prise en charge de Bro.
Ce dépôt contient une capture de paquets d'exemple qui exploite un serveur d'exemple nommé exploit.pcap. Voici les journaux pertinents qui sont générés.
notice.log
#separator \x09
#set_separator ,
#empty_field (empty)
#unset_field -
#path notice
#open 2014-09-26-10-47-02
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p fuid file_mime_type file_desc proto note msg sub src dst p peer_descr actions suppress_for dropped remote_location.country_code remote_location.region remote_location.city remote_location.latitude remote_location.longitude
#types time string addr port addr port string string string enum enum string string addr addr port count string set[enum] interval bool string string string double double
1411666207.583791 - - - - - - - - - ShellShock::Scanner 10.246.50.2 sent at least 1 CVE-2014-6271 exploit attempts in 0m0s. Used payload: "() { :;}; /bin/ping -c1 10.246.50.2" :: against sample victim hosts: 10.246.50.6 10.246.50.2 - - - bro Notice::ACTION_LOG 3600.00000-
1411666207.588581 - - - - - - - - - ShellShock::Exploit High likelihood of successful CVE-2014-6271 exploitation against 10.246.50.6. Attack over HTTP and sent a ping to 10.246.50.2 within 0.000 seconds of an attack. Attack over HTTP and sent a ping to 10.246.50.2 within 0.000 seconds of an attack. 10.246.50.6 - - - bro Notice::ACTION_LOG 3600.000000 F - - - - -
http.log
#separator \x09
#set_separator ,
#empty_field (empty)
#unset_field -
#path http
#open 2014-09-26-10-47-02
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p trans_depth method host uri referrer user_agent request_body_len response_body_len status_code status_msg info_code info_msg filename tags username password proxied orig_fuids orig_mime_types resp_fuids resp_mime_types
#types time string addr port addr port count string string string string string count count count string count string string set[enum] string string set[string] vector[string] vector[string] vector[string] vector[string]
1411666207.583791 CC7s232GDnmtxZUly5 10.246.50.2 43616 10.246.50.6 80 1 GET 10.246.50.6 /exploitable.cgi - () { :;}; /bin/ping -c1 10.246.50.2 0 615 500 Internal Server Error - - - ShellShock::HIT - - - - - FgVgjb1GU12ixSuugc text/html
#close 2014-09-26-10-47-02
bro-pkg refresh
bro-pkg install corelight/bro-shellshock
Il y a quelques variables de configuration.
## The number of apparent attacks a host must send for it to be
## detected as ShellShock::Scanner.
const ShellShock::scan_threshold = 10 &redef;
## The period over which scanner detection is performed.
const ShellShock::scan_detection_period = 10min &redef;
Ces variables peuvent être utilisées pour étendre la durée pendant laquelle les analyses ShellShock sont surveillées ainsi que le nombre d'attaques nécessaires avant qu'un hôte soit déclaré comme scannant et qu'une notification soit créée.
Seth Hall <[email protected]>
Stephen Hosom - A fourni une capture de paquets permettant une exploitation complète.
Nick Weaver - Discussion précieuse sur la manière dont ShellShock est ou n'est pas exploitable.
Vlad Grigorescu - Demande de fonctionnalité après demande de fonctionnalité.
Mike Patterson - A suggéré de surveiller les scripts shell en tant que dropper post-exploitation.