2段階認証の誤解

不正引き出しとは

金融機関にある取引口座とチャージ対象(キャッシュレス手段等)の持ち主(管理者)が異なり、取引口座の資金が無断で移動させられること

今回だと例えば、

キャッシュレス手段取引口座備考
D払い(他人)ゆうちょ(自分)ドコモ口座
LINEペイ(他人)ゆうちょ(自分)

#上の表の「他人」と「自分」が逆になると、攻撃者そのものか、犯罪に巻き込まれているか、になるだろう

①2段階認証はひとつでよい、という誤解

2段階認証(2要素認証ともいう)は英語では2-factor-authenticationとなるが、3-factorや4-factorの方が突破されにくい。ドアについている鍵の数が1つより2つ、2つより3つの方が開けにくいのと同じ。

ちなみに、昔NYではドアに数個鍵を掛けると言われ映画やドラマでもそのような場面が出てくるが、「8つ鍵を付けると狙われない」としていたと記憶する。(そりゃそうだろう)

2段階認証として設定できるのは、(口座番号や暗証番号は当然のこととして、)他にはだいたい

  • ワンタイムパスワード
  • 第2暗証
  • 生体認証
  • 合言葉
  • マイナンバー

位だが、どれも抜け穴がある。

#最悪、例えば家族なら全て突破できる場合がありえる。一卵性双生児なら生体認証も??

②xx銀行、xxペイ、xxサービスのどれかひとつで2段階認証を導入しているから安心、という誤解

ゆうちょとLINEペイを例にすると、

  • ゆうちょは2段階認証していない
  • LINEペイは2段階認証は(オプション)。住所や名前などは実在のものでなくともOK

なので、他人のLINEペイから2段階認証していないゆうちょ口座への紐づけが可能になっている。ゆうちょで2段階認証等の対策がとられていれば、かなり防げるものだが、それがない

③攻撃者の前提は把握可能という誤解

普通はこうするだろう、と攻撃者の動きを想像すると、痛い目を見る。被害者が気づくまで、普通では考えられないことをやっているはず。

また、不正被害が世の中に知られたので、無くなるのも時間の問題だろう、とはいかない。被害が気づかないところでは口座の資金が枯渇(または借り入れ額が上限に達する)迄続く。

どこに気を付ければいいか?

預金口座をもつ金融系(銀行、ゆうちょ)が紐付けサービスを始めたら、リスクがある。口座の取引に異常がないか確認する。メールが来るものならこまめにチェックする。

金融機関からキャッシュレスサービスとの連携を開始する通知があるか。封書でもハガキでもメールでもいいので。契約者全員にアナウンスがあるか。

また、取引口座の取引を逐一メールやハガキで通知するシステムになっているか。これが徹底されていれば、口座を確認するためATMや金融機関にわざわざ出向く手間が省ける。

LINEペイの銀行口座登録の例(2020年9月時点)

登録方法例(LINEペイ)

  • 1口座番号・PWなどの情報を
  • 2銀行選択して必要な情報を入力
  • 3銀行のWebサイトで必要な情報を入力

(例)2020年9月時点のLINEペイの銀行口座登録

金融機関口座登録のため準備するもの(口座情報は省略)備考
ゆうちょなし
三菱UFJ(MUFG)ワンタイムパスワード(OTP)OTPはアプリも可能
三井住友(SMBC)ワンタイムパスワード(OTP)OTPはアプリも可能
みずほ銀行メアド(普通預金口座)合言葉、第2暗証番号(みずほダイレクト)偽サイトで入力、もしくは口座情報を売られていないか
楽天銀行ワンタイムキー
ジャパンネット銀行トークン(OTP)
住信SBIネット銀行アプリ(スマート認証)(SMS認証)生体認証、登録電話番号が変更できなければOK
その他省略
LINEペイの銀行口座登録

それぞれの対応を比較すれば、その脆弱性は一目で分かる。一方にあって他にない認証情報の存在理由を検討していれば済むこと。

例えば、引き出し金額上限が最初1円などになっていて、窓口でしかその上限額が引き上げられないなど、コストのかかるものがないと、上記のような認証情報の差は説明できないはず。

ゆうちょの登録

ゆうちょには2段階認証がない。報道ではキャッシュレス業者に2段階認証の導入をお願いしているらしいが、ゆうちょ側にも必須だ。取引に関するものなら、キャッシュレスへのチャージを含めゆうちょ側でも2段階認証が必要。

どこにも2段階認証は出てこない

(口座契約者と同一かの意味で)本当に本人のキャッシュレスアカウントから取引口座への登録要請がきているのか、どうやって確認するのだろう。金融機関の知らないところで認証されたものを、自分で確認しないでどうやって認証するのだろう。

