SBI証券でデバイス認証(二段階認証)のログイン完全自動化(Python)

証券会社を狙う不正取引問題が続く中で、ログイン時のセキュリティ対策として、

 

多要素認証が「必須化」

 

となってしまった……。

 

 

これで困るのは自動化システムを作っている個人投資家達。

  • 売買取引システム(システムトレード)
  • IPO注文システム
  • 取引&資産管理システム
  • 株価データ監視システム
  • Xのポストシステム

SBI証券としては嬉しくない客かもしれないが、用途は多岐にわたる。

そもそもセキュリティ対策してるテスタ氏も乗っ取られてる。

本当にフィッシング詐欺が原因なのかな……そっちを究明して欲しい。

投資家テスタ氏の楽天証券口座乗っ取り事件の全容と今すぐ実践すべき対策について解説 | 未経験の回廊
著名投資家テスタ氏の楽天証券口座乗っ取り事件が投資家コミュニティに衝撃を与えています。 2025年5月に発覚したこの事件は、証券口座のセキュリティ脆弱性を浮き彫りにし、金融庁の発表によれば被害総額は約950億円に達しました。「自分は大丈夫」

 

そもそも多少の抑止力にはなるけどニ段階認証突破する詐欺サイト作成なんて全く難しくない。

二段階認証のキーを実際の証券サイトから発行させる仲介的なシステムを作れば良い。

 
 

話は戻って二段階認証を突破して自動処理をする方法もチラホラ出てきた。

研究レポート No.017 Selenium VBA 既存のChromeを操作する
多要素認証でログインが非常に厄介になりました。下手をすると自動ではログインできなくなるかもしれません。ログインは手動でやるとしても、定時的な発注は自動で行いたいと適応プログラムを急いでいます。 今までは、発注の都度、ログインしていましたが、

この人はログインは手動で行い、セッションが切れるまでは取引を自動化する……という方法のようだ。

完全自動化ではないので私の目的と異なる。

 

ここでは完全自動で二段階認証を突破する方法を紹介する。

※ スマホ認証の突破は大変なので「FIDO(スマホ認証)」の設定は行ってない。

二段階認証を突破する全体概要

手順は次のとおりでメールサーバーが必要。

 

何だよ……メールサーバー無いよ。

 

という人もいるかもしれない。

Yahooメールのスクレイピングも考えたが、そもそもYahooログインがスマホの二段階認証だった。

メールサーバー側の設定

手順は次の通り。

  • 専用メールアドレスを転送用として作成
  • SBI証券に専用メールアドレスを登録
  • .mailfilterの設定変更
  • 処理用のスクリプトを準備する

次のサイトを参考にした。

さくらインターネットを利用しているが、どのメールサーバーも同じ仕組み。

SBI証券に専用メールアドレスを登録

転送用として作成したメールアドレスをSBI証券に登録する。

加えて認証キー受診のメールアドレスとしても登録する。

/home/ユーザ名/MailBox/メールアカウント/.mailfilter の設定変更

メールボックスのフォルダを見てみるとアカウント毎に次のようなファイル構成になっている。

この中の「.mailfilter」を変更する。

転送用メール設定を独自のスクリプトを呼ぶように変更する。

【Before】

【After】

処理用のスクリプトを準備する

ここでメール処理するmailhook.pyは次の通り。

sys.stdin.buffer.read()だけで、標準入力からメール情報全て(ヘッダー、本文、送信先、送信元)を受け取ることができる。

SBI証券から受け取ったメールはテキストなので、本文に対して認証キーをスクレイピングするだけ。

なお老婆心ながらセキュリティ対策で30後には自動破棄も追加してる。

SBI証券ログインを自動で行うスクリプト例

二段階認証の認証キーがテキストデータで手に入るのだから何も難しくない。

なお非力サーバーで動かす為にSeleniumでなくPlaywrightを利用している。

処理としてはこのあたり。

説明するまでも無いね。パスワード入力処理が1つ増えたようなものだから。

おわりに

SBI証券のデバイス認証(メール送信によるキー認証)であれば、特に難しい要素はない。

なお、

FIDO(スマホ認証)未設定のお客さまに順次「電話番号認証」を適用します。なお、電話番号認証の解除はできません(デバイス認証設定済みの場合を除く)。

WEBサイトへのログイン時に「電話番号認証」→「ユーザーネーム/ログインパスワード」→「デバイス認証」の手順が必要になります 。

と書かれており強制的に電話番号認証がSBI証券によって適用されるっぽい。電話番号認証は自動化が難しい。電話契約必須だし。

その場合は、セキュリティリスクは上がるが電話番号認証を解除すれば大丈夫なのかな……。

 

蛇足だけど、楽天証券もメール送信だけど認証キーではなく変なアイコン合わせが必要。

これ……フィッシングサイト対策ではなくて個人の自動処理対策だよね。

タイトルとURLをコピーしました