クライアント認証まわりのエピソード

川口洋氏(以下、川口):ちょっと質問があったので、ここのタイミングで拾っておきたいです。クライアント認証をやっているベースのシステムは、いろいろあると思います。クライアント側を認証しているケースで、「そういう時に突破できちゃうんだよね」とか、「このあたりの設定さえあればよかったのに」とか、クライアント認証まわりのエピソードはあったりしますか?

ルスラン・サイフィエフ氏(以下、ルスラン):最近かなり多いです。クライアント証明書の認証によるアプリやWebアプリであれば、私としてはすごくいいと思います。その質問としては、証明書をどう保存するかが大事になってきて、Windowsの世界であれば、DPNで保存している場合は基本的には現時点では安全です。

どこかにはまだ公開されていない攻撃があるかもしれませんが、少なくとも今のところはDPNからの証明書の奪取ができない状況です。となるとやはりまだいいということです。

ただし、やはりDPNではなくてファイルとして保存してあったり、他のかたちで保存してあるような、クリプトプロバイダーというものがあるのですが、その違うものに入れている場合であれば、システム権限さえ取れればWindows端末からその証明書の奪取ができるのが現実です。

Macの端末の場合はちょっと違っていて、キーチェーンがあります。ユーザー側のキーチェーンとシステム側のキーチェーンがあって、ユーザーのセッションに攻撃者がC2や遠隔操作ができる状態になっていたら、基本的にはすごく簡単にダンプできます。

システム側のキーチェーンに入っている場合は、基本的にはユーザーは自分自身でroot権限でGUIから取るしかないので、まだ安全という感じです。

川口:証明書を普通にさらりとフォルダに置くケースがありそうで怖いですね。

ルスラン:そうですね。大企業の場合は、基本的にどこかに集めてそれを配布するような感じです。でも、バックアップ用に全部の証明書が置いてあったり、ADCSみたいな証明書規約のようなものがあったりするのですが、それが使われている場合は、基本的に我々が普通に再発行をお願いして発行してもらうこともできます。

なのでクラウドのみの環境は、SCP(Secure Copy Protocol)のようなプロトコルが使われている場合もたぶんできると思いますが、まだやったことがありません。まだ攻撃者として夢があるかなと思います(笑)。

川口:攻撃者として夢がある(笑)。恐ろしい。

SELinux onに阻まれるケースはあるか?

最後にみなさんの質問を拾っていく時間になりました。

「TLPT(Threat-Led Penetration Testing)のお話も伺いたいです」と書いてあったのですが、これはぼんやりしすぎているというか、幅が広くてこれだけで1時間のセッションがあると思うので、TLPTだけを取り上げるのなら、またアンケートに書いてもらえたら別でやるかもしれないので、これは飛ばします。他の質問のちょっと細かい話を取り上げていきたいと思います。

「あるシステムに侵入しようとして、"SELinux on"の場合に侵入失敗・断念になる割合はどれくらいでしょうか?」という質問はどうですか。SELinux onに阻まれるケースはありますか?

ルスラン:我々がやっている侵入の中では、Linuxにエクスプロイトを使ってなんとかして侵入するケースはかなり少ないです。基本的にやはり運用や設計問題で何かしてしまうことが多かったり、Linuxにそもそもアクセスが必要だったら、SSHで一般社員がやるようなかたちで、かつバレない感じにすればいいということもあったりします。

外部の場合は、例えばあるサービスが脆弱でそれを利用することはないことはないのですが、かなり少ないのかなと思います。

川口:そうですね。SELinux自体を使いこなすことも難しいし、製品によってはSELinuxをoffで使えと言われたりすると、onにしている環境のほうが今のところは圧倒的に少ないです。

ルスラン:そうですね。

川口:きっちりできればいいのですが、それでも日常のオペレーションを開発者や運用者と同じオペレーションで来られると、SELinuxで許可されていますもんね。

ルスラン:はい。例えばコネクトバックみたいなリバースシェルが取れて、そこから特権昇格をしようとするとSELinuxがかなり邪魔になるけれど、そもそも我々が得たい何かしらの目的にはSELinuxやそもそも特権昇格が必要かというところでは議論になるので、必要に応じてがんばるしかない時もあるし、別に触らなくてもいいこともあります。

川口:「password.xlsxが取れたらだいたいそのまま入りに行くよね」ということになると、SELinux以前の問題だったりします。

