web-dev-qa-db-ja.com

リモートアクセストロイの木馬/バックドアソフトウェアはどのように機能しますか?

RATはどのように機能しますか?感染したWebサイトにアクセスすると、ブラウザが自動的にPCにトロイの木馬をダウンロードする可能性があることを理解しています。それは実行され、コンピュータに自動インストールされますか?

JavaScriptがどのようにして悪意のあるコードを実行し、RATを私たち/訪問者のPCに自動的にインストールし、彼らのPCにアクセスできるのかわかりません。

このように機能しますか?

  1. ハッカーは、exeファイルをエクスプロイトサーバーにアップロードしました。
  2. サーバー/ハッカーを訪問する訪問者は、影響を受けるWebサイトのリンクを特定の被害者に送信します。
  3. 悪意のあるコードはjsファイルに書き込まれ、jsファイルは訪問者のPC(C:\ users\pcname\AppData\Local\Temp)に自動的にダウンロードされます
  4. Jsファイルは自動的にRATプログラムをインストールしますか?
  5. RATプログラムは、訪問者がオンラインになるたびに、被害者のIPアドレスとユーザー名/パスワードをハッカーに自動送信しますか?
2
cww

JavaScriptがどのようにして悪意のあるコードを実行し、RATを私たち/訪問者のPCに自動的にインストールし、彼らのPCにアクセスできるのかわかりません。

Javascript自体はできません-javascriptの実装では、通常、ローカルシステムへのアクセスが非常に制限されています。これは、すべてが設計どおりに機能することを前提としています。

ソフトウェアシステムはめったに行いません。ソフトウェアの部分が大きいほど、バグが侵入する可能性が高くなります。これらのバグのいずれかが原因で任意のコードを実行できる場合、それは問題です。

明確にするために、この任意のコードは通常、実際には特別に細工されたプログラムへの入力です。たとえば、次のようなデータを読み取る.imageレンダラー(目的のために作成したファイルタイプ)にバグがあると仮定します。

FF 00 99 00 00 00

不明な理由から、このRGBコードを文字列に格納するなど、おかしなことをすることにしました。文字列は00で終了し、実際には1文字しかないと想定しています。わからない、多分私はバジリオンカラースクリーンを期待している。これは悪い例かもしれません。遅いです。私と一緒に耐えなさい。とにかく、レンダラーで標準の文字列関数を使用して、その情報をファイルからコピーすると仮定します。さて、有効なファイルを送信すると、すばらしいです。ただし、攻撃者として、次のようなファイルを送信する可能性があります。

FF 00 99 11 11 11 11 11 11 <lots of 11s> 11 11 <some code> 00

どうすればそのファイルを送信できますか?簡単です。 bog標準のimgタグを使用して、Webページのhtmlにそれを含めます。その後、ブラウザーは画像を開き/レンダリングし(jpg、pngなどの場合と同様)、壊れた危険なコードがそのバッファーオーバーフローを喜んで実行します。 cssを介してこっそりとdisplay: none;することさえあるかもしれませんが、ブラウザがまだそれを処理している場合に限られます。

この時点で、<some code>の命令が実行され、必要なことをすべて実行できます。通常、これはある種の実行可能ファイルをダウンロードして実行します。これは、エクスプロイトが小さくて済むだけで十分であり、エクスプロイトが機能していれば、より肉厚なものをダウンロードできるということです。

そこから、「ペイロード」は特権の昇格とバックドアのインストールを開始できます。バックドアができることと、それがどのように機能するかについて、すでに良い答えがあります。

私は、誰もがすべきではない非常に単純な間違いで画像ファイルを作成することを選択しました。ただし、現実の世界には、非常に複雑な結果をもたらすあらゆる種類のメディアがあります。

  • JavaScript-プログラミング言語であり、解析が必要です。
  • PDF-ベルとホイッスルを備えたドキュメント形式。JavaScriptも含まれます。
  • PNG/JPG/GIF-これらのバグはまれであることを期待していますが、それが起こったと思います(リモート実行の脆弱性が原因かどうかはわかりません)。
  • より複雑な映画フォーマット。 MP4など.
  • 閃光。

