Webサーバーをセットアップするのではなく、Webサービスの応答を偽造する最良の方法について誰かが洞察していたのではないかと思っていました。たとえば、マルウェアの動的分析を行っている間、C&Cトラフィックを同じ方法で応答できる独自の偽のWebサーバーにリダイレクトすると便利です。
現在、私はpythonライブラリを使用して、手動でHTTP応答で返信していますが、これは時間がかかり、手間がかかります。
編集:必ずしも自動化されたツールを探すのではなく、それを行うためのより速い方法です。
この目的のためにこのツール(およびlib)を作成しました-
https://github.com/jar-o/dumdum
gET/POST/etc、ヘッダー、JSON入力も処理します。コードを記述する必要はありません。「照合」する要求を指定して、それを応答に結び付けるだけです。
主に、さまざまなテストシナリオを処理するための小さなFlaskサーバーを大量に作成することにうんざりしていたためです。
現在、私はpythonライブラリを使用して、手動でHTTP応答で返信していますが、これは時間がかかり、手間がかかります。
丁度。ここでの考え方は、特定のHTTP入力が与えられたときに、特定の出力で応答することです。その出力は通常、入力に対してかなり固定されています。 dumdum
を使用すると、一致が他の応答にフォールスルーするため、実際に機能しているサーバーをシミュレートできます。
私はいつもこのようなことについて netcat が好きです。この場合、次のコマンドを使用して、C&Cサーバーからの実際の応答のコピーを作成できます。
nc candcserver.com 80
コマンドラインで渡すヘッダーを送信し、Enterキーを2回押して、テキストファイルに保存し、作成したファイルを使用して提供します
while true; do Sudo nc -l 80 < capturedpage.txt; done
テストを127.0.0.1にポイントします
これを行うことができるいくつかの製品があるかもしれませんが、私はいくつかのuriのリモートではなくローカルコンテンツを提供したいと思ったところ、同様のプロキシを自分で作成しました。
これは、pythonで書かれた私のコードの修正です。ツイストライブラリに基づいているため、 ここ から取得することをお勧めします。
これは、netlocの部分が「security.stackexchange.com」に等しいURLに一致し、「www.xkcd.org」に置き換えます。
私はあなたがpythonに精通していることを願っていますので、このコードに機能を追加できます。ロギングの追加、URIの動的な書き換えなどは簡単です。
また、マルウェアとC&Cから転送中のコンテンツを変更したい場合は、コンテンツ書き換えプロキシへの私の貢献を見てください: https://stackoverflow.com/questions/6491932/need-help- writing-a-twisted-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()
Meddler を見ることを検討してください:
Meddlerは、シンプルですが強力なJScript.NETイベントベースのスクリプトサブシステムをベースにしたHTTP(S)生成ツールです。
これは、HTTPプロキシツールの優れたFiddlerファミリーからのものです。
ronin-web (0.3.0.rc1)ライブラリの Ronin :: Web.proxy_server を使用して、HTTPリクエストをプロキシし、リクエスト/レスポンスをインターセプト/変更できます。
$ gem install ronin-web --pre
$ ronin-web
>> Web.proxy_server do
| every_request do |request|
| # inspect the request (http://ronin-Ruby.github.com/docs/ronin-web/Ronin/Web/Middleware/ProxyRequest.html)
| end
end
[-] Starting Web Server on 0.0.0.0:8080
[2011-07-12 15:31:11] INFO WEBrick 1.3.1
[2011-07-12 15:31:11] INFO Ruby 1.9.2 (2011-02-18) [x86_64-linux]
[2011-07-12 15:31:11] INFO WEBrick::HTTPServer#start: pid=15697 port=8080