セキュリティ・キャンプ全国大会2022 の Z9 クラス「ファイルレスマルウェアの仕組みと検知エンジンの開発ゼミ」では、Powershell のマルウェア検知ツールを開発しました。Z9 クラスの参加者は、キャンプ修了後も講師の凌さんと共に開発を継続し、その成果を Black Hat USA 2023 の Arsenal にて発表されたので、現地の様子などをレポートとして寄稿いただきました。


セキュリティ・キャンプ全国大会2022での講義以降、開発を続けていたPowerShellマルウェアの検知ツール「Z9 PowerShell Script Analyzer」を発表するため、BlackHat 2023 USAに参加してきましたので、その結果を報告します。

Z9メンバー

  • 受講生:
    • 水澤
    • 竹中
    • 百塚(今回は不参加)
  • チューター:
    • 山口(セキュリティ・キャンプ全国大会2021年受講生)
    • 首浦(セキュリティ・キャンプ全国大会2021年受講生)
  • 講師:
    • 凌(しのぎ)

これまでの経緯

(凌)セキュリティ・キャンプ全国大会2022で悪意のあるPowerShellスクリプトの検知エンジンを開発する講義を3日間かけて実施しました。いいものが出来上がったので、そのまま終わらせるのはもったいないと思い、開発の継続を呼びかけたら受講生・チューター含めて全員が賛同し、その後は2週間に1回の定例会を開きました。

(百塚)定例会では、凌さんを中心として、検知エンジンのメンテナンス(竹中さん)や機能の追加(水澤さん)、検証などを行い、国内での発表などもグループで経験しました。今年2023年に入ってからは講師の凌さんがBlack Hatに応募し、無事に選考に通りました。そのため皆で発表のために8日間渡米することになりました。

Black Hat USA 2023

Black HatはBriefingという講演を聞くイベント、Business Hallという展示会、Arsenalというツールを発表するイベントで構成されておりました。

blackhat 会場にて集合写真 図、左から首浦、水澤、凌、竹中、山口

Arsenal

(凌)Z9というPowerShellベースのマルウェアを解析するツールを発表しました。 Z9公式サイト

BlackHat Arsenal 会場の様子

(水澤)Z9の発表はArsenal会場にて行いました。基本的に凌さんが発表、質問への回答を行い、私たち受講生、チューターは一部の質問への回答を行いました。自分の考えているよりも多くの人に発表を聞いてもらうことができ、さらにZ9を良いものにしていこうという気持ちになりました。

Z9の発表の様子

(水澤)私は1つ質問を受けました。その内容は、機械学習モデルに渡すデータの前処理に用いる、TFIDFに関する質問でした。質問の内容はざっくり言うと、「機械学習での検知でTFIDFを使うと発表していたが、それって文書分類のための手法だけど効果あるの?」というものでした。それに対して、「効果は確認していて、TFIDFの活用で予測精度は向上している。TFIDFは英語でいうところの”a”,“the”といった、どの文書にも出現するため文書の分類に役立たない単語について分類における重みを減らし、また頻出しないが分類に役立つ”mimikatz”のような単語の重みを増やす手法だと考えている。PowerShellにおいても、以上のような単語があるため予測精度が向上すると考えている。」のように回答しました。日本人の方からの質問ではありましたが、自分の深くかかわっている検知エンジンについて興味を持ってもらうことができ、とても嬉しい気持ちになり、開発のモチベーションにつながりました。

また、発表を聞いた人が疑問に思う点を直接知ることができたので、次回の発表に向けた改善の参考になりました。特に、上記の質問での回答で、どの程度精度が向上しているのか、どの単語の重みが変更されているのかを示せるとより説得力があると感じたので、帰国後調査し、今後資料に加えようと思っています。

(竹中)私も1つ質問を受けました。その内容は、Z9の動的解析機能を提供しているAPIはあるか?といった内容でした。 今回開発したZ9は、メイン機能である動的解析機能をWebAPIとして公開しており、実際にアプリケーションに組み込むことができます。今回質問してくださった方も、「あとで使ってみるよ」と言っていただき、ツールを作って公開する楽しさ、面白さというものを感じることができました。

