[ハンズオン]AWS Network Firewallの導入による脅威ハンティング #TNC302 #AWSreInforce

TNC302 | AWS threat huntingのハンズオンレポートです。めちゃくちゃシナリオが良くできていて楽しいハンズオンでした。
2023.06.15

こんにちは、臼田です。

みなさん、AWS環境のフォレンジックしてますか?(挨拶

今回はre:Inforce 2023で行われた以下のハンズオンのレポートです。

概要

タイトル: TNC302 | AWS threat hunting

概要: Are you up for a challenge? This lab will show you how to quickly use AWS Network Firewall to hunt for suspicious network activity that may indicate a compromise of your infrastructure. In this lab, you will be looking for non-TLS TCP traffic that is traversing over port 443 on your network, which is an uncommon type of network traffic and should be investigated. Take this extra challenge to see if you can determine what is going and how you can block this traffic.

概要翻訳: 挑戦する気はありますか? このラボでは、AWS ネットワーク ファイアウォールを迅速に使用して、インフラストラクチャの侵害を示す可能性のある不審なネットワーク アクティビティを追跡する方法を説明します。 このラボでは、ネットワーク上のポート 443 を通過する非 TLS TCP トラフィックを探します。これは、珍しい種類のネットワーク トラフィックであるため、調査する必要があります。 この追加のチャレンジに挑戦して、何が起こっているのか、そしてこのトラフィックをどのようにブロックできるのかを判断できるかどうかを確認してください。

内容

このハンズオンの導入は以下のようになっています。

あなたは最近、AnyCompany の最初のネットワーク セキュリティ エンジニアとして採用されました。最初のセキュリティ監査を完了した後、組織にはネットワーク トラフィックに対する可視性が欠けていると結論付けました。さらに、AnyCompany の 1 つ以上の EC2 インスタンスがマルウェアに感染している可能性があることを懸念しています。推奨事項に基づいて、AWS ネットワーク ファイアウォールと Route 53 リゾルバー DNS を組み合わせて次の目的で使用するネットワーク アーキテクチャを実装するように求められました。

  • ステートフル ファイアウォール ルールを使用して、出力 Web フィルタリングを強制します。
  • DNS トラフィックを監視します。
  • 侵害された可能性があると思われる EC2 インスタンスを特定します。

このラボでは、ドメイン リスト、ルール グループ、監視を組み合わせて VPC を保護し、一連の不正な EC2 インスタンスを特定します。

うーん、ワクワクしますね。

このラボの目的は以下のようになっています。

  • Suricata 互換の侵入防御システム (IPS) ルール仕様に従う AWS ネットワーク ファイアウォールでステートフル ルール グループを構成します。
  • 管理対象 DNS ドメイン リストとカスタム DNS ドメイン リストを組み合わせて使用​​し、不審なクエリを管理者に警告する DNS ファイアウォールを作成します。
  • Amazon CloudWatch の Log Insights と Contributor Insights を使用して、不正な EC2 インスタンスを特定します。

利用するサービスとテクノロジーが明確でイメージしやすいですね。

ハンズオン全体の構成は以下のようになっています。

AWS Transit Gatewayを利用して各VPCが接続していて、アウトバウンド用のInspection-Egress-VPCを経由してそれぞれのVPCが外に出られる構成です。ハンズオンの説明文的には、内部のVPC間通信でもNetwork Firewallを通すようにしているようでした。

よくあるアウトバウンドを1箇所に集約してそこでセキュリティやガバナンスを適用する構成ですね。

今回はある程度この状態が出来上がっていて、Network Firewallにルールを追加し、Route 53 Resolver DNS Firewallを設定し、それぞれで検知・防御したログをCloudWatch Logs InsightやContributor Insightsで確認していきます。

構成の確認

構成図はありましたが、自分で構築しているわけではないため、ネットワークの感覚が掴めていません。ハンズオンの導入として、まずはVPC Reachability Analyzerを利用してEC2から外に出るときのフローを確認します。以下のようになりました。というか、私もしばらく見てなかったですが、それぞれ細かい情報が出てきて根拠がよりわかりやすくなっていますね!

そして、肝心のNetwork Firewallの場所はこうなっています。とりあえずルールは何かしら入っているけど、それだけという感じです。これもここで見れるのすごいですな…

Network Firewallルール設定

このあと、ステートフル ファイアウォール ルールにexample.netなどを追加して検知させるという基本的な動作を確認しました。EC2にセッションマネージャーで接続して動作確認します。無事タイムアウトしましたね。

そして、より高度なルールとして、Suricataルールを追加して行きます。今回はProofpointが提供しているオープンなルールセットを活用します。これはPort 443(通常HTTPS)で通信しているTLS以外の通信を検知してアラートするルールです。

そしてもう1つ、AWSが持っているマネージドルールからThreatSignaturesMalwareActionOrderルールグループを追加します。これはコインマイニングなどのマルウェアを検出するシグネチャです。

Route 53 Resolver DNS Firewall設定

続いてDNS Firewallも設定していきます。こちらにも先程手動で追加したドメインリストも追加しつつ、マネージドのリストも活用します。以下はAWSManagedDomainsAggregateThreatListを選択していて、ドキュメントには「マルウェア、ランサムウェア、ボットネット、スパイウェア、DNS トンネリングなどの複数の DNS 脅威カテゴリに関連付けられたドメインは、複数の種類の脅威のブロックに役立ちます。」とあります。

脅威ハンティング

それぞれ検知と防御のルールを入れたので、この状況を確認していきます。

まずはCloudWatchでContributor Insightsを有効化します。こちらは取り込みに少し時間がかかるので、まず作っておきます。DNS Firewallのログを取り込む設定を入れます。

その間にLogs InsightsでNetwork Firewallのログを確認して、怪しいインスタンスを特定します。Suricataのルールに引っかかっている、つまりPort 443でTLS以外の通信をしているログをクエリします。すると以下のようにいかにも怪しい感じのものがみつかります。

これは中身はFTPの通信で、HTTPSを装ってFirewallなどを通過しつつ通信する動きに見えます。

このIPを控えておきながら、準備できたContributor InsightsでDNSのログを見てみます。

いかにもあかん感じになっていますね。サブドメインだけ切り替えながら通信を繰り返しています。ドメイン部分がbase64になっていることから、ここにデータを含んでいると考えられます。

実際に確認するスクリプトも用意されていました。以下のようになります。

うわー!これはあかん!

というわけで最後にEC2の隔離をしたらハンズオン完了です。

まとめ

非常に良くできたシナリオのハンズオンでした。

「Threat Hunting with AWS Network Firewall Deployment」で調べると同名の似たようなハンズオンコンテンツがいくつか出てきます。今回実施したものと同一ではなかったですが、それらを試してみたり、あるいは別イベントでこのハンズオンが提供されることがあると思うので、見つけた際には是非チャレンジしてみてください。