ルスラン:そうですね。我々の目的が何でもかんでも侵入していくことではなく、クレジットカード情報や個人情報やソースコードなどの大事な資産を入手することなので、経路は何でもいいんですね。

川口:無理にそこを通らなくてもいいと。

ルスラン:はい。

侵入してデータが取れる割合

川口:なるほど。もう1個質問があって、「9割侵入できるということですが、実際にそこからデータが取れる割合はどの程度でしょう?」ということですが、侵入できるうちデータが取れる割合はどのくらいですか。

ルスラン:それはたぶんだいたい同じぐらいです。ゴールが何になるかで変わったりします。例えば、ある企業はドメイン管理者を取りましょうと。個人的にはまったく何も意味がないと思うのですが「はい、じゃあそうしましょう」ということで終わってしまうケースもあります。(また)「我々の守りたいデータを手に入れられるかどうかまでは確認しましょう」というものもあります。

侵入はどちらも成功しているので確かに9割以上になるけれど、データの取得まで頼まれたところで、できなかったことはほぼないかなと言えるぐらいです。

川口:データの取得がゴールだと言われた時に、取得できなかったことがないというのはすごくいい答えですね。要するに取れるということですね。先ほど牧田さんが言っていた「方法は無限にあるから」というのと一緒で、わかる気がします。

僕もいろいろな企業の方に会うと、ルスランさんにやられることを期待している企業の方が時々いるのですが、本当にみんな取られたいんだなという感じがします(笑)。

ルスラン:そこは簡単に言うと時間と予算の問題もあるので。あとはスコープですね。要は内部フィッシングも入れるとか、内部IRを突破しながらやるとか、IRに捕まったらどうしますかとか、無限の質問があります。

IRが捕まってもいいようなシステムだけの脆弱性を見るのなら、「短縮の時間でいろいろやってできました」というところも見せればいいし、IRが強い会社であれば、「IRのままでやってみましょう」「捕まることが可能か不可能かを見てみましょう」というケースもあります。

川口:今のIR(というワード)は、「SoC(Security Operation Center)のチームがいますよ」とか、「CSIRT(Computer Security Incident Response Team)との連携ができていますよ」とかも含めた感じでいいですか?

ルスラン:そうですね。例えば社内のSoCがあるとか。フォレンジックはまた別ですが、やはり誰かレスポンスができるような守り側のチーム、セキュリティチームみたいな人たちがいるとか、アウトソーシングをしている委託のSoCがいるというようなこともいろいろあったりします。

牧田誠氏(以下、牧田):そのペンテストの目的がセキュリティを試すということもあるし、ブルーチーム、SoCやIR、セキュリティチームが本当に反応できるかどうか。誤検知や、「アラートが来たけれど違ったな」みたいな。ノイズが多いじゃないですか。

そんな時に1回本物のやつを入れてみて、本物のやつが来た時にきちんと、例えば24時間以内に検知して対策できるかどうか。そういった目的でやられているお客さまもいらっしゃいます。

ユーザビリティを落とさないセキュリティ強化の方法は?

川口:みなさん、いろいろな目的があるんですね。データが取れるとか権限が取れるとか、ブルーチームとか。聞きたい話がいっぱいあるのですが、もう1個質問があって。

「多要素認証のあるWebサイトの認証を通すのが毎回面倒です。ユーザビリティを落とさないセキュリティ強化はありませんか?」という質問です。確かに毎回多要素認証を求めてくるなよと、やる側としてもすごく思うところです。

「この裏技を覚えておけば」とか、いろいろ思うところですが、どうですか。多要素認証が全部入れば言うことないのはそうなのですが、それは社内で浸透させにくいし、開発者に関しては開発効率が落ちるから何とかしてくれと言われると思います。この辺はどうですか。例えばお客さんとの会話や報告会でどういう感じのアドバイスをされるのですか。

ルスラン:そうですね。残念ながら、セキュリティ=ユーザビリティではないですからね(笑)。

牧田:でも攻撃されるのを知ると、このあたりもちょっと我慢できるようになるかもしれません。パスワードの話に戻ってしまいますが、例えばIDとパスワードだけの認証で、漏洩パスワード「TPiCS」とか、いろいろなサービスから漏れたパスワードをそのまま使っている方々もいっぱいいるし、それをちょっと1文字変えてとか(で使っている方もいる)。

