Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
雑な攻撃からELBを守る一工夫 +おまけ / Know-how to protect serv...
Search
hiroga
June 26, 2022
Technology
2.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
雑な攻撃からELBを守る一工夫 +おまけ / Know-how to protect servers from miscellaneous attacks
hiroga
June 26, 2022
More Decks by hiroga
See All by hiroga
Lip Reading with LLMs? Visual Speech Recognition
hiroga
0
55
Gaussian Splatting Hands-on
hiroga
0
110
マルチモーダル理解と生成の統合 DeepSeek Janus, etc... / Multimodal Understanding and Generation Integration
hiroga
0
730
LlamaGen: LlamaのNext-Token予測を使った画像生成 / Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation
hiroga
0
590
人事評価GPTsで評価の本質に向き合おう! / HR GPTs: Essential evaluations focus!
hiroga
1
470
生成AI元年を個人的に振り返る / Reflecting on First Year of the Generative-AI
hiroga
0
430
AWS Startup Day 2023 今日ここで! コスト削減ハンズオン / Cost-Saving Hands-On today!
hiroga
0
190
ChatGPT社内活用資料 / Internal use of ChatGPT
hiroga
0
190
マルチテナントSaaSのカスタム要件に、 Auth0テナントを分割せず向き合う! / Multi tenant SaaS with Auth0
hiroga
1
3.3k
Other Decks in Technology
See All in Technology
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
0
360
実装は速くなった、レビューはどうする? ― 自身のレビューをAIで再現させるサーヴァントエンジニアリングのすゝめ / Implementation got faster. So what about reviews? — An invitation to Servant Engineering: Recreating your own code reviews with AI
nrslib
7
3.9k
Diagnosing performance problems without the guesswork
elenatanasoiu
0
170
サイバーセキュリティ概論 / Introduction to Cybersecurity
ks91
PRO
0
160
美味しいスイスチーズを作ろう🧀🐭
taigamikami
1
240
AI活用を推進するために ファインディが下した、一つの小さな決断
starfish719
0
250
SIer20年! 培ったスキルがスタートアップで輝く時
shucho0103
0
440
探して_入れて_作って_使う_Agent_Skills___LT.pdf
peintangos
2
160
Terraformモジュールは、なぜ「魔境」化するのか
hayama17
1
190
protovalidate-es を導入してみた
bengo4com
0
110
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
価格.comをAI駆動で全面刷新する ー 30年分の技術的負債を返し、次の30年の土台をつくる ー / AI Engineering Summit Tokyo 2026
tkyowa
49
54k
Featured
See All Featured
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
480
First, design no harm
axbom
PRO
2
1.2k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.5k
WENDY [Excerpt]
tessaabrams
11
38k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Between Models and Reality
mayunak
4
330
A designer walks into a library…
pauljervisheath
211
24k
Amusing Abliteration
ianozsvald
1
200
Marketing to machines
jonoalderson
1
5.4k
Transcript
雑な攻撃からサーバーを守る一工夫 +おまけ 2022-06-26 JAWS-UG 福岡 #12:9度目もちょっと濃い目にAWSの話をしてみよう #jawsugfuk #jawsug Hiroaki
Ogasawara @xhiroga
目次 • はじめに • 攻撃 • 防御 • まとめ •
??? • 今度こそおわり • 参考
免責 • 発表者はセキュリティの専門家ではありません。 ◦ 現在学習中の内容を発表しています。 ◦ 誤りが含まれる可能性があります。 はじめに
自己紹介 はじめに
使ってね! はじめに
None
攻撃
None
ごく普通のアーキテクチャです 攻撃 ALB ECS DB リスナーは HTTPSのみ 有効 React (SPA)
(数年前)CTO「WAF導入したい〜!」 攻撃 現 CTO WAF導入したい〜! コストかかりません? でも攻撃されてますよ
マジすか?
マジ。 攻撃来てました。 URL未公開なのに。 (攻撃元IPアドレスも乗っ取り被害者の 可能性があるため隠してます) 攻撃 全部ウチのサーバーに 存在しないパス
思ってたのと違った 思ってた攻撃 • APIエンドポイントを調べた上での標的型攻撃 • アプリケーションが用いるパスに対して、SQL インジェクションなどを試みる 実際の攻撃
• AWSが持っているIPアドレスを狙った無差別型 攻撃(たぶん) • .envの誤コミットや.gitの誤デプロイなど、広くあ りそうな間違いを狙う • Binanceなどの大手暗号資産取引所への攻撃 の余波らしいものもある 攻撃
大手暗号資産取引所への攻撃の余波 GET /bapi/fiat/v1/public/fiatpayment/menu?currency=CNY Accept: application/json, text/plain, */* Host: www.binance.com
User-Agent: BNC/2.37.0 (build 10; iOS 14.8.0) Alamofire/4.9.0 Mclient-X-Tag: pch5D9lsORjgObhyjdSK timeout: 3000 Connection: close 実際の攻撃 攻撃 無差別攻撃 GET /.env Host: ***.***.***.*** User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Accept: */* Accept-Encoding: gzip ※あくまで私の案件で観測された攻撃を分類しただけで、汎用性や網羅性は全く保証できません。
影響 • 存在しないパスにアクセスされるので、4XXエラーが大量に出る ◦ モニタリングの4XXが使い物にならない • 万が一存在する脆弱性を突かれたら不安 攻撃
推測 手法 • AWSの持っているIPアドレスの範囲を自動で 攻撃? • 過去に攻撃対象だったIPアドレスを、私達が引 き当ててしまった? • 世界中のIPv4の範囲を自動で攻撃?
• DNSサーバーへのブルートフォース攻撃が成 功し、ドメインを取得した? 攻撃者がIPアドレスでアクセスしていると推測した場 合、TLS証明書とはドメインが違うのを無視しているこ とになる。まあ攻撃者は気にしないか... 目的 • 侵入可能なサーバーの探索? • セキュリティの勉強? 攻撃
防御
Hostヘッダーで防ぐ 攻撃 無差別攻撃(再掲) GET /.env Host: ***.***.***.*** User-Agent: Mozilla/5.0 (Windows
NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Accept: */* Accept-Encoding: gzip 大手暗号資産取引所への攻撃の余波(再掲) GET /bapi/fiat/v1/public/fiatpayment/menu?currency=CNY Accept: application/json, text/plain, */* Host: www.binance.com User-Agent: BNC/2.37.0 (build 10; iOS 14.8.0) Alamofire/4.9.0 Mclient-X-Tag: pch5D9lsORjgObhyjdSK timeout: 3000 Connection: close IPアドレス総当りで攻撃しているせいか *1、Host ヘッダーが的外れ
※あくまで私の案件で効果が高かっただけで、違う攻撃には効果が薄い可能性があります。
6/22 12:16ごろ適用 → 観測範囲では攻撃を 100%ブロック ※6/22以降のAllowedはおそらく全て正常なリクエスト
それ以外の案 • ALBのHost-based Routingで防ぐ ◦ 指定したホスト名以外は403を返す • CDNで防ぐ ※私達がWAFを用いたのは、単にすでにWAFを使っていたから 防御
参考: ALBへのアクセスを特定のHostヘッダのみに限定する方法の一例 - Developers.io
試したけど上手く行かなかった案 防御 マネジメントルール 有効だが取りこぼしも ある
まとめ
意外と攻撃を受けている • 見直してみましょう。 • 繰り返しますが、発表者は専門家ではありません。 ◦ 学習中の内容や誤っている可能性のある内容を含 みます。 • 皆さんの事例もこの後教えてください!
まとめ
ちょっと待った!
Hostヘッダーで防ぐ ちょっと待った! 無差別攻撃(再掲) GET /.env Host: ***.***.***.*** User-Agent: Mozilla/5.0 (Windows
NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Accept: */* Accept-Encoding: gzip 大手暗号資産取引所への攻撃の余波(再掲) GET /bapi/fiat/v1/public/fiatpayment/menu?currency=CNY Accept: application/json, text/plain, */* Host: www.binance.com User-Agent: BNC/2.37.0 (build 10; iOS 14.8.0) Alamofire/4.9.0 Mclient-X-Tag: pch5D9lsORjgObhyjdSK timeout: 3000 Connection: close IPアドレス総当りで攻撃しているせいか *1、Host ヘッダーが的外れ いやいや、ドメインってIPアドレスか ら逆引きできるのでは? 攻撃者、なぜやらない?
IPアドレスからドメイン名を引く方法(2案) 1. PTRレコードを見る 2. TLSでサーバー証明書を取得し、証明書内のドメインを読む 2. を実験します💡 ちょっと待った!
実験 import ssl from os import environ import OpenSSL host_ip
= “8.8.8.8” cert = ssl.get_server_certificate((host_ip, 443)) x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert) components = x509.get_subject().get_components() hostname_byte = components[0][1] print(hostname_byte.decode('UTF-8')) ちょっと待った!
結果: できる! ちょっと待った! dns.google
• そもそもが「雑な攻撃」なので、攻撃者もいちいち気にしていない? • 同一IPで複数Hostを提供している場合にややこしい? • 私達のサーバーを狙った攻撃ではない? • etc… → 結論、攻撃者の考えはよくわからない...
なぜ使わない...? ちょっと待った!
補足 セキュリティエンジニアの友人に伺いました。 IPアドレスを基にTLS証明書を取得し、記載されているドメインと突き合わせる手法は、ホワイトハッカーが脅威 ハンティングの一環でフィッシングサイトを検出するために利用しているとのこと。 ちょっと待った!
今度こそおわり
今度こそおわり • 雑な攻撃は一工夫で防げる • セキュリティを考え出すと、本質的な理解が必要だなぁ と気づく • 参加者の皆様、セキュリティの話しましょう!!! ちょっと待った!
参考
• [AWS]AWSのIP帯域を狙った攻撃の実態と対策 • ALBへのアクセスを特定のHostヘッダのみに限定する方法の一例 • その他、ご助言をくださった皆様 参考