Navigateur avec user-agent modifiable et cie

Navigateur avec user-agent modifiable et cie - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 17-04-2007 à 19:56:28    

Bonsoir,
 
je suis à la recherche d'outils en ligne de commande (sous linux de préférence) qui permettent de simuler des agents logiciels au choix.
 
Je m'explique : tout le monde sait que l'on peut modifier l'user-agent dans son navigateur et faire croire que firefox est iexplorer, ou n'importe quoi d'autre.
Moi, ce qui m'intéresse c'est un outil comme wget mais dont on peut changer la personnalité dynamiquement : je lance un GET en le faisant passer pour mozilla sous fedora kernel machin et 5 secondes après je fais un autre GET et je le fais passer pour opéra...
 
Après, si c'est pas l'outil qui fait directement ça mais un filtre ou un script qui modifie les paquets http sortant, ça me va du moment que c'est dynamique et en ligne de commande.
 
La personnalisation peut être plus ou moins poussée (format des paquets, ordre des champs, fragmentation des données, format du padding, réaction aux erreurs, timeout, etc.). Le must étant que l'outil soit fourni avec une base de fingerprint bien fournie.
 
Je cherche ça pour tout les protocoles clients possibles et imaginables ldap, snmp, smtp, pop, dns, ftp, vnc,...
 
J'ai trouvé 2-3 trucs mais si vous avez en connaissez des bon, ça m'arrangerai bien  :)  
 
Merci d'avance.

Reply

Marsh Posté le 17-04-2007 à 19:56:28   

Reply

Marsh Posté le 19-04-2007 à 10:58:04    

wget :??:

 

--user-agent=agent-string
    Identify as agent-string to the http server.

 

   The http protocol allows the clients to identify themselves using a User-Agent header field. This enables distinguishing the www software, usually for statistical purposes or for tracing of protocol violations. Wget normally identifies as Wget/version, version being the current version number of Wget.

 

   However, some sites have been known to impose the policy of tailoring the output according to the User-Agent-supplied information. While this is not such a bad idea in theory, it has been abused by servers denying information to clients other than (historically) Netscape or, more frequently, Microsoft Internet Explorer. This option allows you to change the User-Agent line issued by Wget. Use of this option is discouraged, unless you really know what you are doing.

 

   Specifying empty user agent with --user-agent="" instructs Wget not to send the User-Agent header in http requests.


Message édité par leto le 19-04-2007 à 10:58:24

---------------
--
Reply

Marsh Posté le 19-04-2007 à 20:59:44    

Merci pour ta réponse.
 
En effet, wget permet de modifier l'user-agent tout comme lynx (ce que je n'avais pas vu) et s'appelle en ligne de commande : ça correspond donc à ce que je cherche.
 
Cependant, ce que je cherche en réalité, c'est de pouvoir modifier plus que le simple user-agent.
 
Je posais cette question car il est envisageable de détecter quel est le navigateur employé par un utilisateur à l'aide d'autres critères que le champ user-agent.
 
Par exemple : un administrateur peut modifier la bannière de son serveur web pour contrer des attaquants. Mais ça ne sert à rien car des outils comme httprint peuvent découvrir quel est le serveur en se basant sur le format des paquets envoyés par le serveur : champs présents dans l'en-tête, ordre des champs, codes d'erreur, padding, timeout...
Httprint dispose ainsi de signatures (à la façon de nmap) pour la plupart des serveurs web existants.
 
Il existe des outils pour les serveurs mail, ftp, ssh,etc.
 
Moi, ce que je cherche c'est la même chose mais pour les applications clientes!
Je n'ai rien trouvé pour l'instant mais je suis certain qu'il doit y avoir des possibilités et des recherches sur le sujet doivent exister... d'autant plus que ça doit intéresser ceux qui font des statistiques sur le web (et les entreprises)
.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
Ce que je compte faire, c'est remplacer les en-têtes des applications clientes dynamiquement lorsqu'elles sortent de l'ordinateur. Pour cela, je pense utiliser les en-têtes venant de captures pcap.
 
Est-ce que vous connaissez des outils pour faire ça simplement (et pas seulement que pour http) ? J'ai reperé libcurl et scapy qui permettent de manipuler les paquets; faut que je regarde comment ça marche.
 
Si vous avez des suggestions, n'hésitez pas à m'en faire part...
 
Merci.

Reply

Marsh Posté le 19-04-2007 à 21:43:12    

Dans ton exemple tu parles de serveurs HTTP. A part le User-Agent, de quelle manière tu peux détecter le client ?

Reply

Marsh Posté le 20-04-2007 à 08:33:11    

l0ky a écrit :

A part le User-Agent, de quelle manière tu peux détecter le client ?


 
Eh bien, de la même façon que l'on différencie les serveurs web...
 
Httprint envoie au serveur web un certain nombre de requetes http particulières (suffisamment grand pour bien différencier les serveurs) et observe les réponses.
Les serveurs n'étant pas codés de la même façon, ils ne répondent pas toujours pareil.
 
Evidemment, il ne suffit donc pas d'une seule requete http pour indentifier un serveur : il peut en falloir un grand nombre.
 
Regarde cette page, c'est expliqué:
http://net-square.com/httprint/httprint_paper.html
 
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
Pour détecter un navigateur, on fait pareil mais à l'envers.
 
C'est à dire que le serveur collecte un certain nombre de requêtes http (et les paquets tcp associés) et regarde si une tendance se dessine. Le serveur peut également envoyer au client des paquets bizarrement formatés ou erronés pour voir comment le navigateur réagit (est qu'il est gêné et redemande les données, ou bien est-ce qu'il comprend).
Il y a forcément des différences d'implémentation entre les navigateurs, notamment aux cas limites ou non spécifiés par le standard http.
Pour que ça marche bien, il faut que le client reste suffisamment longtemps sur le serveur.
 
Ce que je dis est théorique et je ne suis pas un expert en réseau, mais c'est comme ça que je vois les choses.
 
a+

Reply

Marsh Posté le 20-04-2007 à 08:37:46    

Code :
  1. #!/usr/bin/perl
  2. use WWW::Curl::easy;


 
tu l'as ton browser [:spamafote]
 
par contre pour ce qui est de ta théorie, cela suppose d'avoir une connaissance quasi exhaustive des browsers.
 
Et ça va te servir à quoi au fait ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
Reply

Marsh Posté le 20-04-2007 à 09:03:23    

black_lord a écrit :


par contre pour ce qui est de ta théorie, cela suppose d'avoir une connaissance quasi exhaustive des browsers.


 
C'est pour ça que je demandais... peut être qu'il y a des projets où les gens ont fait une étude presque exhaustive des browsers.
 
C'est clair que c'est pas moi qui vais m'amuser à faire ça...
 
Ca a bien été fait pour fingerprinter les os, aussi bien de façon active que passive : nmap, xprobe2, p0f, ring, sinfp, etc.
Il y a bien fallu les constituer les bases de signatures, non?
 
La même chose a été faite pour les applications serveur : telnetfp, amap, vmap, httprint, etc.
 
 

black_lord a écrit :


Et ça va te servir à quoi au fait ?


Ca va me servir a faire un honeynet dans lequel le comportement des utilisateurs est reproduit et/ou simulé fidèlement. (le tout sur une seule machine avec honeyd)
 
Je suis d'accord que l'on peut se contenter des user-agent et des bannières, mais je cherche le plus grand réalisme possible...
 
Si c'est pas possible, bah tant pis...
 
En tout cas, merci de m'avoir répondu.
 
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed