佐川急便の偽サイト(フィッシングサイト)を調査した

概要

2018/07末頃から、佐川急便からの不在通知を偽ったフィッシングメール(迷惑メール)が送られ、メールを受け取った一部の人が、
メール内の偽サイト(フィッシングサイト)にアクセスし、自分の電話番号を入力してしまうという事例が発生しているらしいので、調査してみた。

偽の「佐川急便」SMSに新たな手口か--携帯電話番号を窃取 - ZDNet Japan

ドメイン情報

まずドメイン(登録された偽アドレス)を調べて驚きだったのが、佐川急便のフィッシングサイトのドメインは一つだけではなく、他にも200弱のフィッシング用と思われるドメインが存在していた。

さらに驚きだったのが、このドメイン登録者は全部で300近くのドメインを登録しており、その中にはsoftbankやdocomo、auを装ったフィッシングサイトも登録されていた。 このサイトは2018年4月頃に話題になったsoftbankを装ったフィッシングサイトと同じ手法のサイトだった。 当時流行ったサイトの持ち主と同一人物かは不明だが、フィッシングサイトを複数持っていることはわかった。

f:id:cyamax:20180811234535p:plain

f:id:cyamax:20180811234328p:plain

IPとの結びつきを調べると、ドメイン数300弱に対して、IPは40弱ほど結びついていた。

佐川急便のドメインに絞ると、200弱のドメイン数に対してIPアドレスは20弱だった。

フィッシングサイトとして登録されたアドレスの殆どが●●●.comのドメインだった。
.comのドメイン料金は安くはなく、一つのドメインを登録するのに1000円弱かかるので、この登録者はこのフィッシングサイトのドメイン登録料に最低30万円ほど払っている計算になる。

また登録されていたIPアドレスはHiNetとという中国のホスティング会社のものであり、IP自体は台湾を示していた。

ドメインの登録頻度

この登録者名で登録されているドメインを集計してみました(左の数字がその日に登録されたドメイン数)。 一日に何十件も追加しているのがわかります。

# 2018/07/01から2018/08/10までの情報
  32 2018-08-10
   9 2018-08-09
  10 2018-08-08
  34 2018-08-07
  23 2018-08-06
  21 2018-08-05
   1 2018-08-04
  21 2018-08-03
  20 2018-08-01
  21 2018-07-31
  18 2018-07-28
  34 2018-07-27
   1 2018-07-18
   1 2018-07-17
   2 2018-07-16
   1 2018-07-13
   1 2018-07-12
   1 2018-07-11
   3 2018-07-09

サイトの中身

トップページ(index.html)

偽サイトのトップページは本物のSAGAWAのトップページと見た目はほぼ同じ。 異なる部分としては問い合わせフォームの部分が微妙に異なるが、並べてみないとわからない。 f:id:cyamax:20180812004724p:plain

本物のサイトとコードを比較

f:id:cyamax:20180811235029p:plain 偽サイトは本物のサイトをそのままコピーして作成したようで、id名やclass名、コメントなどもそのままだった。

またサイト内の画像やcssファイルは本物のサイトを参照するようになっていた。

サイト内の一部リンクは、なぜか#(トップページ)に飛ばすようにしていたので、一部修正を加えている模様。 f:id:cyamax:20180811235057p:plain

apkファイルのコメントアウト

本物のサイトとは異なり、apkファイル(アプリファイル)をダウンロードさせるようなコードがコメントアウト(動かない)されて記載されていた。これについては後で言及。 f:id:cyamax:20180811235118p:plain

アクセス集計

中国のアクセス解析系のサイト。 これで訪問者のアクセス情報を解析していると思われる。

f:id:cyamax:20180811235134p:plain

携帯電話の認証(pp.html)

電話番号を入力して「認証コード送信」を押すと次のページに遷移する。 適当に「123」したら弾かれたので、コードをみると入力された値が11桁より小さいか判定していました。なので適当に0を11桁並べたら次のページにいける。

f:id:cyamax:20180811235345p:plain

「認証コード送信」を押すと、この時点で/servlet/SvNumにデータを送信(POST)している。 送信している内容は入力した電話番号だけの模様。

