3年目社員の海外出張レポ in Las Vegas ~Black Hat USA 2019 Training~

皆さんこんにちは。エンジニアのPoohです。

先日、てっしー@マクニキさんのページ(Black Hat USA 2019 参加レポ)にもありましたが、わたくしPoohもBlackhat USA 2019に参加してきました。中でも8月3日~8月6日の4日間にかけて行われたTrainingにフォーカスし、レポートします。

1) 受講トレーニングに関して
2日間のトレーニング(8/3-8/4, 8/5-8/6)で2日程それぞれ10種類以上、4日間のトレーニング(8/3-8/6)に関しても10種類以上と非常に多くのトレーニングセッションが設けられており、受講するトレーニングを検討する時間も非常にワクワクしていた事を今でも覚えています。
※トレーニング内容によっては即座に席が埋まるものがありました、、、
 来年など参加を検討される方は、合わせてブリーフィングも参加する場合は早期割引などもあるのでトレーニングも早い段階で内容を見ておくことをお勧めします。

・Black Hat USA 2019 | Trainings Schedule
https://www.blackhat.com/us-19/training/schedule/index.html

筆者がエンドポイントセキュリティを担当していることもあり、数あるトレーニングの中で求めていた内容は、"各インフラ(Windows, Mac, Linux)に対する最新の攻撃手法"でした。セキュリティを語る上で、「最新の攻撃手法を知らずして語れない!」。そう思っていた中で以下のトレーニングを見つけました。

・ADVANCED INFRASTRUCTURE HACKING - 2019 EDITION (4 DAY)
https://www.blackhat.com/us-19/training/schedule/index.html#advanced-infrastructure-hacking----edition--day-14046

内容を見てみると、①最新の攻撃手法、②各インフラ以外のAWSやDockerに対するハッキング方法という今後世界的に利用範囲が拡大していくと考えられる分野も包括されていると来たものですから、それはもう即決でした。。。

2) トレーニング概要
受講したトレーニングの概要は以下のようになっています。

Networking & Discovery:
-IPv4, Discovery & Scanning
-IPv6-OSINTWeb 

Technologies:
-DVCS / CI-CD Exploitation
-Insecure 

DeserializationDatabases:
-MySQL
-PostgreSQL
-Oracle
-NoSQL

Windows:
-Enumeration
-AppLocker / GPO Bypass
-Privilege Escalation
-Post Exploitation
-AMSI & AV Bypass

Windows Active Directory:
-Active Directory Enumeration
-AD Delegation Abuse
-Remote Exploitation
-Pivoting & Lateral Movement
-Persistence

Unix:
-Unix Exploitation
-NFS Attacks
-Shell Escapes
-SSH Tunneling
-Privilege Escalation

Specialist:
-Cloud Pentesting
-Container Exploits
-VPN Exploitation
-VoIP Exploitation
-VLAN Exploitation

上記のコンテンツを4日間に分け、順を追いながらハンズオンで学んでいきます。各項目の説明後にはExercise(演習)として実際に学んだことを活かして実践する時間が設けられます。講演資料は500ページにもわたるボリュームで、一日で約125ページ程度進んでいくようなスケジュールでしたので非常にスピーディに感じました。
企業ネットワーク内の一つの端末への侵害をきっかけにその周辺の機器全てをハックしていくというシナリオ構成(初期侵入⇒永続性の確保⇒権限昇格、、、)で、MITREのATT&CKフレームワークに準じていました。

3) トレーニング内容
2) で記載したトレーニングの中でも特に共有したい内容をこちらで記載します。

Unix
Linux環境へのハッキングをメインとした構成で、NFSを悪用した初期侵入からroot権限の取得、またLinux上にデプロイ可能なDocker環境のハッキングまで幅広い構成でした。

※NFS:主にUNIX系OSで利用される分散ファイルシステム。ネットワークを介して別のコンピュータのストレージをマウントでき、そこに保存されているディレクトリやファイルをあたかも手元にあるかのように扱うことができます。ストレージを他のコンピュータに提供するコンピュータをNFSサーバ、サーバの持つストレージにアクセスして利用するコンピュータをNFSクライアントといいます。

[NFSの悪用によるSSH接続手順]
①攻撃者(疑似NFSクライアント)が攻撃対象サーバ(NFSサーバ)のNFS共有フォルダをマウント
②攻撃者がssh-key(公開鍵と秘密鍵)を作成
③攻撃者が②で作成した公開鍵をマウントしたフォルダ配下に配置
(その際に、/.ssh/authrorized_keysに公開鍵を記載)
④攻撃者がsshにて攻撃対象サーバにパスワード要求なしにアクセスを実施

こちらの一連の攻撃は、"ssh x NFS"の組み合わせにより成り立つ攻撃と言えます。ssh接続を行う際はRSA認証を行う必要があります。その為、②の手順にてRSA認証に必要な鍵を攻撃者側で作成しています。しかし、これだけではもちろん攻撃が成功するわけではありません。