ここで、2つのシナリオが少し複雑になります。

  • Javaアプレットを使用すると、Javaで任意のコードを実行できます。ここでは、3つの結果が考えられます。
    • 何らかのメカニズムで署名ダイアログの表示を回避できるため、ユーザーの操作なしでクラスをロードして、コードをダウンロード/実行することができます。
    • クラスローダーまたはjarパーサーで、悪用可能なバグを見つけることができます。
    • Java言語および/またはランタイムにユーザーが使用するように説得できるいくつかのバグがあります。
  • ActiveXコントロール:これらは、「特別な魔法」を備えたDLLまたはEXEです。これらの1つがオープンシーズンです。ここでの唯一の障壁は、有効な署名、ソーシャルエンジニアリング、またはバグを取得することにより、実行する前に取得する必要があるオーセンティケード(コード署名)画面を回避することです。

基本的に、ブラウザー環境は信じられないほど複雑で、信頼できない入力をすべて読み取って正しく処理する必要のある可動部分がたくさんあります。

さて、Javascriptはどこに登場するのでしょうか。まあ、それ自体は脆弱性を含まないかもしれませんが、確かに 多くの有用なクライアント側の情報を列挙 して、送信する脆弱性を決定することができます-単なるブラウザのバージョンよりもはるかに。これは、攻撃者のランディングページの一部である可能性があります。たとえば、エクスプロイトを実行できるかどうかを判断するためです。

今、ロリーのその小さなコメント:

ポイント5は、攻撃者が実行できることを劇的に過小評価しています。

攻撃者が何を実行できるかを大げさに、本当に、非常に冷静に(現在はWordです)。リモートアクセス型トロイの木馬はPCを完全に制御できるため、攻撃者は次のことを行うことができます。

  • 他のシステムへの攻撃を実行または調整するために、オンデマンドでさらにコードをインストールします。これは一般にボットネットの一部と呼ばれます。
  • 現在のシステムから興味深い見た目の情報を収集します。
  • 物事にダメージを与えて回ってください。最近ではかなり珍しい。
  • 攻撃者が別のシステムを悪用できる可能性が高い任意のメディア/メディアにペイロードをドロップします。接続されているすべてのUSBドライブに感染します。

可能性はかなり無限です。最初と同様に、最初のポイントはかなり可能性が高いです。

私はtl; drを持っていますか?

Javascriptは通常、ターゲットシステムで偵察を実行するために使用されます。それ以上に、任意のコード実行を許可するエクスプロイトがブラウザまたはそのプラグインの1つに存在する必要があります。そこから、コンピュータにさらに情報をダウンロードするように説得することができ、そこから、コンピュータはカキです。

4
user2213

RATは通常、クライアントとサーバーの2つのプログラムで構成されます。サーバーは被害者で実行されることを目的としたプログラムであり、クライアントはサーバーを制御するために使用されるプログラムです。

被害者に感染するには、なんとかして実行する必要があります。たとえば、画像から、またはソーシャルエンジニアリングを通じてコードを実行できるようにする既知の脆弱性を悪用している可能性があります。ブラウザが画像からコードを実行するようにすることは可能ですが(難しい)、これらはバッファオーバーフローと呼ばれますが、それらがどのように機能するかを正確に説明することはできません。

サーバーは被害者で実行する必要があり、被害者のコンピュータに自分自身をインストールするには、そのほとんどが管理者特権を持っているか、これらの特権を取得するためにエスカレートする必要があります。攻撃者は、コンピューターが次回実行されたときに起動することを望んでいるため、オペレーティングシステムを読み込むように構成するには、管理者権限が必要です。

攻撃者がブラウザのバッファオーバーフローを悪用していて、ブラウザが管理者として実行されていた場合、攻撃者は今必要とするもののほとんどを手にすることになります。

サーバーはそれ自体をインストールした後、クライアントと通信して注文を受け取り、被害者のコンピューターでそれらを実行する必要があります。従来のラットは接続を待機(リッスン)していましたが、広く普及しているホームNAT=ルーターであるため、攻撃者がネットワーク内の被害者のコンピューターにポートを転送する必要があり、クライアント側で接続を待つか、IRCなどの他のチャネルを使用して注文を送信します。

2
Kovags