f:id:cyamax:20180811235512p:plain

そして3秒後に認証コード入力画面(pp2.html)に移動する。

認証コード(pp2.html)

ここで認証コードを入力する画面だが、偽サイトに電話番号を入力して検証していないので、本当に認証コードが届くのか不明。
また、認証コードが届いたとしても偽サイトに認証機能などはなく、ここに何の数字をいれてもすべてロード中の画面が表示されて、その後はなにも表示されない。 f:id:cyamax:20180811235553p:plain

「確認する」を押すとロード画面が出て、そのあとなにも変わらない。 f:id:cyamax:20180811235612p:plain

f:id:cyamax:20180811235626p:plain もともとは認証コードは4桁以上のバリデーションを入れていたようだが、意味が無いので外した模様。

このページで「確認する」のボタンを押すと、前のページで入力した電話番号と確認コードを送っている。
rotpwdとしてkkという変数を送っているが、この値(kk=0)がなにを意味するかは不明。

cookie

一応cookieも見てみたが、特に気になる項目はなかった。 f:id:cyamax:20180812003910p:plain

その他

偽サイトドメインの存在しないページすると以下のように中国語で表示された。
f:id:cyamax:20180811235924p:plain

Iサーバの言語も中国語。 f:id:cyamax:20180811235944p:plain

Googleトレンド

佐川急便の偽サイトは2018年の1月に一度出回って、そのあと音沙汰がなかったが、7-8月に入り再度活動した模様。 f:id:cyamax:20180812000000p:plain

apkファイル

2018年の1月の時点では偽サイトにアクセスした際に、上記で調べた内容以外にapkファイル(android向けアプリ)がダウンロードされ、端末にインストールすると様々な情報が取得されてしまうという被害があったが、今回私がアクセスした時点(2018/08/04)では、上記に記載したとおりindex.htmlのコード上ではダウンロードさせる部分はコメントアウトされており、 直接URLからダウンロードを試みたが、apkファイルはすでに存在しなかった。  ※ もしかしたらURLによってはダウンロードできるのかもしれない

まとめ

今回の場合の被害範囲は個人の電話番号を入力して認証コード送信ボタンを押した場合に、相手(偽サイトの作成者)に電話番号が送られてしまうことによる情報流出。
悪意のあるapkファイルが配布されていれば要注意だが、今回は確認できなかった。
また、Softbankなどの別会社のフィッシングサイトもあったので、今後このサイトを利用したフィッシングメールが送られるかもしれない。

所感

もう少し深いところまで調べても良かったかも。
複数のサーバとドメインを扱っているので、このフィッシング詐欺にお金をかけている印象。
クレジットカードのフィッシングとは異なり、取得されるのは電話番号だけなので、すぐに被害がでるわけではなさそう(迷惑メールが増えるぐらい?)。

SMS(ショートメッセージ)でもフィッシングメールが届くようなので、それって既に相手に電話番号がばれているのでは?と思ったけど、総当たりでメッセージを送って、有効な電話番号(SMSを見てフィッシングに引っかかってくれる)を取得するのが狙いなのかもしれない。

Linuxのログファイル早見表

目的

ログファイルの意味を理解する。 インシデント発生時の参考用に作成。

環境

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 14.04.2 LTS"

ログの一覧

/var/log/# tree
.
├── alternatives.log
├── apt
│   ├── history.log
│   └── term.log
├── auth.log
├── boot.log
├── bootstrap.log
├── btmp
├── dmesg
├── dmesg.0
├── dmesg.1.gz
├── dmesg.2.gz
├── dmesg.3.gz
├── dmesg.4.gz
├── dpkg.log
├── faillog
├── fontconfig.log
├── fsck
│   ├── checkfs
│   └── checkroot
├── kern.log
├── lastlog
├── monit.log
├── syslog
├── udev
├── ufw.log
├── upstart
└── wtmp

ファイルごとの意味

