ActiveX(ActiveXObject)


DESC ActiveXObect 経由で実行できる Browser から実行するなら許可が必要 TIP IE 設定
ツール > インターネットオプション > [ セキュリティ ] > イントラネット > [ レベルのカスタマイズ ] 安全だとマークされていないActiveXの実行」の初期化と実行 (.) ダイアログを表示 // ON (.) 無効にする (.) 有効にする // こらでもOK
WARNING Security 上非常に危険なので, OFF にすべき
var sh = new ActiveXObect( "WScript.Shell" ); // Commandline を記述することで, 任意の Program を実行 sh.run( "notepad" );



ActiveXObject.とは


DESC 機能単位にまとまったプログラムの部品 Script は各機能の 糊付け の役割をはたす 自作の ActiveXObject も作成でき Script 内から利用できる


こんなことができる


よくもわるくもこんなことできる
(.) Internet 経由で, 遠隔マシンの操作ができる (.) ActiveWindow を最大化することができる. (.) ActiveX に準拠した 4 つのスクリプト言語という言い方があるらしい



Windows標準でインストール済みのものとInternet経由で取得できるものがある





どのくらい危ないかやってみる





C:/直下にファイルを作成して消してみる


Local に次の HTML をつくる これを IE で開いて Button を押すと C:/foobar がつくられる
<head> <script type="text/javascript"> <!-- function test() { var fs = new ActiveXObject("Scripting.FileSystemObject"); // C:/ の直下に "foobar" というディレクトリをつくる fs.CreateFolder( "C:/foobargoo" ); // 消す //fs.DeleteFolder( "C:/foobar" ); alert("ディレクトリを作成しました"); } // --> </script> </head> <body> <input type="button" value="OK" onclick="test()"> </body>
Shell Object を作成して, 任意のコマンドを実行する
<head> <script type="text/javascript"> <!-- function test() { // Shell を操作する ActiveXObject を作成 var sh = new ActiveXObject("WScript.Shell"); alert("RemoteDesktop を起動します"); // RemoteDesktop 起動 sh.Run("mstsc"); // 不正な Program が実行される sh.Run( "xxx.exe" ); } // --> </script> </head> <body> <input type="button" value="OK" onclick="test()"> </body>



危険なことがわかったのでセキュリティ対策をする


DESC


セキュリティゾーンの設定をかえる


上の HTML は IE で開くと警告がでる 知らずに使ったら危ないよってこと この警告レベルは変更できる ( Local での実験は反映されない http://hostname/test.htm) POINT Virus は HTML( Program ) という形式で提供もされる 10行ほどのスクリプトを含む HTML IE で閲覧すると,とんでもないことが起こる XPマシンに バックドア が仕掛けられてしまう 攻撃者がインターネット上に用意したサーバから「bkdr.exe」という実行形式のファイルを DL 「Welcome!」というメッセージをポップアップ表示 OK を押すと,bkdr.exe が実行される ファイルがバックドア・プログラムなら,冒頭の悲劇が起こる マシンはインターネットから,攻撃者に好きなように操作されることになる スクリプトがローカルにある ActiveX コンポーネントを呼び出して その機能を利用することができるから Windows 98以降のWindowsは, POINT Script から汎用的に作成してよびだすのはこれ ファイルやレジストリ操作 プログラムの実行 データベースへのアクセス などが可能なActiveXコンポーネントを標準で備えている スクリプトでアプリケーションを操作もできる MS Office スクリプトでOutlookを操作し,メールを送ることもできる  HTML中にローカルのActiveXコンポーネントやOfficeの機能を利用する不正なスクリプトが含まれていると Webにアクセスしただけで 攻撃者の思い通りにパソコンの設定を変更されたり ファイル操作やメール送信を実行される インターネットから 怪しげなActiveXコンポーネントをダウンロードすることもない気づく可能性も低い IEのデフォルト設定では禁止 攻撃をすべてのユーザが受けるわけではない このスクリプトがデフォルト設定のIEで動かない IEのセキュリティ設定の VBScript, JScript(JavaScriptのMicrosoft版)の実行の可否を決める
[.] [ ローカルにあるActiveXコンポーネントを実行できるかを決定する ] [.] [ スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行 ]
「アクティブ スクリプト」  IEではこれらセキュリティの設定を 上から順に Security が厳しい
「制限付きサイト」 // 一般のWebサーバ 「インターネット」 // イントラネットのサーバ用 「イントラネット」 // ユーザが明示的に指定した信頼できるサイトと信頼できないサイト用の設定 「信頼済みサイト」 : *.xxx.xxx とか追加されている
という四つのゾーンに分けて決めている [レベルのカスタマイズ] : ↑の 4 カテゴリを詳細設定するときに使う インターネット 上にあるWebサイトをアクセスするとき 信頼済み/制限付きサイトに登録してないなら「インターネット」の部類になる IEのデフォルトはこれ
[.] インターネット」ゾーンで「アクティブ スクリプト」は許可する [.] 安全だとマークされていないActiveXの実行」は許可しない
デフォルトでは ローカルのActiveXコンポーネントが動かず不正なスクリプトが実行されない インターネットを利用していると,設定が甘くなる可能性がある いったん甘い設定をしたら見直すことはほとんどない 「安全マークのないActiveXの実行」を許可するように求めているサイトは山ほどある 検索サイトでこの設定を推奨しているサイトを調べると 100以上のサイトが容易に見つかる Webページを作る側が問題に対してルーズかがわかる クロスサイトが危ない  このほか,クロスサイト・スクリプティングと呼ぶ手法を使い ローカルのActiveXコンポーネントを強制的に実行させられるケースも考えられる クロスサイト・スクリプティングとは Webサーバが文字列を適切に処理していなとできる攻撃 信頼済みのWebサーバがこの欠陥を抱えていた場合 攻撃者の用意した不正なスクリプトが「信頼済みサイト」ゾーンの設定で動き ローカルのActiveXコンポーネントが使われる恐れがある POINT  IEのデフォルトでは 「信頼済みサイト」は「安全マークのないActiveXコントロール」の実行が「ダイアログに表示する」 「安全マークのないActiveXコントロール」が実行される前に確認メッセージが出る ( 普段よく見るメッセージ ) メッセージの意味はわかりにくいので ユーザは深く考えずに「はい」を押す スクリプトとローカルのActiveXコンポーネントが動く ActiveXコンポーネントを悪用した不正なWebページやウイルスは存在する  ローカルのActiveXを使った不正アクセスで有名なのが メディアゲートが運営するオークション・サイト「プライスロト」にアクセスしたユーザの パソコンが起動不能になったというもの 原因はプライスロトのページが何者かに改ざんされ 不正なスクリプトが埋め込まれていた このスクリプトはWSHを使用し,起動に必要なレジストリを改ざんするもの IE5.5が抱えるセキュリティ・ホールを突き 「安全マークのないActiveXコントロールの実行」が許可されていなくても レジストリを改ざんすることができた ウイルスの実体はスクリプトを埋め込んだ HTML メール Outlook はHTMLメールの解釈にIEのコンポーネントを使っている ( Virus も Program ということ ) IEと同様にHTMLメールにスクリプトを埋め込むことで ActiveXコンポーネントの実行が可能 感染するとメールの署名ファイルをVBScriptで記述したウイルス・ファイルに書き換える ファイル操作にFSOを利用する ユーザが作成するメールの書式がデフォルトでHTMLメールになるようにレジストリをかえる 感染したマシンを使ってメールを送るごとに,ウイルス(署名部分)付きのメールを送る IEではなく,WSH上で直接動くスクリプト・ウイルスもある これらを若干改造してHTMLに埋め込めば,Webページを見ただけで同様の動作を起こすことができる。 「I Love You」と書かれたメールに付いてくる添付ファイルを開くと感染し Outlookのアドレス帳の全ユーザにウイルス付きメールを送信する パソコン内のファイル削除という破壊活動もする OutlookのActiveXコンポーネントと Windowsが標準で持つファイルを操作可能なActiveXコンポーネントなどが利用されている WSHを使って動くプログラムにNetlogと呼ばれるウイルスがある 実行すると適当なIPアドレスを生成, ネットワーク上でCドライブを共有しているマシンを探す 見つかれば,Jドライブとしてマップする 加えて,スタートアップ・フォルダにウイルスを登録する 破壊活動はしない 問題 は IE がローカルのActiveXコンポーネントを呼び出し その機能を利用できることが原因  ActiveXはインターネットに関連する技術の総称だったが COM(Common Object Model)を使って構築された技術をActiveXといい ほぼ COM と同じ意味でいわれる ActiveXコンポーネントとは機能単位にまとまったプログラムの部品 プログラマはこれらコンポーネントを呼び出すことで, OS の機能を簡単に利用できる レジストリを書き換える場合を例にすると 「レジストリのこの部分のこのキーの値を『A』という値にする」 を ActiveXコンポーネントに依頼するだけ


WindowsはActiveXコンポーネントの塊


スクリプト実行環境WSH(Windows Scripting Host) ファイル操作用のFile System Object(FSO)以外に データベース・アクセス用のADO(ActiveX Data Objects) ディレクトリ・アクセス用のADSI(Active Directory Service Interfaces)などの ActiveXコンポーネントも標準で備えている POINT 標準のものもあるし, 特別に追加するのもある Office, 一太郎 アプリケーションもActiveXコンポーネントを備える -> ということは 遠隔操作できるのか ActiveXコンポーネントは,IEからスクリプトの中からよばれる IEは標準でVBScript,JScript の二つのスクリプト・インタプリタを持つ POINT Browser が解釈して実行してくれる どの言語で解釈するかはタグの中にある「<SCRIPT LANGUAGE="○○">」の○○部分で スクリプト内でActiveXコンポーネントを使うように宣言したすると IEがそのコンポーネントを呼び出して処理を依頼する IEは DL してきたActiveXコンポーネントを呼び出して処理を依頼することもできる フォルダにダウンロードしたコンポーネントを呼べる C:\WINDOWS\Downloaded Program Files( Windows NT/2000/XP ) ActiveXコンポーネントはEXEファイルなどと同様にマシン上で直接実行されるバイナリ EXEファイルと同様の操作がOSに対して可能である POINT Exe なのか ( DLL ) と同等のものと考えればいい ローカルにあるものだけではなく, 新規に DL もできる ダウンロードした ActiveX が悪意あるプログラムなら バックドアを開けたり OSの各種設定を変更もできるため、不用意にすると危険


Browser.は実行前に認証すみかどうかチェックする


IEは無条件にActiveXを呼び出し,その機能を利用しているわけではない 適切なセキュリティ設定がされていれば 不正なActiveXを呼ばない仕組みを用意 この仕組みはローカルにインストールされている ActiveXコンポーネントとダウンロードしてきたActiveXコンポーネントで異なる  ローカルにインストールされているとき ActiveXコンポーネントを起動する前に レジストリ値を参照して ActiveXコンポーネントを起動してよいかを決定する IEでは,このレジストリ値を「安全マーク」という -> ならここで はじかれるのか... 例 レジストリ・エディタで「Tabular Data Control」と呼ばれるデータ整形用の ActiveXコンポーネントのパラメータが書かれた部分を表示させたものである ActiveXコンポーネントごとのレジストリの中にある HKEY_CLASSES_ROOT\CLSID Implemented Categories/7DD95801-9882-11CF-9FA9-00AA006C42C4」(Safe For Scripting) /7DD95802-9882-11CF-9FA9-00AA006C42C4」(Safe For Initializing) というキーがあれば,IEは「安全マーク付き」と判断 このキーがなければ安全ではないと判断 IEのセキュリティ設定で 「スクリプトを実行しても安全だとマークされていないActiveXコントロールの初期化とスクリプトの実行」 が許可していれば この認証機構はスキップ DL したActiveXコンポーネントの場合は,ActiveXコンポーネントが ディジタル証明書を持っているかどうかで認証する 証明書を持つときActiveXコンポーネントが改ざんされていないか調べてから実行 POINT これを CheckSum という  証明書の発行は,米Verisign社などの証明書発行機関に依頼する 会社の登記情報など身元を提出/証明する必要がある 犯罪者は一般に自分の身元を知られたくない 悪意ある証明書付きのActiveXコンポーネントは作りにくい 認証機関はプログラムの善悪は判断しないため 危険なプログラムでないという保証はない  IEのセキュリティ設定で「未署名のActiveXのダウンロード」を許可すると 証明書なしのActiveXコンポーネントをチェックせずに実行してしまう


信頼済みサイト.ゾーン


Internet Explorerのセキュリティ・ゾーンの一つ 安全であることがわかっているサイト用のゾーンで デフォルトのセキュリティ・レベルは「低」 POINT ローカルファイルを登録するには 共有フォルダ を作成してから登録する必要がある。 そのため 信頼済みサイト・ゾーンにWebサイトを追加すると そのWebサイトからの DL/実行 には警告の表示がされず実行時の制限もない TIP ここに指定した Site ( page | PC ) からの ActiveXObject の実行が許可される 信頼済みサイトへの設定手順 site を追加する WebSite のところに 以下のような ( site == Domain )を追加