ドコモ口座とdアカウント

ドコモ口座もdアカウント経由で銀行口座と紐づけるが、dアカウント自体には2段階認証が導入されている(必須でないようだが)。ただし、そのことと銀行口座登録時に銀行側に2段階認証がなくていいとは決してならない。紐づけようとしているdアカウント(ドコモ口座)が銀行口座の本人のアカウントとはかぎらないから、dアカウントの方が2段階認証で守られていても全く意味がない。守るべきは銀行口座の方である。

キャッシュレス業者の個人認証は金融機関の個人認証に比べ極端に脆弱だ。プリペイド式で認証が不要だったり、セキュリティの厳しいクレジットカードと紐づけることでチャージ機能を付与してきた。銀行のように免許証を送付したり窓口で手続きということもない。逆に銀行口座へアクセスできることで個人認証の論拠となっている場合もある(Auペイなど)。

まとめ

取引をメールで知らせない金融機関はあぶない。金融機関が損する訳ではないが、口座の契約者が被害が認識できない可能性がある。連携先がメールするからOKで、はない(連携先の登録メールアドレスと金融機関の登録メールアドレスが違っている場合、確認できない)

金融機関が、キャッシュレスなど他の決済サービスと連携している時点であぶない。簡単に連携できるほどあぶない。連携が面倒なほど危険度は減る。

取り扱い額(引き出し金額)の上限を設定できないところはあぶない。特に契約時に「上限なし」など論外(通常は100万円や49万円などが設定されている)。

主たる金融機関が、不正引き出しがないか確認してくれと、口座契約者に依頼しているが、不正かどうかに関係なく、自宅宛てもしくは登録メールアドレス宛てに、取引があったことを通知すべきだ。

認証の厳しい金融機関とあまあまのサービス業者の連携では、常に認証の厳しい金融機関が取引口座を守る対策を取るべきだ。

早速GETしました。au PAY(auペイ)が20%還元の「誰でも毎週10億円もらえるキャンペーン」

早速GETしました。au PAY(auペイ)が20%還元の「誰でも毎週10億円もらえるキャンペーン」のauポイントのことです。

とにかく、早く動かないといけないのではないかと10時開店を狙いました。

絶対欲しいものをとりあえず確保。

あとは、成り行きを見て行動しようと思っています。

報告まで。

 

誰でも毎週10億円もらえるキャンペーン
https://www.au.com/pr/paycpn2020/?aa_oid=we-we-ow-0255

GitHubに公開したAndroidアプリ「DecoyCamera」について(設定メニュ)

設定メニュ

DecoyCameraアプリを起動します。

clip-20200111073011.png
※右上のTexture矩形がFinder※f。左下のアイコンがシャッター※s。
右下のアイコンがメイン/フロントカメラ切り替え※l。


Finder※fを長押しするとメニュが起動できます
clip-20200111072350.png


設定(Settings)をタッチして設定画面を表示します。
clip-20200111072521.png

FrontLensFacing:ON/OFF

起動時フロントカメラを使う場合ONにします。

LensFacingButtonOn:ON/OFF

メイン/フロントカメラ切り替えボタン※lを表示する場合ONにします

カメラ切り替え状態に応じて、メイン/フロントカメラ切り替えボタン※lの色が変わります。

  • フロントカメラ:白
  • メインカメラ(バックカメラ):黒

Camouflage

clip-20200111073224.png


CamouflageMode:選択

偽装モードを選択します
clip-20200111073243.png

  • 半透明:起動時の背景を表示します
  • 画像:偽装用画像を表示します
  • テーマ:偽装用背景としてテーマを使用します

「画像」を選択する場合には、偽装用画像(jpeg,png等)を内部ストレージ(内部共有ストレージ)の下記フォルダ(ディレクトリ)に配置しておく必要があります。

(内部ストレージ)/android/data/com.krasavkana.android.decoycamera/files/Pictures

clip-20200111073345.png
※複数枚配置した場合、(起動後)左右のフリック操作で画像を切り替えます


Finder

clip-20200111073506.png


FinderLocation(Finder):選択

Finder※fの表示場所を選択します
clip-20200111073544.png

  • 左上
  • 右上
  • 中央左
  • 左下
  • 右下

FinderSize(Finder):選択

Finder※fの表示サイズを選択します
clip-20200111073602.png

  • 極小

Advanced

clip-20200111073735.png

ShootButtonOn(Advanced):ON/OFF

撮影ボタン※sを表示する場合ONにします。

OFFの場合撮影ボタン※sが表示されませんが、

  • 端末の音量(小)ボタン(ハード)を押す
  • 画面をダブルタップする

と撮影し画像を保存します。画像保存時に保存アイコンが表示されてすぐ消えます。