ファイル名 説明
alternatives.log alternativesシステムのログ
apt apt関連
── history.log aptコマンドの操作履歴
── term.log aptコマンドの出力履歴
auth.log 認証関連のログ。sudo系のログも残る
boot.log システムブート時のコンソールに流れるメッセージ
bootstrap.log Ubuntuのシステムを構築するシステムのログ
btmp ログイン失敗ログ(バイナリ)。存在しないアカウントでのログインやパスワードの入力ミスなど失敗にした際の情報が記録される。中身を確認する場合はlastbコマンドを使用
dmesg
dmesg.0
dmesg.1.gz
dmesg.2.gz
dmesg.3.gz
dmesg.4.gz
システム起動時などのカーネルログ
dpkg.log パッケージ管理関連のログ
faillog ログインの失敗ログ(バイナリ)。btmpが不正なログインすべてを記録するのに対し、fiallogはユーザごとにログイン失敗回数を記録する。中身を確認する場合はfaillogコマンドを使用
fontconfig.log ??
fsck ファイルシステムの不整合をチェック&修正するツール
── checkfs ??
── checkroot ??
kern.log カーネルのログ
lastlog ユーザごとの最後のログイン情報(バイナリ)。中身を確認する場合はlastlogコマンドを使用
monit.log Monit(プロセスやログの監視をしてくれる軽量ないツール)のログ
syslog システムの汎用のログ
udev デバイス周りのログ
ufw.log ファイヤーウォールのログ
upstart 自動起動系
wtmp 最近ログインしたアカウント情報(バイナリ)。中身を確認する場合はlastコマンドを使用

その他

今回はOSがUbuntuなのでCentOS版も作成したい。
OSバージョンも古いので最新版も適宜追加したい。
??は情報のソースが無かった。誰か教えてほしい。

参考

必読!ログファイルとディレクトリ | Think IT(シンクイット)

BacklogからSlackへの更新通知を超簡単に実現する

はじめに

タイトル通りBacklogの更新を超簡単にSlackに通知する方法です。

「Backlog Slack」で検索すると、サーバー使ったりIFTTTlambdazapierなどの記事が出てきますが、 サーバー使うほどでもないし、lambdaで作るのもだるいし、IFTTTzapierとかに大事な情報を垂れ流すリスクもあるので、一番シンプルな方法を考えました。

多分全部で5分ぐらいでできるんじゃないかな。

実際のキャプチャ

スマホでみるとこんな感じ。 f:id:cyamax:20180627235754p:plain

手順

手順は簡単3ステップ。

1. Backlogのビューアーアカウントを作成してプロジェクトに追加

BacklogにSlack側からBacklogの情報を見るためのビューアーアカウントを作成します。

Baclogの権限にはビューアー以外にゲストビューアーもありますが、 ゲストビューアーではチケットの詳細な変更内容が見れないため、それでも良ければそちらを選択してください。

ユーザ権限について|その他の設定|Backlogスタートアップガイド

2. BacklogのRSSのURLをコピー

更新情報を取りたいプロジェクトを開き、URLをコピーします。 f:id:cyamax:20180627232432p:plain

3. Slackにfeedを登録

SlackにはデフォルトでRSSを読む機能があるので、それを有効活用します。
更新情報を流したいチャンネルで
/feed subscribe コピーしたURLを入力します。

ただし、これだとBacklogのアカウント情報がないので、URL内にログイン情報を入力します。
/feed subscribe https://ビューアーアカウント:パスワード@自分のスペース名.backlog.com/rss/プロジェクト名

  • 入力例:
    /feed subscribe https://hoge:password@pepepe.backlog.com/rss/test

ちなみにfeedのリスト確認は/feed list
削除は/feed remove [IDナンバー]でできます。

注意

feedのところにユーザ名とパスワードがそのまま書かれているので、
Slackで/feed listを打つと他人もアカウントの情報が見えてしまいます。
なので、この設定をするときは鍵付きのチャンネルにするか、信頼できる人だけのメンバーで同意を取ってやりましょう。

自分のIPアドレスがブラックリストに載ったらメールを送る

f:id:cyamax:20180626224322j:plain
spamhaus

経緯

自身のグローバルIPがSPAMHAUSのブラックリストに載ってメールが送れなくなった。 今後すぐに気づけるようにcronを作成。

