web-dev-qa-db-fra.com

Comment capturer les demandes HTTP entrantes pour analyse?

J'ai un site qui est assez touché par un script de bot qui pense qu'il est possible de forcer brutalement le mot de passe Admin en "essayant" différents mots de passe avec le nom d'utilisateur "Admin". Voici un extrait de mon journal:

uname   password     IP-address
-------+--------+-------------------
'Admin' '300283' IP: 220.250.61.78
'Admin' '300284' IP: 94.255.35.226
'Admin' '300281' IP: 176.108.152.178
'Admin' '300191' IP: 109.162.54.139
'Admin' '300280' IP: 213.87.138.83
'Admin' '300193' IP: 2.242.0.165

Une demande typique du bot est enregistrée comme ceci dans le access_log d'Apache et, comme il s'agit de POST, le bit intéressant (c'est-à-dire qu'il essaie de se connecter à l'utilisateur admin) ne figure pas dans l'en-tête.

 109.162.54.139 - - [08/Sep/2013:17:52:44 +0200] "POST /user HTTP/1.1" 200 20571 "http://example.org/user" "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.72 Safari/537.36"

Le bot effectue environ 8 demandes de connexion par seconde, et cela depuis quatre jours.

Le site attaqué appartient à une ONG totalement non-controversée. Je l'exécute pro bono sur un petit hôte partagé. La configuration ne s'adapte pas vraiment bien pour ce genre de chose, donc les performances en pâtissent. C’est évidemment un script assez stupide, car lorsque j’ai configuré Apache pour qu'il réponde 403 à chaque demande de tout le monde, à l’exception de mon adresse IP, elle ne faisait que continuer. comme rien n'avait changé. (Cela permet de restaurer les performances. Si je parviens à faire bloquer ceci par Apache, je le gagnerai.)

Comme vous pouvez le voir dans l'extrait du journal, quiconque le fait commande un botnet avec un grand nombre d'adresses IP. En parcourant les journaux, je remarque qu'il est très rare de réutiliser une adresse IP, ce qui bloque les adresses IP, comme le suggère la réponse positive à cette question: Tactiques pour traiter les robots qui se conduisent mal est pas une option.

Btw: il n'y a pas de compte avec le nom d'utilisateur "Admin" sur le système, il n'y a pas non plus d'informations sensibles ou précieuses sur le système, donc ça me laisse perplexe de savoir pourquoi quelqu'un le fait.

Une chose que je veux essayer, c’est d’analyser les demandes entrantes, j’espère pouvoir découvrir une sorte de modèle. Et quand j'ai trouvé un motif, configurez une règle dans Apache pour bloquer les demandes correspondant au motif. Mais je ne sais pas comment capturer les demandes d'analyse entrantes. Ma question est donc: comment capturer la partie POST des demandes HTTP entrantes d'analyse?

6
Free Radical

Comment capturer la partie POST des demandes HTTP entrantes pour analyse?

Essayez d’utiliser ModSecurity - à partir de sa documentation sur Journalisation du trafic HTTP :

Les serveurs Web sont généralement bien équipés pour enregistrer le trafic sous une forme utile pour les analyses marketing, mais ne parviennent pas à enregistrer le trafic vers les applications Web. En particulier, la plupart ne sont pas capables de journaliser les corps de la demande. Vos adversaires le savent et c’est la raison pour laquelle la plupart des attaques sont désormais effectuées via des requêtes POST, ce qui rend vos systèmes aveugles. ModSecurity permet la journalisation complète des transactions HTTP, en permettant la journalisation des demandes et des réponses complètes. Ses fonctions de journalisation permettent également de prendre des décisions précises concernant ce qui est journalisé et à quel moment, en veillant à ce que seules les données pertinentes soient enregistrées.

Utiliser ARGS_POST comme indiqué dans la section ARGS devrait vous permettre de capturer la partie POST des demandes HTTP entrantes pour analyse:

ARGS est une collection et peut être utilisé seul (signifie tous les arguments, y compris le POST Payload), avec un paramètre statique (correspond aux arguments avec ce nom) ou avec une expression régulière (correspond à tous les arguments avec le nom qui correspond à l'expression régulière). Pour examiner uniquement les arguments de la chaîne de requête ou du corps de la requête, voir les collections ARGS_GET et ARGS_POST.

Voir les autres fonctionnalités de ModSecurity ici , telles que: surveillance en temps réel, détection des attaques et prévention des attaques ...


... qui le fait commande un réseau de zombies avec un grand nombre d'adresses IP. En parcourant les journaux, je remarque qu'il est très rare de réutiliser une adresse IP

Les robots malveillants peuvent se connecter via proxy ouverts partout dans le monde (généralement sans autorisation ), chacun ayant une adresse IP différente. Ils peuvent également utiliser chevaux de Troie et des virus sur les ordinateurs/serveurs clients détournés pour effectuer leur travail. Vous avez donc raison de dire que le blocage des adresses IP n’est pas une option pour les empêcher, bien qu’il existe projets Honey Pot comme this , qui tente de fournir une base de données d’adresses IP abusives.

4
dan