(Mastodon)登録スパムとその傾向 2020年7月

はじめに

この記事は、わたしが運営しているMastodonサーバに来た登録スパムの情報をまとめたものです。
承認制の小規模サーバであるため、母数が少ないです。

2020年7月においては、合計144件の登録スパムを観測しました。


パターン分析

大きく分けて2種類に分けることができました。

パターン1)純粋な宣伝

昔ながらのスパマーという感じの登録です。
登録コメントに宣伝文やURL等を書き込み、登録するものです。


パターン2) ランダムなユーザ名、登録コメントを使うもの

これが一番多く観測されました。

8~16文字のランダムなアルファベットで構成されたユーザ名、登録コメント、実在すると思われるメールアドレスを使った登録です。
メールが未確認のまま放置されるのも特徴です。


メールドメイン分析

メールドメイン部分を集計してみました。

画像1

※1件以下のものは「その他」にまとめてあります。

Gmailが圧倒的に多いです。

登録元国分析

IPアドレスを用いて、どの国からの登録が多いか集計してみました。
(詐称している可能性もあるので信頼性は微妙です)

画像2

※1件以下のものは「その他」にまとめてあります。

ベトナムが多いようですが、世界中に分散しています。


登録日時分析

日ごと・時間ごとで集計してみました。

画像3

若干の偏りが見えますが、母数が少ないのであまり参考にならないかもしれません。


行動分析

Webサーバのログを参照し、スパマーがどのような操作を行ったのか追跡しました。

パターン1) 宣伝行為をするもの

シンプルに登録だけしていくパターンもあれば:

XXX.XXX.XXX.XXX - - [30/Jun/2020:10:18:40 +0900] "GET /about HTTP/1.0" 200 19254 "https://example.jp/about" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" "-"
XXX.XXX.XXX.XXX - - [30/Jun/2020:10:18:42 +0900] "POST /auth HTTP/1.0" 302 97 "https://example.jp/about" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" "-"
XXX.XXX.XXX.XXX - - [30/Jun/2020:10:18:42 +0900] "GET /auth/setup HTTP/1.0" 200 9590 "https://example.jp/auth/setup" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134" "-"

ちゃんとメール確認まで行うパターンもありました:

XXX.XXX.XXX.XXX - - [05/Jul/2020:20:48:29 +0900] "GET / HTTP/1.0" 301 162 "http://example.jp/" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:48:30 +0900] "GET / HTTP/1.0" 302 92 "https://example.jp/" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:48:33 +0900] "GET /about HTTP/1.0" 200 19254 "https://example.jp/about" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:48:36 +0900] "POST /auth HTTP/1.0" 302 97 "https://example.jp/about" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:48:37 +0900] "GET /auth/setup HTTP/1.0" 200 9576 "https://example.jp/auth/setup" "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:51:06 +0900] "GET /auth/confirmation?confirmation_token=XXXXXXXX-YYYYYYYYYYY HTTP/1.0" 302 99 "https://example.jp/auth/confirmation?confirmation_token=XXXXXXXX-YYYYYYYYYYY" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:51:07 +0900] "GET /auth/sign_in HTTP/1.0" 200 11426 "https://example.jp/auth/sign_in" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:51:10 +0900] "POST /auth/sign_in HTTP/1.0" 302 87 "https://example.jp/auth/sign_in" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:51:11 +0900] "GET / HTTP/1.0" 302 96 "https://example.jp/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:51:13 +0900] "GET /auth/edit HTTP/1.0" 200 19257 "https://example.jp/auth/edit" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [05/Jul/2020:20:51:14 +0900] "GET /auth/confirmation?confirmation_token=XXXXXXXX-YYYYYYYYYYY HTTP/1.0" 301 162 "http://example.jp/auth/confirmation?confirmation_token=XXXXXXXX-YYYYYYYYYYY" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36" "-"

登録に用いられた文面から見て、上記2つは異なるスパマーから発信されたものだと考えられます。

パターン2) ランダムなユーザ名、登録コメントを使うもの

