web-dev-qa-db-fra.com

Quels sont les meilleurs moyens de simuler un serveur Web

Je me demandais si quelqu'un avait une idée de la meilleure façon de simuler une réponse de service Web plutôt que de configurer un serveur Web. Par exemple, tout en faisant une analyse dynamique des logiciels malveillants, il est utile de rediriger le trafic C & C de votre propre faux serveur Web pouvant répondre de la même manière.

À l'heure actuelle, j'utilise un python Library, puis répondez manuellement avec les réponses HTTP, mais cela prend beaucoup de temps et kludgy.

EDIT: Pas nécessairement à la recherche d'un outil automatisé, juste un moyen plus rapide de le faire.

8
Lizbeth

J'ai créé cet outil (et lib) spécifiquement à cette fin -

https://github.com/jar-o/dumdum

il gère/post/etc, des en-têtes, des entrées JSON également. Pas besoin d'écrire du code, vous spécifiez simplement quelle demande de "correspondance" puis attachez-la à une réponse.

Je l'ai fait principalement parce que j'étais marre d'écrire un tas de minuscules Flask serveurs pour gérer divers scénarios de test.

À l'heure actuelle, j'utilise un python Library, puis répondez manuellement avec les réponses HTTP, mais cela prend beaucoup de temps et kludgy.

Exactement. L'idée ici est qu'à une certaine entrée HTTP, vous souhaitez répondre avec une certaine sortie. Cette sortie est généralement assez corrigée par rapport à l'entrée. dumdum permet aux correspondances de tomber dans d'autres réponses. Vous pouvez donc simuler un serveur de fonctionnement réel.

2
jar

J'aime toujours Netcat pour ce genre de chose. Dans ce cas, vous pouvez créer une copie de la réponse réelle du serveur C & C en utilisant

nc candcserver.com 80

soumettez les en-têtes que vous souhaitez transmettre sur la ligne de commande, appuyez deux fois sur Entrée et enregistrez-la dans un fichier texte, puis servez le fichier que vous venez de créer à l'aide de

while true; do Sudo nc -l 80 < capturedpage.txt; done

et pointez l'application de vos tests au 127.0.0.1

6
Mike1980

Il pourrait y avoir des produits capables de le faire, mais j'ai écrit moi-même un proxy similaire où je voulais servir le contenu local plutôt que sur la télécommande pour certains URI.

Voici une modification de mon code écrit à Python. Il est basé sur la bibliothèque tordue, vous pourriez donc vouloir l'obtenir de ici .

Il correspondra aux URL avec la partie NetLoc égale à "Security.StaCkeXchange.com" et le remplacera par "www.xkcd.org".

J'espère que vous connaissez Python, vous pouvez donc ajouter plus de fonctionnalités dans ce code. Il devrait être facile d'ajouter une journalisation, de réécrire de manière dynamique URI et telle.

En outre, si vous souhaitez modifier le contenu en transit depuis le logiciel malware et le C & C, jetez un coup d'œil à ma contribution pour un proxy de réécriture de contenu: https://stackoverflow.com/questions/6491932/need-help- écrit-a-torsadé-proxy/6521024 # 6521024

from twisted.web import proxy, http
from twisted.internet import reactor

from urlparse import urlparse, urlunparse
fakeweb_netloc = "www.xkcd.org"
cc_netloc = "security.stackexchange.com"

class ProxyRequest(proxy.ProxyRequest):
    def process(self):

        res = urlparse(self.uri)
        netloc = res.netloc
        print self.uri

        if netloc == cc_netloc:
           netloc = fakeweb_netloc
        self.uri = urlunparse((res.scheme, netloc, res.path, res.params, res.query, res.fragment))

        proxy.ProxyRequest.process(self)

class MyProxy(http.HTTPChannel):
    requestFactory = ProxyRequest

class ProxyFactory(http.HTTPFactory):
    protocol = MyProxy

if __name__ == "__main__":
    factory = ProxyFactory()
    reactor.listenTCP(8080,factory)
    reactor.run()
3
Dog eat cat world

Envisager de regarder Meddler :

Meddler est un outil de génération HTTP (S) basé sur un sous-système de script d'événement simple mais puissant.

Cela provient de l'excellente famille des outils proxy HTTP.

2
AviD