TwitterアカウントをAPI経由で乗っ取られた話

Uncategorized
4-5年前に取った、今は使ってないTwitterアカウントが乗っ取られました。(ちなみに自分は普段からTwitterには書き込んでいません、どんな方法でも。) 結論を言うと、Twitter APIを使うために作ってあったTwitter Appのキーとかトークンとかをソースコード共有サイトに上げちゃってて勝手に使われたというパターンです。
Twitter API経由でプロフ変更、スパムツイートされました。
上げたのは学部生だった数年前なのに今頃…って感じですが、よくあるパターンやらかし、反省。

状態

こんな感じ。プロフを変更され、スパムツイートばんばんしてます。見ると面白いです。株の話をしてるみたい。
気づいたきっかけは忘れましたが、アカウント一覧を見たときに知らん女の顔がアイコンになってたのに気づいたんだったかな…。

原因の調査

ツイートの右下にはGetShortUrlの文字があります。これはツイートソースラベルといって、ツイートに使われた手段を表してます。
連携アプリ GetShortURL の詳細をみてみると、ろくに情報がありません。ネットにも公開情報なし。
ログイン履歴はこの連携アプリ以外に怪しいものはなく、アカウント自体のログインパスワードは十分長く推測は難しいもので、(一部分も)使い回ししていないです。 この連携アプリを使ったIPアドレスの地域は、US、UK、Taiwan、Hon Kong, South Koreaなどでした。
ではこのIPアドレスの用途は? いくつかのIPアドレスを調べましたが、ExoneraTorによればTorのIPアドレスではなさそう。じゃどこかの乗っ取られたサーバなのか?といくつかのOSINTサービスで調べましたが、情報が足りずよくわからず。別な調べ方(主にPassive DNSによるReverse Lookup)をしたところ、opengw.netなどがありどうやらVPNっぽいぞとわかりました。DDNS関係のドメイン名もあり、どっかのVPN機能を持つルータが勝手に使われてるのもあるんか?と思わなくもないですが…。 そしてこのTwitter Appはもしや、大学生の頃TwitterAPI使ってクローリングというか情報収集してた時のもの?!そう思って Twitter Developper Portalを見るとビンゴ、昔作った同名のAppがありました。

にしても、使うには4つのキーやトークンが必要になるのですが、いったいどこから漏れたのでしょう?
候補は以下の4つくらいでしょうか。
  1. Twitterアカウントへの不正ログイン
  2. PCにあったクローリングスクリプト
  3. NASへバックアップしてあったクローリングスクリプト
  4. その他
1は、パスワードは前述の通り推測などされにくいものだったので可能性は低そう。Twitterアカウント自体のログイン履歴も見た感じなさそうだし。 2は判断が難しいですが、基本的にMacにしか入れてなかったので、一旦置いときます。 3はNASから直接漏れることはやや考えにくいです、というのもVPN以外は外部へポートを公開してないためです。見てみるとVPNの接続履歴はなく、NAS本体へのログイン履歴も(ローカル含め)怪しいものはありませんでした。 4は…ソースコード共有サイトにクローリング用のコードを上げてました。しかし当時の自分も一応気をつけて、TwitterAPIに使うトークンは消してたはず…. と思って確認してみると、ほとんどのスクリプトでは消してあるのですが、たった1つのスクリプトに4つのトークンやキーが残されてました。 バカすぎ。 ソースコード共有サイトをクロールしてキーだのトークンだのを収集してる人はよくいるらしいので、それに見つかっちゃったのでしょう。 以上。漏れ元がわかってよかった〜。(よくない)
他の人が見れる形でアップロードしたやつは大概、APIキーを混ぜちゃってたとしても無効化済みのキーだけにしてるつもりですが(あんまよくないけど)、今回のはすっかり忘れて無効化をせず有効なままのキーだったので災厄をもたらしたってことでした。

他の被害者

冒頭に上げたスクショの文言「$CEI Hery Bears」でTwitter検索してみます。 すると、似たような文言+画像のTweetが色々出てきます。Tweetの詳細画面を見ると、何かしらのTwitter App経由で書き込まれていました。
つまり、自分と同じようにTwitter App経由で勝手に書き込まれちゃってそうでした。
同じ人がやってそうですね。よく知らんけど。

反省

  • 使ってないアカウント(APIキー含む)を有効なまま放置しない
  • APIキー発行時に不要な権限を与えない(今回はTwitter AppにWrite権限がなければスパムツイート等されなかったはず)
  • ソースコード共有サイトに有効なAPIキーとか間違って置かないように、git-secretsとか使ってシステム的に対策をする
  • 漏洩の可能性を調査しやすいように、ログ管理をする(Netflowログをとる、ログ転送して一括管理する等?)
おしまい!

コメント