コード

指定したipがブラックリスト(SPAMHAUS)に載ったらメールを送る

環境

Linux系サーバを想定 。 mailコマンドでメールが送れること。

クーロン設定(定期実行)

以下コマンドで編集。

crontab -e
# 30分ごとに確認
*/30 * * * * /home/hoge/blacklist_ip_check.sh

注意

IPアドレスがブラックリストに載ったとき、それがcronを動かしているサーバ自体だとメールが迷惑メール扱いになって届かないかもしれない。
なのでサーバを分けるか、受信サーバ側で強制的に受け取る設定にする必要がある。

Backlogで大きくなりがちな画像を自動で小さくする

概要

Backlogのwikiに貼った画像が、横幅いっぱいに表示されてとても見にくいので、 自動で画像を縮小してくれる仕組みを作りました。

f:id:cyamax:20180625230356p:plain

やり方

1. ChromeにScriptAutoRunnerをインストール

任意のドメインで任意のJavascriptを実行できる。 本当に重宝する。便利。

chrome.google.com

2. ScriptをScriptAutoRunnerにペースト

Backlogのwikiの画像はでかすぎるから良い感じにする

ドメインの設定も忘れずに。

設定するとこんな感じになります。 f:id:cyamax:20180625231409p:plain

これで設定完了です。
あとはBacklogで大きい画像が表示されると、自動でリサイズされます。

その他

一番良いのはBacklogのサービス側でwidthを整えてくれることですね。
あと、この方法は自分の表示が見やすくなっても、他の人は見にくいままなので、無闇に大きい画像を貼るのはやっぱりやめたほうが良い。

Backlogのチケット登録時に自動でテンプレートを入れる

仕様

Backlogのカテゴリーを選択時に、予め設定したテンプレートを挿入する。

動作

動きを見たらどんなものかわかるはず。 backlog

ここが便利

チームで同じテンプレートが使え、自動で更新される
テンプレートはURLで読み込んで都度表示させるので、 BacklogのGitで管理して、テンプレートを更新(プッシュ)すれば、自動で全員更新される。

導入方法

1. Chromeの拡張機能(ScriptAutoRunner)をインストール

特定のページで設定したJavascriptを実行してくれる拡張機能。 とっても重宝しています。

chrome.google.com

2. BacklogのGitにテンプレートをpush

## テスト
実際にインサートされる文章

### その他
  • Gitに保存されたテンプレートの例 f:id:cyamax:20180624175337p:plain

もしもGitがわからなければ、直接テンプレートをコードに書いてもOK

3. ScriptAutoRunnerに登録

ScriptAutoRunnerにコードを記入します f:id:cyamax:20180624181643p:plain

このとき、どのURLで発火するかURLをAutoScriptRunnerに記入する。 上の図ではpepope.backlog.comの部分。

  • コード

4. JavaScriptを環境に合わせて変更

サンプルではプロジェクトの追加時のパスを記載しています。

var projectName="TEST" // backlogのプロジェクト名を記入。大文字注意。

// テンプレートをbacklogのリポジトリにmarkdown形式で保存。
var template = [
    ["カテゴリ1", "https://pepope.backlog.com/git/TEST/repo/raw/master/template1.md"],
    ["自分で設定しているカテゴリ名を記載", "https://pepope.backlog.com/git/TEST/repo/raw/master/template2.md"]
];

その他

スクリプトを作るよりも、ブログの記事にするほうが時間がかかる。 Backlogはとっても便利だけど、不便なところもあって、そこはアイディアで解決できる。

Docker上でgdbを動かす

Docker上のcentosでgdbを動かそうとしたら、以下のようなエラーが出たので対応策のメモを書きます。

エラー内容

warning: Error disabling address space randomization: Operation not permitted
Cannot create process: Operation not permitted
During startup program exited with code 127.

原因

Dockerのコンテナ上で動くプロセスはそのままではptraceが使えないらしいです。
ptraceシステムコールは実行中の他のプロセスの動作をみたり、メモリーを書き換えたりできます。
straceやgdbはptraceシステムコールを使ってデバッグ機能を実装しているみたいです。