それでブルートフォースでやられることもあるし。アクティブディレクトリ、ドメインコントローラーで侵入できてハッシュ値をダンプして、8桁だとGPUで何時間ぐらいで解けるんだっけ?

ルスラン:ハッシュの種類によるけどUnityやWindowsのものであれば、たぶん我々のサーバーですと数時間?

牧田:なんですよね。昔はパスワードを8桁にしようよ。6桁はダメよと。

川口:ありましたね。

牧田:そういう時代があったのですが、8桁は数時間で解けます。どうしてもパスワードは漏れます。Emotetの話では、Emotetが最近Cobalt Strikeを使っていて。ルスランさんもペンテストで使っているツールですが、ブラウザに保存したパスワードもダンプできちゃうんですよね。

川口:確かに。

牧田:全部保存をしていたパスワード・IDが漏れてしまう前提で考えると、「ちょっと我慢しようか」と思えるかもしれません。

川口:ブラウザにパスワードを覚えさせるのは、ITじゃない人にはしょうがない気はするのですが、IT業界の人はパスワードマネージャーを会社で導入して何とかしていってほしいなという気がしてしまいます。

牧田:そう思いますね。ルスランさんにブラウザのパスワードをダンプするデモをしてもらえれば、一発でパスワードマネージャーを使おうとなるんです。

(一同笑)

川口:そうですね。

牧田:すべての履歴を取られちゃうので、恐ろしいですよ。

ルスラン:正直に話すと、パスワードマネージャーも端末で実行できるのであればダメです。

牧田:パスワードが取れちゃう?

川口:そうね。

牧田:どうしたらいいのとなっちゃうので。

ルスラン:ないよりはいいですし。

川口:それはそうですね。

ルスラン:パスワードマネージャーはものによっては、例えばシステム権限で動いていたりするので、特権昇格をしなければ権限を昇格しない限りはまだマシということもあったりするのですが、我々がやる時に権限昇格が必要だったら、ゼロデイを探して出してやることもあります。

川口:「ゼロデイを探してくる」とさらりと言いましたね。

(一同笑)

ルスラン:ソフトがたくさんあるので、時間が許す限りはそれはやれるのですが、もちろんペンテストとかテストの期間はそんなに長くないので、例えば1日、2日、3日ぐらいで見つけるものがあったらそれは探し出しますが、それ以上かかるものはちょっと期間内には収まりません。

川口:確かに。でもペンテスターが「ゼロデイを見つけてくる」とさらりと言うのは、僕は衝撃だと思います。

牧田:次回のネタにしたいのですが、セキュリティ製品は守るためにどうしても権限が高くなるじゃないですか。

川口:そうですね。

牧田:そうするとこのセキュリティ製品にゼロデイがあるととんでもないことになるということは、ゼロトラストの話しかり、次回のネタにしたいと思います。我々はセキュリティ製品を信じてしまいますが、ペンテスターは「ゼロデイあるでしょ」ということで「2、3日で見つけられるんだったら見つけておこう」みたいな。そんな感じなんですね。

川口:ルスランさんはそこを疑っていないところがすごいですよね。「見つかるよね」という感覚でやるところが、毎回聞いていてビックリします。

ルスラン:まぁ、仕方ないじゃないですか(笑)。

川口:それはしょうがない。脆弱性がね。

ルスラン:あとは追加で言うと、やはり各サイトには多要素認証が必要だったり、SSOがあると便利だと思います。しらっと言うと、SSOはあるにしても、例えばその中でさらに多要素認証が実現できたらすごくいいなと思ったりします。要は、例えば、AzureのIDPを使っていろいろなアプリケーションにSSOをするのはいいです。

ただし何を追加してほしいかというと、一部のアプリが絶対に守らないといけないアプリがあるので、例えばAWSの管理コンソールやAzureの管理コンソールがあったらそこだけにFIDO(Fast Identity Online)の確認を追加して、SSOされる時はそこにアクセスする瞬間に多要素認証が聞かれ、その多要素認証もできる限りFIDOにすることが、個人的に一番おすすめかなと思います。

川口:「FIDO」はけっこう重要なキーワードな気がしますね。

ルスラン:多要素認証の中では一番マシなやつです。

川口:踏み込んでいきたいキーワードですね。いろいろ聞きたいことは尽きませんが、このあたりでGMO Developers Nightオンラインを締めたいと思います。