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 )を追加