対応

コマンド

以下コマンドでdockerを起動します。

docker run -i -t --cap-add=SYS_PTRACE --security-opt="seccomp=unconfined" [CONTAINER_NAME] /bin/bash

—cap-add=SYS_PTRACE と —security-opt="seccomp=unconfined”を追加しています。

注意

セキュリティレベルが低下するので、外部に公開された環境などで実施する際は注意しましょう。

その他

これでやっとCTF用の環境ができた。 f:id:cyamax:20180209000307p:plain

参考

https://qiita.com/koemu/items/547e6e8d0043b815279e https://stackoverflow.com/questions/35860527/warning-error-disabling-address-space-randomization-operation-not-permitted/35860616 http://itchyny.hatenablog.com/entry/2017/07/31/090000

ブラウザに保存されたパスワードを簡単に表示する

f:id:cyamax:20180116222227p:plain:w300

サイトにログインするときに、いつもブラウザがで自動で入力してくれていたので、
いざというときにパスワードがわからないということがよくありました。

「ブラウザには保存されているんだけどパスワードが●になって見えない。。。試しにコピーしても●になってしまう」ということを経験したことがある人は少なくないのではないでしょうか。

●のパスワードを表示させる

環境

Chrome

やり方

1. デベロッパモードを開く

Windowsの場合:ctrl+shift+I
Macの場合:cmd+opt+I

2. 選択モードにして●を選択

f:id:cyamax:20180116224922p:plain:w300

パスワードが入力されているフォームを選択
f:id:cyamax:20180116230732p:plain:w300

3. htmlからtype="password"を探しtype="text"に変更

  • typeをpasswordを探す
    f:id:cyamax:20180116225506p:plain:w300

  • typeをtextに変更
    f:id:cyamax:20180116225645p:plain:w300

  • 入力フォームのパスワードが見えるようになっている
    f:id:cyamax:20180116230135p:plain:w300

感想

思いついて実際にやってみたらできた。
まさかこんなに簡単に見れるとは。

パソコンを人に貸したりしたときに 同じ方法でパスワードを超簡単に覗き見たりできてしまうので注意が必要ですね。

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践

Reveal.jsのテーマ一覧

Reveal.js

Reveal.jsとは

HTMLでスライドを作成できるJavascriptです。

revealjs.com

設定方法

HTML内でCSSを指定すればOK

<link rel="stylesheet" href="css/theme/white.css">

カラーテーマ一覧(プリインストール設定)

初めから用意されているCSSの一覧。
CSSによってフォントやデザインの印象が大きく変わります。 好みのものがない場合は、自分で作成もできます。
自分で作成する場合は↓
https://github.com/hakimel/reveal.js/blob/master/css/theme/README.md

Black(default)

f:id:cyamax:20180112001554p:plain

white

f:id:cyamax:20180112001600p:plain

league

f:id:cyamax:20180112001613p:plain

Sky

f:id:cyamax:20180112001621p:plain

Beige

f:id:cyamax:20180112001630p:plain

Simple

f:id:cyamax:20180112001641p:plain

Serif

f:id:cyamax:20180112001649p:plain

Blood

f:id:cyamax:20180112001704p:plain

Night

f:id:cyamax:20180112001712p:plain

Moon

f:id:cyamax:20180112001721p:plain

Solarized

f:id:cyamax:20180112001729p:plain

サイトで確認

サイトでも直接確認できます。 revealjs.com

その他

Reveal.jsをこれに使っています。 www.cyamax.com

「ameba/UGG」を装った迷惑メールを調査してみた

正月に暇をしていたら迷惑メールが届いた。
時間があったので前回と同じく調査してみた。 www.cyamax.com

www.cyamax.com

今回届いたメール

AmebaからUGGの広告メールという謎の組合せ。 Amebaドメインの信頼を利用してリンクをクリックさせる手口だろうが、逆効果だと思う。 f:id:cyamax:20180102211316p:plain

毎回だけど「貴族の品質」が気になる。

メールヘッダ

f:id:cyamax:20180102214859p:plain

