29
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TwitterBotを悪用したDDoSまがいの攻撃

Last updated at Posted at 2014-07-16

ことわり

  • ここで扱う被害はネットワークの機能停止ではなく、 メンション欄の機能停止 を指します。つまり、一般的なDDoSの定義と大きく異なり、あくまでこれはTwitter上における攻撃を形容したものだと考えてください。
  • この記事は攻撃を助長する目的で執筆していません。私の知り合いだけで3名もの方がこの攻撃の被害に遭われており、一方Bot製作者側では対策が為されていることが少ない…という現実を踏まえて、TwitterBot製作者側での対策を促すことが目的です。まぁゼロデイ晒しでも何でもないので特にここを気にする必要はないかもしれませんが。

攻撃手法

※ ここで登場するスクリーンネームは実在するものとは一切関係ありません。

立場 スクリーンネーム
攻撃者 @anonymous
(多くの場合は使い捨て)
被害者 @target
ボット @A @B @C ... @Z
(増えれば増えるほど悪質)
  1. 攻撃者が、攻撃用アカウントとして @anonymous を作成する。
  2. 攻撃者が、スクリーンネーム @anonymous名前@target を含むように名前を変更する。ここでは @target死ね に変更したとする。
  3. 攻撃者が、ボット @A @B @C ... @Z をフォローする。
  4. 攻撃者が、ボットが反応する言葉をツイートする。ここでは おやすみ であるとする。
  5. 各BOTが、 @anonymous に対して一斉に返信を始める。
  6. @anonymous のメンション欄は当然BOTからの反応で埋まるが、BOTが名前を含めて返信するタイプの場合には @target のメンション欄も同時に埋めてしまう

@target のメンション欄が埋まってしまう一例です。

@Aによるツイート
@anonymous @target死ねさん、おやすみなさい!
@Bによるツイート
@anonymous @target死ねさん…もうそろそろ寝たほうがいいよ…
@Cによるツイート
@anonymous 寝ようよ…@target死ね…

...

@Zによるツイート
@anonymous 【早く】@target死ね【寝ろ】

対策

TwitterBot製作者

相手の 「名前」「現在地」「プロフィール」「ツイート本文」 などの情報をBotのツイートに引用するときは、必ず @ 除外 しましょう。

被害者

特定のアカウントのみに攻撃を受けている場合

@anonymous を本文中に含むツイートを全て ミュート しましょう。公式APIとしてはまだキーワードミュート機能は実装されていませんが、非公式アプリではこの機能が独自実装されている場合があります。

なお、この方法だと @anonymous1 @anonymous2 などもミュート対象になってしまいます。これを避ける場合は、 @anonymous(?![A-Za-z0-9_]) のように 正規表現 を用いる必要があります。

複数のアカウントからの攻撃を受けている場合
いたちごっこが続いている場合

上記と同じようにミュートしたいところではありますが、こちらでは 正規表現 を使う必要があります。この時点で、正規表現対応のミュート機能が使える非公式アプリに限られることになります。

…とは言っても、相手が作成するスクリーンネームに一定の規則性を見つけなければ、正規表現を書くことは難しいでしょう。そして、規則性など全く無い場合がほとんどだと思います。従って、本文だけでミュート対象であるかを判断するのは困難です。他の要素を対象に含める必要があります。

複合ルールが使える

以下のルールを AND条件 として設定してください。

  • [Bb][Oo][Tt]「スクリーンネーム」「名前」「プロフィール」 のうち少なくともどれか1つにマッチする。
  • ^@(?![Tt][Aa][Rr][Gg][Ee][Tt](?![A-Za-z0-9_]))[A-Za-z0-9_].*?(?:@|@)[Tt][Aa][Rr][Gg][Ee][Tt](?![A-Za-z0-9_])「ツイート本文」 にマッチする。

もし、正規表現のオプションで「大文字小文字を区別しない」といったものがある場合は、もう少しシンプルに書けるでしょう。

  • bot「スクリーンネーム」「名前」「プロフィール」 のうち少なくともどれか1つにマッチする。
  • ^@(?!target(?![a-z0-9_]))[a-z0-9_].*?(?:@|@)target(?![a-z0-9_])「ツイート本文」 にマッチする。

複合ルールが使えない

上記のうちどちらかのルールを設定することになりますが、どちらを採っても巻き添えは発生します。前者を採れば全てのBotを、後者を採れば自分が先頭ではない全ての複数メンションをミュート対象にしてしまうことになります。自分が機能不足のアプリを使用している以上、多少の妥協は必要です。

29
28
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
29
28

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?