APIのドキュメント

(水澤)全体として、予想以上に多くの人にZ9の発表を聞いてもらうことができ、嬉しい気持ちでした。ただ、発表や英語での質問への回答を出来た訳ではなく、悔しい気持ちがあり、英語の重要性を痛感しました。

Briefings

(凌) Brifingでは最先端のセキュリティに関する講演を聞くことができました。

(水澤) BlackHatの奨学金への応募が通り、Briefingsパスを持っていたため、Briefingsを聞くことができました。気になったものをいくつか列挙していきます。

見たもの列挙

Keynote: Guardians of the AI Era: Navigating the Cybersecurity Landscape of Tomorrow

AIのセキュリティへの活用に関する講演。 AICyberChallengeの話もしていた。

Defender-Pretender: When Windows Defender Updates Become a Security Risk

windows defenderのアップデートに用いられるVDMファイルに変更を加えることで、windows defenderのブラックリスト、ホワイトリストに含まれるハッシュを自由に変更することができるようになる攻撃手法とツールの紹介。これは非特権ユーザでも実行可能で、mimikatz等の有名なマルウェアを実行することができるようになってしまう。

まさにセキュリティのカンファレンス、といった発表で聞いていてとても面白かった。特に非特権ユーザでwindows defenderを無効化できてしまうことがすごいと思った。一発目に聞いたBriefingsということもあり、一番印象深い発表。

BingBang: Hacking Bing.com (and much more) with Azure Active Directory

Azure Active Directoryにおける設定不備を突いた攻撃。Supported account typesをAny Azure AD directory - Multi-tenantにすると、外部のAzureユーザによるアクセスを認証なしで許可してしまう。この設定となってしまっているアプリを調査した結果、1298個の脆弱なアプリケーションが発見された。この内、”bingtrivia.azurewebsites.net”ドメインに対して攻撃のデモを行い、検索結果を任意に変更できることを示していた。また、他ユーザーのMicrosoft 365にアクセスし、Outlookメール等の情報を読み取るデモも行っていた。

自社の製品でも設定ミスは起こりうるんだなあ、という感想。 下は、検索結果を変更するデモの結果(発表者Twitterより)

Keynote: Acting National Cyber Director Kemba Walden Discusses the National Cybersecurity Strategy and Workforce Efforts

恐らく国家におけるサイバーセキュリティの話をしていたと思われますが、スライドがない上に使用されている単語が難しく、ほとんど聞き取ることができませんでした。

I Was Tasked With Enrolling Millions of Developers in 2FA - Here’s What Happened

githubにおける2要素認証追加までのサービスとチームの運営の話 技術的な話を期待していたので、少し残念。

(竹中)

Route to Bugs Analyzing the Security of BGP Message Parsing

BGPという文字に惹かれて聴講しました。 従来のBGPのセキュリティ研究ではルーティングセキュリティに焦点が当てられていたが、多くの脆弱性はソフトウェアの実装に起因し埋め込まれるというのをデータとともに解説がされていた。 発表の最後には、ファザーを公開しており、本発表の中でもファザーのデモンストレーションが行われた。 今までルーティングプロトコルのセキュリティを考えたことが無かったので非常に面白かった。 発表資料も公開されているので後日読み直したいと思います。

Windows Agentless C2:(Ab)using the MDM Client Stack

「Windows上にMDMを実装するためのプロトコルを調査していたところ、windowsを悪用することができた」という発表

従来のC2システムの問題点を挙げたうえで、それらを解決するためにLOL(Living off the land)と呼ばれる手法を提案。 いくつかのWindows搭載の機能を比較しながらC2システムを構築するためにはMDMクライアントスタックを用いることが最も適していると説明。WindowsのMDMに関する説明を行い、実際にC2で用いるコードをMDMプロトコルでカプセル化し、コントロールするデモが行われた。