X-Mailer:⁨Foxmail 6, 13, 102, 15 [cn]
Date: Tue, 2 Jan 2018 14:00:28 +0800

Raybanのなりすまし時と同じメーラ(「Foxmail」という中国産のソフト)が使われていた。 タイムゾーンも+0800なので、 今回も中国人の可能性がでてきました。

偽サイト

アクセスする前に

bit.lyの短縮URLにアクセスする前に、URLに「+」を追加してアクセス情報をみてみる。
f:id:cyamax:20180102220006p:plain

私が調査したのがメールが送られてから4時間後であり、
その時点でこのURLにアクセスしたのが1400人弱ということがわかります。 f:id:cyamax:20180102220121p:plain

サイトにアクセス

f:id:cyamax:20180102225920p:plain

アクセスすると、UGGのようなサイトが表示されました。

いくつかページを確認してみましたが、
Raybanのときのような日本語の違和感は感じませんでした。

注文を試みる

試しに注文の機能が使えるのか少し確認してみます。

注文する前にアカウントの登録が必要のようでしたので、
アカウントを登録してみました。

アカウント登録後、名前と住所・クレジットカード情報を入れて購入できるようだったので、 試しに適当なクレジットカードの番号(クレジットカードの広告に使われる無効な番号)を入力したところ、使えないクレジットカードということで登録できませんでした。 f:id:cyamax:20180102231149p:plain

また、住所も適当な文字を入力しても文字数制限でNG。
予想と反して意外としっかりとした作りになっています。 f:id:cyamax:20180102231136p:plain

マイページで購入履歴を確認できる機能があり、カードが無効だったので「declined(利用停止カード)」になっていました。
f:id:cyamax:20180102231155p:plain

もう少し深く見てみる

ページのhtmlコードを眺めていたら以下のような記述を見つけました。 f:id:cyamax:20180102231731p:plain

display:noneでページ上には表示させていませんが、謎のリンクと画像ファイルの記述がありました。

网站流量统计系统
https://www.51.la

上記URLと中国語を調べたら、サイトへのアクセスを調べる中国のサービスでした。
このサービス自体は特に問題ないと思いますが、 偽サイト関係者が中国語を使う可能性が高まりました。 f:id:cyamax:20180102232150p:plain

f:id:cyamax:20180102232200p:plain

phpinfo

見えてしまった。
ここは偽Raybanのサイトも同じでした。 これ以上はやめておきます。 f:id:cyamax:20180102232520p:plain

本当に危ないサイトなのか

見分けるポイント

①メールが怪しい

amebaからUGGのセール情報が送られてくる時点で「?」となりました。 ※普通はUGGのセール情報はUGGドメインから直接送られてくるかと思います
また、偽サイトの日本語は違和感がありませんが、肝心のメールの日本語が変でした。

②SSLではない

アカウント作成やクレジットカード情報入力時など常にhttpでした(httpsでない)。 この手のサイトはしばらくするとブラックリストにドメインが登録されてしまうため、ドメインやIPがコロコロ変わるためドメイン登録が難しいのだと思います(手間や費用やリスク?)。 f:id:cyamax:20180102233942p:plain

③診断サイトを使う

サイトのURLを入力すると、危険なサイトか診断してくれるサイト。
これが一番手っ取り早いと思います。

check.gred.jp

今回のサイトを診断したら、「フィッシングサイト」の結果になりました。 f:id:cyamax:20180102234239p:plain

最後

上記にも書きましたが、今回のUGGの偽サイトはRaybanの偽サイトよりも日本語の完成度が高く、ぱっと見で偽サイトかわからなくなっていた。
アカウント情報やクレジットカード情報の取得を目的としたサイトだと思いますが、注文機能はしっかりしているので、注文するともしかしたら商品がちゃんと届くかもしれないです。
Rayban偽サイトと手法やメールの文章、メールヘッダ、サイト構成が似ているため同じグループ・もしくは何かしらの関係がある者の犯行の可能性が高いと推察しました。

ハッカーの学校

ハッカーの学校

ハッカーの学校 ハッキング実験室

ハッカーの学校 ハッキング実験室