MasterMuteOn(Advanced):ON/OFF

シャッター音を無効にする場合ONにします。ONにする場合別アプリ(MasterMute)をインストールする必要があります。

PrefixForSaving(Advanced):テキスト

撮影した画像を保存する際のファイル名につけるPrefixを指定します。省略時は「pic」
clip-20200111073914.png


Theme

Theme:選択

テーマを指定します。偽装モードが「テーマ」の時有効になります
clip-20200111074039.png

  • 雪原
  • 漆黒

リリース用APKファイル

リリース用にビルドした署名付きAPKファイルを本ブログ配下に置いています。

androidアプリ「BleSwitch」リリース用APKファイル
androidアプリ「DecoyCamera」リリース用APKファイル
androidアプリ「MasterMute」リリース用APKファイル

GitHubの公開コードをローカル開発環境(AndroidStudio3.x)にクローンしてきてビルドしても得られるものですが、そうした環境をお持ちでない方のために用意しました。

どういう動作になるのか。興味のある方はいろいろ試してみてください。

関連する記事・ページ

GitHubに公開したAndroidアプリ「DecoyCamera」について(概要)
GitHubに公開したAndroidアプリ「DecoyCamera」について(使い方)
GitHubに公開したAndroidアプリ「DecoyCamera」について(設定メニュ)
GitHubに公開したAndroidアプリ「DecoyCamera」について(技術解説)
GitHubに公開したAndroidアプリ「BleSwitch」について(概要)
GitHubに公開したAndroidアプリ「BleSwitch」について(使い方)
GitHubに公開したAndroidアプリ「BleSwitch」について(技術解説)

お世話になったリンク

android-Camera2Basic

以上です。

GitHubに公開したAndroidアプリ「DecoyCamera」について(技術解説)

DecoyCameraがAmazon Kindle Fire7およびFire10にてうまく動作しない場合があります。
搭載カメラのうちメインカメラ(Back)ではシャッターが切れない。フロントカメラでは普通に動作する。というようなものです。

そこで、Kindle Fire 7についてカメラのサポート状況を調べてみたところ、意外(?)なことが判明しました。

Kindle Fire 7では、比較的新しいAndroidOS搭載スマホと比較して、メインカメラ(Back)とフロントカメラの動作が若干違うということ。

メインカメラ(Back)がAF(オートフォーカス)に非対応

DecoyCameraアプリでは、比較的新しいスマホをターゲットにしており、メインカメラ(Back)はAFのみに対応している想定で実装しています。Kindle Fire 7の場合、「AFに非対応」なので、うまく動作しないんだなということが判りました。

フロントカメラはAFに非対応

DecoyCameraアプリでは、フロントカメラはAFに対応していない想定(MF(マニュアルフォーカス)のみに対応している)で実装しています※1。Kindle Fire 7の場合も、「AFに非対応(MFに対応)」と、比較的新しいスマホと同じなので、うまく動作していたということ。

※1:ベースにしたサンプルコードでは元々フロントカメラに対応しておらず、メインカメラ(Back)のみに対応した作りになっていました。DecoyCameraではフロントカメラに対応できるように、レンズの切り替えやMF対応を追加で実装しています。

Kindle Fire 7(9th)のCameraサポートその他について

以下、Camera2 Probe App(GooglePlayでリリース)を使ってKindle Fire 7のカメラのサポート状況について調べてみた結果(一部を抜粋)。

Model:KFMUWI
Manufacturer:Amazon
Build:7.1.2
SDK:25
------------------------------------------
Camera ID: 0
Camera Facing: Back
SupportLevel:LEGACY
Hardware Support Level:LEGACY
Manual exposure:0
Auto exposure:1
Auto exposure, always flash:0
Auto exposure, auto flash:0
Auto exposure, auto flash, red eye reduction:0
AE Lock:1
Manual focus:1
Auto focus:0
Auto focus macro:0
Auto focus continuous picture:0
Auto focus continuous video:0
Auto focus EDOF:0
White balance off:0
Automatic white balance:1

Auto focusが0(非サポート)になっているのが判ります。

関連する記事・ページ

GitHubに公開したAndroidアプリ「DecoyCamera」について(概要)
GitHubに公開したAndroidアプリ「DecoyCamera」について(使い方)
GitHubに公開したAndroidアプリ「DecoyCamera」について(技術解説)
GitHubに公開したAndroidアプリ「BleSwitch」について(概要)
GitHubに公開したAndroidアプリ「BleSwitch」について(使い方)
GitHubに公開したAndroidアプリ「BleSwitch」について(技術解説)

お世話になったリンク

android-Camera2Basic

以上です。

LINE通知の直接トリガーとIFTTT経由のトリガーについて(その2)