技術的にかなり難しかったため、(特にWindows周り)理解度でいうと2割もないと思う。 しかしながら、標準で組み込まれている機能を悪用するLOLという手法は使用できる機能が制限されるため、様々な工夫がされていて面白い。発表資料が公開されていないので後日読み直すことはできないが、MDM、Windowsについて深く調べてみようと思うきっかけとなった。

Business Hall

ビジネスホールはスポンサー企業がブースを並べて様々なソリューションを展示していました。

(水澤) 各社の製品の説明を受けました。商用のセキュリティの製品について詳しく知らなかったので、様々な製品の説明を聞くことができて面白かったです。ただ、Briefingsと違いスライドのない中での説明もあったので、話を理解するだけで精一杯でした。

(山口) 製品の説明を聞くとくじ引きに参加できるキャンペーンが複数のベンダーによって開催されており、海外の様々なセキュリティベンダーの話を聞きました。

以下の写真はSentinelOneによる製品のプレゼンテーションです。 会社やサービスを守るために攻撃をブロックするだけでなく、攻撃者に偽の情報を掴ませたり、攻撃者を別のサーバーに閉じ込めたりと、敵の動きを知るための製品があることに驚きました。

SentinelOne による製品のプレゼンテーション

セキュリティベンダー以外にもGoogleやO’Reillyなどの様々な会社もブースを出しており、ステッカーなどのグッズを貰いながら、担当者と話をして最新の市場についての情報を聞くことができました。 この他にも、自分が社内で使っているツールを作られている会社の方とお話しする機会もあり、有意義な時間になりました。

DEFCON 31

(凌)DEFCONはBlack Hatに続けて行われるハッキングカンファレンスで、Black Hatとは異なり、スポンサーがいなく、商業色が少ないのが特徴です。講演以外にも様々な「ビレッジ」があり、ビレッジ内ではCTFやワークショップなどの参加型のイベントが行われていました。

Villages

(水澤) 初のDEFCONということで、初日から色々なVillageを回っていました。

Car Hacking Village

車のハッキングを行うvillageでは、テスラ車のハッキングをしていました。自分が見たときはwiresharkか何かでパケットを分析していました。

Car Hacking Village の様子

Packet Hacking Village

パケットキャプチャ系と思われるCTFが開催されていました。個人的には、会場内のネットワーク内の暗号化されていない通信を晒すWall of Sheepが見れて良かったです。

Wall of Sheep

AI Village

(水澤) ChatGPTのようなチャットAIに対するプロンプトインジェクション等を体験しました。が、初日は重すぎて回答が返ってくるまでに時間がかかりすぎたので、途中で退出しました。

(首浦) 最終日にもう一度、挑戦しに行きました。最終日は応答が早かったですが、プロンプトインジェクションが成功しているか否かは人力による判断だったため制限時間以内に認められた回答は4つの内1つだけでした。 最終日にチャレンジしたマシンの内容はクレジットカード番号を流出させるものでした。問題自体も複数あるのですが、その一つ一つの問題に対しても複数の難易度や設定のマシンが用意されていました。おそらく10以上は存在していたような気がします。プロンプトインジェクションを成立させた方法は次の2つです。

  • クレジットカード番号の形式を聞く。ここでは形式のみがXXXXのように回答が返ってくるのですが、詳細を例をあげて説明して欲しいというと内部に保持している番号を教えてくれます
  • 内部のデータベースを修正したいというと、4つの操作を提示されました。追加・表示・削除・修正だったと思います。表示を選択すれば番号を手に入れれます

既に成功確認できたものを複数のマシンに投げていましたが、難易度調整が行われているからか成功するものが4つに止まったという形になります。

AI Village の様子

Lock Pick Village

(水澤) 鍵開けを練習する部屋です。鍵開けは初挑戦でしたが、同行者の方の分かりやすい説明により簡単な南京錠を開けることができました。

Lock Pick Village で鍵開けへの挑戦

