💭

Web3開発者をねらったハッキング手口の全て(わたしは全て抜かれました...)

に公開
16

Discussion

フシハラフシハラ

これって受け取ったgithubのレポジトリをそのままAIに投げて
「悪意のあるコードは含まれているか確認して下さい」的な事をお願いしたら見つけてくれますか?

このような事件の対処法として「怪しい人から受け取ったソースを実行しない」というのは完全に防げますが、
実際は今回のように相手が怪しいかを確実に判断するのは不可能だし、現実的とはちょっと言えないと思うので
そういう時に検知ができたかを知りたいです。

mameta_zkmameta_zk

これ、ぶん投げ出てAI見つけてくれます。実際この記事もAIに原因見つけてもらいながらまとめましたので。1回AI挟むのは定石になりそうですね。ありがとうございます、追加しまいた。

teatwoteatwo

辛いご状況にも関わらず詳細な開示ありがとうございます。たいへん参考になりました。

1.私が認証情報を入力
2.それが攻撃者のサーバーに送信 (上記の偽のwindow.ethereumのコード)

3.攻撃者は盗んだMetaMaskのパスワードを使用して、ウォレットのシードフレーズにアクセス

3が記事内容でどうやったのかわからなかったんですが記事掲載以外のコードに仕込まれていたんでしょうか?シードフレーズで派生した他のアカウントからも資金抜かれたんでしょうか?

mameta_zkmameta_zk

ありがとうございます。こちら私の誤解があったようですみません、友人が難読化コードを解析してくれたことを元に記事を修正しました。追記 の部分をご確認ください。

端的にいうと、npm run devしたときにmetamaskのローカルで保存されている暗号化された秘密鍵などがすでに盗まれており、私が入力した認証情報で復号化した、といった流れになります。

フシハラフシハラ

metamaskを使っていないので的外れだったら申し訳ありませんが、

>一度画面共有を解除してConnect Walletボタンを押下してパスワード入力
ここで攻撃者が作った偽のログイン画面に認証情報を入力してしまったという事だと思いますが、
ブラウザのアドレス欄で気付くことは可能だったでしょうか?
例えばGoogleログインを要求された時、そのドメインがgoogle.comではない 例えばlocalhostだったり全く別のドメインだったら偽サイトの可能性が高いと判断出来ます。

「metamaskのコネクト画面はネイティブアプリだからアドレスバーはない。だからコネクト画面の外観だけで判断は出来ない」って事かな

mameta_zkmameta_zk

metamaskのコネクト画面はネイティブアプリだからアドレスバーはない。だからコネクト画面の外観だけで判断は出来ない

まさにこの通りだと思います。今回の偽metamaskはポップアップのようなものですので、外観では判断できなさそうです。

フシハラフシハラ

なるほど~
ブラウザならhtmlが全く信用できなくてもアドレスバーの情報は完全に信頼出来るけど
ネイティブアプリだと、起動してるプロセスを直接見るくらい?それもPCローカルで任意コード実行されている段階でバイナリが差し替えられてる可能性もあって完璧じゃないし…
そこで判別するのは無理そうか。

みじんこみじんこ

npm run startで実行されたコードがどのようにログインフォームに作用していたのかが気になります

  • ローカルで立ち上げた偽のログインフォームに誘導された?
  • 本物のログインフォームに悪意のあるコードを埋め込まれた?(拡張機能以外でそんなことが可能?)
mameta_zkmameta_zk

npm run dev ではローカルのMetamask拡張機能がある暗号化されたデータ(秘密鍵)をハッカーのサーバーに事前に送信しており、その後パブリックURLで入力したパスワードで復号化したという流れになります。

すずねーうすずねーう

もう PC は初期化しましたか?してないならすぐにすることをおすすめします。
util.assets を使っている同系統の GitHub に落ちていたマルウェアを解析すると、JS を経由して難読化された Python コードを実行しており、それの難読化を戻すとキーロガーとマウスロガーが入っていました。

EdamAmexEdamAmex

亜種が大量にあるから、種類にもよりそうだけど
踏まされた時は初期化が一番

r-sugir-sugi

ツラいすね、、。

こういうサイバー犯罪?って犯罪者を捕まえるのは無理なんですかね。捕まってほしいし、損害分取り返せない?🫠

hidahida

公私混同しがちなので人のこと全く言えないですが、
普通の会社員は業務 (開発) 用のPCにプライベートのデータを入れないので (逆は言わずもがな)、たとえ副業案件でもOSのユーザーを作成して切り替える、Chromeのログインを分けるとか、ちゃんとすべきなのだろうな、と思うなど。

あいや - aiya000あいや - aiya000

鑑みると我々は常々、ユーザー権限といえどnodejsによる実行だけでなく様々なコード実行を許している気がするので(npmなど同様の各言語のパッケージマネージャーによるコード実行や、$ curl {url} | sh・ArchLinuxのAURなど。)、そういうときは一度思考を挟むことを癖つけるか、そもそもAIに全部実行をさせて、思考を挟ませるのがよさそうですね〜