自宅PCやサーバのHDD容量を監視して、逼迫してきたら、LINE通知に24H自動通知しています。

処理の流れとしては、

  • WIndowsタスクで一定期間で監視スクリプトを実行
    • 監視スクリプトで要通知となればLINE通知にPOSTする
    • そうでなければなにもしない(スルー)

これを24時間365日行っています。

ここでは、上記の「LINE通知にPOSTする」部分について、その方法と注意点について紹介しようと思います。

「 WIndowsタスクで一定期間で監視スクリプトを実行」部分については、本ブログの関連ページを参照してください。

かなり説明を端折ってますので、初心者の方はネットでいろいろ調べてみてください。

紹介内容とポイント

  • ①LINE通知への通知方法。少なくとも2種類ある。それぞれ長所短所があるので用途により使い分けるとよい
  • ②LINE通知に直接通知を投げる
  • ③LINE通知にIFTTT経由で通知を投げる
  • ④まとめ

①②については、「LINE通知の直接トリガーとIFTTT経由のトリガーについて」を参照してください。

③LINE通知にIFTTT経由で通知を投げる

監視対象機器(ここでは自宅PCとします)から「IFTTT」サービス経由で「LINE Notify」(LINE通知)サービスにアクセスします。やり方は、ひとことでいうと、IFTTTサービスに登録してMyAppletを作成するだけです。それだけで普段使っているLINEに通知が来ます。

たとえば、こんな感じです。

clip-20191022112528.png
※背景画像は東京市ヶ谷にあるポケストップ

ひとつ目の通知が直接通知。二つ目の通知はIFTTT経由通知。同時刻にPOSTしていますが、到着に28分間のタイムラグがありました。IFTTT経由通知の場合は処理が遅いのではなく、ある時点でまとめて処理しているだと推察します。

powershellのコード例

以下PowerShellのコード例を示します。ここでは、LINE通知をする監視対象機器を自宅PC(Windows)としているのと、監視処理を同じくPowershellで書いてWindowsタスクから起動しています。

MacOSやLINUXサーバの場合は、「curl」コマンド等を使って同様に実装可能と思います。

IFTTT_trig.ps1

Add-Type -AssemblyName System.Web

Set-Variable -Name 'TOKEN_IFTTT' -Value <IFTTTのトークン文字列>
echo ("※IFTTTへMAKERイベント発火 at " + $Now)

$oXmlHttp = New-Object -Com Msxml2.XMLHTTP.3.0
$URL = "https://maker.ifttt.com/trigger/test/with/key/$TOKEN_IFTTT"

#コマンドライン引数(パラメータ)の取得
If ($Args.Length -eq 1){
    $a1 = [SYstem.Web.HttpUtility]::UrlEncode($Args[0])
    $URL = $URL + "?value1=" + $a1
}else{
    echo "Error:引数が多すぎます"
    exit
}

$oXmlHttp.Open("GET", $URL, $false)
$oXmlHttp.Send()
If ($oXmlHttp.Status -eq 200){
    echo [SYstem.Web.HttpUtility]::UrlDecode($URL)
}Else{
    echo "Error returnCode:" + $oXmlHttp.Status
}

※ここではIFTTTのMyAppletに設定するトリガーコマンドを「test」としています。

下記コマンドをWindowsのコマンドプロンプトで実行します

IFTTT_trig.ps1 "ディスク逼迫 at MyPC(残量 649)"

※通知内容の変更を容易にするため、上記スクリプトに引数をひとつ渡すようにしています。

※24H監視する場合はWindowsタスクへの登録が必要です。

④まとめ

自宅PCやサーバのHDD容量を監視して、逼迫してきたら、LINE通知に24H自動通知しています。

ここでは、「LINE通知に24H自動通知」について、その方法と注意点について紹介しました。

関連する記事・ページ

LINE通知の直接トリガーとIFTTT経由のトリガーについて
LINE通知の直接トリガーとIFTTT経由のトリガーについて(その2)
自宅PCをスマホでリモート管理(タスク管理編)
PCをリモート管理する1手法
【コードサンプル】Windowsタスクへの登録例
【コードサンプル】heartbeat.ps1 – 心音確認 PowerShell Script
【コードサンプル】1時間タスクのScript例
【コードサンプル】24時間タスクのScript例
【コードサンプル】hbJob.bat – Windows Bat Script
【コードサンプル】プロセスモニタのScript例
【コードサンプル】IFTTT経由でLINE通知するScript例
【コードサンプル】ネット転送量モニタ

お世話になったリンク

LINE Notifyでたのでちょっと試してみる。ついでにGithub Enterpriseのwebhookを通知するやつを作ったぞ!!

※東京市ヶ谷のポケストップ「ビーナス」
clip-20191023073518.png

以上です。