(竹中) 会場の雰囲気はこんな感じで、鍵開けの方法を教えている人がいたり、一瞬で開ける猛者がいたりなど結構盛り上がっていました。

Lock Pick Village 会場の雰囲気

Red Team Village

(水澤) このVillageでは主に講演が行われているようでしたが、とても人気で部屋の前には大量の人が並んでいて、目当ての講演を聞くには優先入場券であるTokenの入手が必要でした。この日は、3日目に開催される”Artificial Intelligence for Red Team Operations”の優先入場券であるTokenをもらいに行きました。

Artificial Intelligence for Red Team Operations の優先入場券である Token

Blue Team Village

(水澤) 自分たちが見に行った時は、Red Teamとは対照的にあまり人がいない様子でした。こちらも講演を行うスタイルのようでした。聞きたいものがなかったため、特に何もしませんでした。

Blue Team Village

2日目に手に入れたトークンを使って、AI(ChatGPT)をレッドチームにうまく活用する方法に関する講演を聞きました。近くで他の講演も行っている中、マイクなしで喋っていたので話している内容はほとんど聞き取れませんでした。発表者のgithubに発表資料があることを発見したので、それを見て理解を進めていました。この講演では、例えば絵文字を利用する以下のような手法が紹介されていました。

絵文字を使うことで ChatGPT の返信が創造的になるデモ

絵文字を使うことで、chatgptの返答が創造的になったり、返答の制限を回避できることがあるようです。レッドチーム系の質問には回答してくれないことがあるので、絵文字で試すことは頭に入れておく価値があると思いました。他にも、複数の攻撃手法の違いや、検知回避について解説させるようなプロンプトも紹介されていました。

Merchs

(竹中)いわゆるお土産屋。BlackHatと異なり、公式のグッズ以外にも非公式のグッズも販売されている。なかでもhackerwarehouseは特に人気で最終日まで列が途絶えることがありませんでした。 DEFCONの文字がプリントされたシャツも売っていましたが、2日目には3L、4Lなどの特大サイズしか残っていませんでした…

その他

(水澤) 初のDEFCONということで、各Villagesの雰囲気を確かめることを目的としてほぼ全てのVillagesを回りました。その反面、各Villagesに時間をかけることができませんでした。次回以降は、参加したいVillagesやワークショップを事前に決めて回ってみたいと思いました。

移動

(竹中)初飛行機初海外といったこともあり、かなり不安でした。 ただ、行きも帰りもこれといった事件は起きず心配しすぎだったような気がします。一つ気を付けなければならないのが、インターネットの回線です。実は、今回の遠征で自分だけが海外用のSIMを購入しておらず、外にいるときはほぼインターネットにつながらない状態でした。(スマホの不具合でテザリングも出来ず…)集合場所の確認や連絡などかなり困ったので個人で海外旅行に行く機会があれば気を付けたいと思います。

ホテル

BlackHat参加時はExcalibur、DEFCON参加時はFlamingoに宿泊しました。

Excalibur

Excalibur の外観

28階からの眺め

28階からの眺め

Flamingo

Flamingo の外観

観光

(竹中)Blackhatは大体夕方の5時くらいになると全て閉まってしまいます。 そのため、夜は観光を行っていました。

観光の様子 観光の様子

事件

(匿名希望) Black Hatの1日目、ArsenalでのZ9の発表も終了し、ほっとしてホテルでくつろいでいました。 すると、凌さんからこのようなメッセージが来ました。 「Arsenalのブースでパソコンが忘れられているみたいですがみなさんちゃんとありますか?」 この文章を読み、背筋が凍りました。自分のパソコンをしまった記憶が無かったのです。リュックを確認しましたが、当然そこにパソコンはありませんでした。 凌さんに、運営の方に連絡を取ってもらい、翌日Arsenalの会場にパソコンを受け取りに行きました。 受け取る際、パソコンにロックがかかっていなかった事実も突き付けられ、情けない気持ちになりました。 最後に、運営の方に”Computer Guy”というあだ名をつけられ、写真を一緒に撮りました。

