MoqHaoのiOS用ランディングページの難読化処理

はじめに

こんにちは、morimolymolyです。
MoqHaoの検体をfuckする話はアクティブディフェンス研究所でネタにしましたが、最近はそのインフラについて調査を進めています。
blog.activedefense.co.jp

また、感染端末の電話番号をどのように悪用するのかも調査をしています。
blog.activedefense.co.jp

今回はランディングページに焦点を当てようと思います。

ランディングページ概要

ランディングページには大きく分けてPC、AndroidiOSの3つがあります。

SMSで配信されるURLについて、UserAgentを識別して分岐していきます。

PCには404を返し(最近の話ですが)、Androidには配信されるURLにある文字列をパスとして付与したページへ、iOSはduckdnsで取得されたページへ遷移していきます。

PC: 404
Android http://配信URL/特定の文字列
iOS hxxp://hogehoge[.]duckdns[.]org

難読化処理

さて、iOSのランディングページには難読化処理が施されており、IoCを隠す意図があると考えられます。
以下が実際に取得できたランディングページのソースコードです。
moqhao-ios-landing-page.html · GitHub

コードとしては単純で配列にある文字列の最後の要素をkeyとしてXORしてevalするだけです。

すると以下のようなコードが現れ、これを実行します。

alert("APP Storeアカウントは安全異常があるので、再度ログインしてください。");
location.replace('hxxp://yrdlaebbqt.duckdns.org');

たしかにIoCは一見すると取りづらいと思いますが、自動化の手法としてSeleniumなどを用いればかんたんに突破できます。

おわりに

MoqHaoの用いるランディングページの概要とその難読化処理を解説いたしました。
より発展した難読化処理が実装されるだろうことは予見されるため、一応備忘録的に記事を書いてみました。