自分のリモート管理ツール"a to multi client one"を使用してSystem.Net.Socket
、-"Watch Dogs fan:P"を作成しました。
次に、リモート管理ツールのプロセスを作成または設計する方法をグーグルで検索しようとすると、これが見つかりました Blog Joseph Bisaillon、彼の基本的なRAT設計およびその他のRAT設計では、「複数のサーバーからクライアントに"、
なぜ被害者がデザインでクライアントではなくサーバーを使用するのか、私は興味がありますか?クライアントをコントローラーとして使用する方が良いですか?またはサーバーと同じですか?
リモートアクセスツールを構築する際のハードルールはありません。それは、あなたが制御したい犠牲マシンの目的とタイプに依存します。さまざまなタイプのアーキテクチャは、 [〜#〜] nat [〜#〜] と多くの関係があります。
C2クライアント-被害者サーバー
これは、ダイアグラムに表示する場合です。 C2は、被害者のサーバーに到達することによってセッションを開始します。被害者のサーバーは、パブリックにルーティング可能なIPアドレスを持ち、着信接続を許可するためにポートを開いている必要があります。
によるクリーバーの実装には、一種の ポートノッキング が必要です。どちらの方法でも、クライアント(C2)はNAT)の背後にあり、サーバー(犠牲者)との通信を開始します。
C2サーバー-被害者クライアント
これは、ほとんどの人がRATについて考えるときに考えていることかもしれません。被害者ボットからの着信接続をリッスンするC2サーバーがあります。遭遇するほとんどのマルウェアレポートは、動的C2サーバーアドレスを生成するアルゴリズムについて説明します。これらのタイプのマルウェアは、このタイプのアーキテクチャを使用します。
なぜ一方が他方よりも高いのですか?
まあ目標は、選択されるアーキテクチャを決定します。大量のフィッシングメールを送信し、被害者が接続するのを待つ場合。 C2サーバーと被害者クライアントが必要になります。ただし、組織へのバックドアが必要な場合、犠牲サーバーとクライアントC2は、ファイアウォールルール、内部ネットワークアーキテクチャ、パスワードのリセットなどの変更によって接続が閉じられず、永続的なバックドアができることを意味します。
これは関係者全員の役割についてのすべてです。あなたがウェブサイトを閲覧していても、あなたが知っているそのカフェからマフィンを買っていても、結果は同じです。
サーバーは、より強力なデバイスではなく、リクエストを「処理する」ものです。クライアントはまさにそれであり、サービスを提供する必要がある要求を行うクライアントです。あなたはマフィン、またはウェブサイト、またはこの場合はリモートアクセスを要求するときのクライアントです。
クライアントとして、「ここにマウスを移動」、「これを私に開いて」、「今何が見えますか」と尋ねます。次に、サーバーservesあなたが要求したものを送信します。 これは、すべてのRATアプリケーションにおける関係です。
それは良くも悪くもありません、それはあなたが妥協するマシンが公にルーティング可能なIPを持つかどうかに依存します。
彼らが持っている場合、彼らが聞いてサーバーであることの利点は、どこからでもそれらに接続できることですおよびコントローラ/コマンドおよび制御コンピュータは常にそれらに接続する必要はありません-それ実際のコマンドがある場所でのみ彼らと話します。
ほとんどのホームコンピューターのようにターゲットコンピューターにパブリックルーティング可能なIPがない(NATの背後にある)場合は、コントローラーコンピューターがサーバーであり、侵入先のコンピューターがそれに接続するのが適切ですが、卑劣なことの短所(永続的な発信接続は、最初のシナリオのようなまれな着信接続よりも気付く可能性が高い)およびコントローラーコンピューターは、同じIPで常に到達可能である必要があります-突然変化した場合ボットの制御を取り戻し、新しいIPを伝えるために古いIPに戻る方法はありません。別の方法でボットに連絡しない限り、ボットは失われます。
個人的には、これにはP2Pプロトコルを使用することをお勧めします-ボットが相互接続されてコマンドをリレーするTorと同様に、障害の中心点がなく、単一のボットに到達するだけで全体を制御できますボットネット、それはあなたのコマンドを他のすべての人に中継するからです。可能であれば、署名、暗号、ステガノグラフィを使用してトラフィックを隠し、誰か(セキュリティ研究者など)が有効なコマンドを偽造してボットネットを制御するのを防ぎます。