上記はあくまで"鍵"の話で実際のログインには"パスワード情報"が必要になります。攻撃者は攻撃対象サーバのパスワード情報を取得していないのでこのままではssh接続できません。ここで、"/.ssh/authorized_keys"というファイルが肝になってきます。"/.ssh/authorized_keys"に公開鍵情報を記載してsshの接続先サーバ(今回であれば、攻撃対象サーバ)に配置しておくことで、接続元がそのサーバにsshでアクセスをする際にパスワードなしでログインが出来るという仕様が有ります。これを攻撃者は悪用しています。


続いて行ったDocker(コンテナ型の仮想環境を作成、配布、実行するためのプラットフォーム)に対するハッキングは、初見であったこともあり新鮮でした。上記の方法で攻撃対象サーバに接続済みの状態でnetstatコマンドを利用し、攻撃対象サーバ環境でPort 2375(Dockerで利用されるメジャーポート)を利用した通信ソケットの存在に気付くところからはじまります。これがDocker Deamon(Dockerを動かすために頑張るやつ)との通信に利用されています。

またdockerコマンドにてコンテナ内のイメージ情報を閲覧し、起動します。Dockerが起動している状態でNFSの悪用によるハッキング同様、sshの公開鍵の配置を行う事で攻撃者は直接Dockerの環境に対してアクセスを可能にしました。

Dockerは利用者のリソース節約の観点から非常に便利なツールです。しかし、Docker内にマルウェアを仕込み、その状態でデプロイさせる等、攻撃者の攻撃手段ともなりえるツールです。我々は、日々変化していく環境に順応しそれに対応するセキュリティで応戦しなければならないと非常に強く感じました。

Specialist
特に私が興味を持ったのは、Cloud Pentestingです。Web ApplicationのURLが与えられ、アクセスする事を契機にハッキングを進めました。以下は攻撃の全体像を示した図となります。


まずブラウザの開発者ツールを見ると"x-amz"のheaderが付与されていた事から当該アプリケーションがAWS上でホストされていることが分かりました(x-amzはAWS環境でホストされるアプリケーションに付与されるHeader情報です)。

また、当該アプリケーションはOSINT(open-source intelligenceの略称。一般に公開されている情報を情報源とした情報収集の手法。)の結果、Github上にソースコードが落ちており、Pythonで書かれたLambda関数であると判明しました。

※Lambda:サーバの準備・管理をしなくても、コードを実行できるサービスのこと。
 Lambda関数:Lambdaにて利用する関数でこれを利用してコード実行等を可能にしている

また、Pythonで記載されたソースコードを見るとリモートからのコード実行の恐れのある脆弱なコードであることが確認出来ました。実際に、アクセスURLの後ろにコマンドを入力する事で認証情報と思われる情報を入手できます。入手した認証情報を用いて、AWSのリソースにアクセスする為にAWS-CLIを利用しました。AWS-CLIを利用すると、特定アカウントリソースの内部情報を閲覧できます。

・AWS-CLI
https://aws.amazon.com/jp/cli/

以下にAWS-CLIを利用した実際の攻撃手順について記載します。

①AWS-CLIにて、s3Buckets内の各ストレージ名称を確認
②認証情報を保有しているであろうストレージの中身のファイルを確認(lsコマンド)
③ssh接続に必要な秘密鍵、公開鍵を検出
④攻撃者がこれら情報を自身の環境へコピー
⑤コピーして取得した公開鍵情報を閲覧し、内部のユーザ名とホスト名を確認
⑥AWS-CLIにて、EC2のdescriptionを入手する為のAPIをキック(⑤で入手した情報がEC2インスタンスとマッチするかを確認)
⑦入手した情報よりEC2インスタンスへssh接続を実施

DockerやCloud Pentestingのハッキングは、Linux(UNIX)のハッキング方法から踏襲されている部分が多く、LinuxのPentesting方法をまずは理解するのがお勧めです!

4) おまけ
最後にラスベガスの思い出について少し。
2019年も社内から複数名、本イベントに参加しました。私は初参加でしたが、例年参加されているメンバに連れられイベント以外の観点でも全力で楽しみました!


こちらの写真は、わが社の技術統括部長にギラデリを"600個分"購入いただいた際の写真です(いやー笑、ごちそうさまでした、、、)。
総じて、Blackhatは普段の業務とはまた異なる形での交流が出来る点や自身のモチベーションに繋がる非常にいい機会でした。来年以降も常連メンバ入りしてしまいそうです。皆さんも是非参加してみてください!!!

トップに戻る

関連記事

前へ

GUIポチポチをフォレンジックして、自動化してみた

次へ

やられ工場つくってみた

Page Top