XXX.XXX.XXX.XXX - - [15/Jul/2020:21:54:51 +0900] "GET / HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:54:54 +0900] "GET / HTTP/1.1" 302 117 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:54:56 +0900] "GET /about HTTP/1.1" 200 6900 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:54:57 +0900] "POST /auth HTTP/1.1" 302 120 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:54:58 +0900] "GET /auth/setup HTTP/1.1" 200 4021 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:54:59 +0900] "POST /auth HTTP/1.1" 302 120 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:00 +0900] "GET /auth/setup HTTP/1.1" 200 4072 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:01 +0900] "POST /auth/sign_in HTTP/1.1" 302 120 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:02 +0900] "GET /auth/setup HTTP/1.1" 200 4022 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:04 +0900] "POST /auth/sign_in HTTP/1.1" 302 120 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:05 +0900] "GET /auth/setup HTTP/1.1" 200 4026 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:06 +0900] "GET / HTTP/1.1" 302 119 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:08 +0900] "GET /auth/edit HTTP/1.1" 200 6987 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:09 +0900] "GET /auth/sign_out HTTP/1.1" 302 119 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:10 +0900] "GET /auth/edit HTTP/1.1" 200 6983 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:11 +0900] "GET /auth/confirmation/new HTTP/1.1" 200 4134 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:15 +0900] "GET /auth/password/new HTTP/1.1" 302 114 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:16 +0900] "GET / HTTP/1.1" 302 119 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:17 +0900] "GET /auth/edit HTTP/1.1" 200 7024 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:18 +0900] "GET /auth/sign_out HTTP/1.1" 302 119 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:19 +0900] "GET /auth/edit HTTP/1.1" 200 6987 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:21 +0900] "GET /auth/confirmation/new HTTP/1.1" 200 4129 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:30 +0900] "GET / HTTP/1.1" 302 119 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:30 +0900] "GET /auth/edit HTTP/1.1" 200 6991 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:31 +0900] "GET /auth/sign_out HTTP/1.1" 302 119 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:34 +0900] "GET /auth/edit HTTP/1.1" 200 6987 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"
XXX.XXX.XXX.XXX - - [15/Jul/2020:21:55:36 +0900] "GET /auth/confirmation/new HTTP/1.1" 200 4135 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36" "-"

これは大変特徴的で、特筆すべきものだと感じました。

1) トップページより登録を行う
2) ログインする
3) パスワードの再発行を行う

という動きをしています。


考察

目的について:

単純な宣伝であればある程度理解はできるものの、ランダムな文言で登録していくものについては目的が分かりません。

しかし、登録フォームから登録を行っていることや、パスワード再発行を行うことができるといったことから、Mastodon向けに特別にカスタマイズされたものか、単純にリンクを辿って機械的に登録を行う悪質なBotであると推測できます。

運営者を精神的・金銭的に追い詰めるためなのか、無関係な第三者に確認メールを送りつけてスパム行為の片棒を担がせたいのか、はたまた愉快犯か…。

なおMastodonでは、メールでの本人確認ができないアカウントついては、何日か経つと自動消滅するようになっています。
そのため、放置しておいても問題ないといえばないですが、無駄にメールが送られるため何らかの対応を行うに越したことはないと考えます。


登録元国について:

詐称されている可能性はありますが、ログを読む限りは世界中から行われているようです。
それなりに規模の大きいボットネットが用いられているのではと推測されます。


登録に用いられたメールアドレスについて:

登録には主にフリーメールが用いられていましたが、プロバイダ系や企業系のドメインも含まれていました。
おそらくどこからか流出したリストを用いていると考えられます。
(CleanTalkで調べたところ、他サイトでもそれらのメールアドレスで同様の被害が報告されているようです)


これらのスパムへの対応について:

一般的には、reCAPTCHA等導入し、Botか否かを判断するところです。
しかし、MastodonにおいてはreCAPTCHA等の導入が容易ではなく(改造が必要)、おそらく今後も公式にサポートされることもないと思われるため
Webサーバアプリケーション側で特定のIPレンジからの新規登録のみを拒否するという方法を採るしかないように思えます。

今後メジャーになるにつれ、同様のスパムも増えていき、それにより管理上のコストも増大してくことが考えられます。
デフォルトで(reCAPTCHAに限らず) 何らかのスパム対策ツールの導入に対応して頂きたいところです。


(了)




この記事が気に入ったらサポートをしてみませんか?