(匿名希望) 私はパスポートや財布、ホテルのカードキーを携帯するために、常時セキュリティポーチを首からかけていました。

セキュリティポーチ

DEFCON2日目、私はメンバーと談笑しながらRed Team Villageに入るまでの長い列に並んでいました。 何かのはずみで胸に手を当てたところ、いつもあるはずのポーチの感触がまるでありません。 少し不安になって首元を触ると、いつも首に掛けているポーチの紐が掛かっていませんでした。 「外出先で紐の結び目が解けて落ちたなら、落ちる時に感触で気づくはず…でも買ったばかりだし解けるとは考えづらいし… 紐を切られて盗まれた?ホテルからDEFCON会場までの短い道のりの間で?もしくはDEFCON会場のどこかで?」 と頭がぐちゃぐちゃになりながらも、PCをBlack Hatの会場に置き忘れた男が目の前にいたので、自分は同類じゃないぞと必死に「多分分からないけどホテルの部屋に忘れたはず、多分きっとそう」とか言って平静を保ったフリをしていたのを覚えています。

Red Team Villageを見終えたのち、早歩きでホテルに戻り、フロントでやり取りをして部屋を確認したところ、無事にセキュリティポーチを発見しました。

もし紛失していたら…と今考えてもぞっとしますし、ホテルの方の優しい対応に感謝しつつ猛省しました。

戒めのためにも、自らに”Security Pouch guy”と名づけました。

(匿名希望) 僕が一番問題児でした。自分の旅程はシアトルで乗り換えて、ラスベガスに行くという流れだったのですがシアトルでの入国審査で引っかかってしまったんですよね。 英語が拙いのもありますが、Black Hatで発表するんだと言うと発表者一覧に名前が載っていなかったので止められました。発表者か確認できなくても参加チケットを見せたんだから許せよって感じです。 別室に連れていかれ1時間くらい尋問を受けました。この途中の荷物検査で社用携帯が出てきたのでまた不信感アップです。最終的にはプレゼンを2分間行うことで許してもらえました。別室でプレゼンを行うやつは僕以外にいないと思います。 乗り継ぎ便も逃し、シアトルで7時間待機させられたのは普通に眠すぎてきつかったです。

二つ目は最終日です。ショッピングモールを歩いていると、写真を撮ってくれと言われそのまま撮ると俺はミュージシャンなんだと。このCDにサイン書くから持ってくれと言われ、そのままやっているとチップを要求されました。そもそも大柄の方に絡まれていたのに途中から3人になり、もう言われるがまま札を渡してました。200ドルくらいいかれました。 自分は”KATSUAGE guy”らしいです。

全体の感想

(凌) 今回はセキュリティ・キャンプのご支援もあり、受講生・チューターを連れていくことができたことに感謝いたします。現地でもたくさんの方にご協力をいただき、ほぼ何事もなく無事に終えられてよかったです。

(山口) 海外の人とコミュニケーションをとったり講演を聞いたりする中で、セキュリティの世界の広さと奥深さを痛いほど学ぶ1週間になりました。 今後もセキュリティに関わり続けながら、また参加できたらと思っています。

(首浦) 英語でのコミュニケーションはかなり難しかったです。ただ、拙い英語能力でも意外と会話ができたり発表時の質疑応答ができたのは嬉しかったです。 来年はアメリカでの成人年齢を超えることもできるので、英語と筋トレを欠かさずやって再チャレンジできたらなと思います。

(水澤) Black Hatでの講演の聴講や、DEFCONでの体験を通して、セキュリティへのモチベーションが高まりました。 Z9の発表では、頂いた質問から自分の調査の不足している点を見つけることができたので、修正していきたいと思います。 英語力の不足も痛感したので、勉強していきたいです。

(竹中) 就活真っ只中なのですがDEFCON blackhatというイベントに参加してセキュリティにかかわる仕事がしたいとより一層思うようになりました。自分も英語が課題なので英語の勉強をしつつ、リベンジしたいと思います。