MakeMeLaughNow-Facebookでの新世代ワームの分析(翻訳)

最近のトピックで、彼らは誰かが翻訳したらいいと願っています。 私はテキストを見ました-それはそれほど多くないようです。 したがって、それが面白い人に見て...


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ページの変更、リダイレクト、非表示フォームの送信などができないようにする)を防ぐために、「 サンドイッチ 」されています。 この特定の分析では、次の重要事項に注意する必要があります。



この投稿で使用されているすべてのコードは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に連絡してメッセージを送信し、ステータスを更新します。 繰り返しますが、 我々は正しいです。 プロセス自体:


おわりに



ここで確認できるのは、モバイルサイトが通常のサイトと同じ認証を使用しているが、「スヌーピング」メカニズムによって保護されていない場合にFacebookの脆弱性を悪用するアプリケーションです。 したがって、ステータスを更新する許可を要求する代わりに、アプリケーションはDOMからデータセッションをサイレントに受信し、touch.facebook.comを介して要求を送信します。 Facebookサイトでエラーが使用されていることは明らかです。 レッスン- モバイルサイトを忘れないでください

オリジナルはこちらです。

UPD。:コメントで示唆されているように、パーサーはリンクを少し調整するので、リンクをたどり、リンク先を確認して修正します。

PS翻訳の誤りに気づいたら、ロシアのプログラマーの語彙を完全に話せないことを教えてください。

Source: https://habr.com/ru/post/J103086/


All Articles