AWSアカウントに関する
不正使用を整理してみた
2015/02/21
Naoto Katsumi
Agenda
AWS: Amazon Web Service
AWSアカウントに関する不正使用
AWSアカウントに関する不正使用の対策
まとめ
2015/02/21 Copyright 2015 Naoto Katsumi 2
AWS: Amazon Web Service
AWSアカウントに関する不正使用
AWSアカウントに関する不正使用の対策
まとめ
2015/02/21 Copyright 2015 Naoto Katsumi 3
AWS: Amazon Web Service (1/6)
• IaaS(Infrastructure as a Service) の一つ
• 様々なコンポーネントを組み合わせて、システムを構築
• http://aws.amazon.com/jp/what-is-cloud-computing/
Amazon EC2
コンピュータ
リソース
ストレージ
Amazon EBS Amazon S3 Amazon Glacier
データベース
DynamoDB Amazon RDS ElastiCache
DNSサービス
Amazon
Route 53
ロードバランサ
Elastic Load
Balancing
CDN
CloudFront IAM
管理 / セキュリティ
AWS CloudTrail CloudWatch
2015/02/21 Copyright 2015 Naoto Katsumi 4
AWS: Amazon Web Service (2/6)
• セキュリティインシデントのあとに AWS に移行する企業
• CDN Networks エッジサーバ改ざん事件 (2014/06)
http://toolbar.netcraft.com/site_report?url=http%3A%2F%2Fdriver.buffalo.jp%2F, 2015/02/06 閲覧
CDN
CloudFront
CDN Networks の CDN
↓
Google Drive
↓
CloudFront
2015/02/21 Copyright 2015 Naoto Katsumi 5
AWS: Amazon Web Service (3/6)
• AWS を使うためのツール
• AWS SDK for ***
• Android / iOS / JavaScript / Java / .NET / PHP / Python / Ruby
• コマンドラインツール
• AWS コマンドラインツール (CLI)
• AWS Tools for PowerShell
• AWS マネージメントコンソール
• AWS のウェブ管理インターフェイス
• AWSサービスの設定
• AWS 使用料金管理
• AWSアカウントで Sign-in, 二要素認証にも対応
2015/02/21 Copyright 2015 Naoto Katsumi 6
(参考) AWSマージメントコンソール 画面例(1/2)
• EC2 Management Console
2015/02/21 Copyright 2015 Naoto Katsumi 7
(参考) AWSマージメントコンソール 画面例(2/2)
• Billing Management Console, Dashboard
2015/02/21 Copyright 2015 Naoto Katsumi 8
AWS: Amazon Web Service (4/6)
• 共有責任モデル (Shared Responsibility Model)
引用:http://www.slideshare.net/horiyasu/aws-33963790/14
2015/02/21 Copyright 2015 Naoto Katsumi 9
AWS: Amazon Web Service (5/6)
• 例:脆弱性対応
• OpenSSL の脆弱性(CVE-2014-0160) a.k.a HeartBleed
• http://aws.amazon.com/jp/security/security-bulletins/aws-services-updated-to-address-
openssl-vulnerability/
• Amazon のアクション
• CloudFront / ELB / RDS などをアップデート
• Amazon Linux AMI(*) アップデートパッケージ提供
• AWS ユーザのアクション
• EC2 インスタンス上の OpenSSL のアップデート
• CloudFront / ELB の SSL 証明書の入れ替え
(*):
Amazon EC2)で使用するアマゾン ウェブ サービスによって提供される、サポートおよび管理された Linux の
イメージ, http://aws.amazon.com/jp/amazon-linux-ami/
2015/02/21 Copyright 2015 Naoto Katsumi 10
AWS: Amazon Web Service (6/6)
• コンポーネントによって異なる共有責任モデル
• Sharing Security Responsibility for AWS Services
• http://media.amazonwebservices.com/AWS_Security_Best_Practices.pdf
1. Infrastructure Services (Amazon EC2など)
2. Container Services (Amazon RDSなど)
3. Abstracted Services (Amazon S3, Gracierなど)
1. Infrastructure 2. Container 3. Abstracted
責任範囲: Customer < Amazon
2015/02/21 Copyright 2015 Naoto Katsumi 11
AWS に関するインシデント
• AWS に関するインシデント(トラブル)
• 障害?
• CloudFront を中心として DNS 名前解決できず… (2014/11)
• http://togetter.com/li/750523
• 脆弱性によるメンテナンス?
• Xen アップデートによる EC2 メンテナンス (2014/09)
• CVE-2014-7188 / XSA-108
• http://aws.amazon.com/jp/blogs/aws/ec2-maintenance-update-2/
• セキュリティインシデントも発生しています
• AWS アカウントの不正使用
2015/02/21 Copyright 2015 Naoto Katsumi 12
(参考) AWS における脆弱性診断
• AWS に侵入テストおよびスキャンする場合には、事前申請が必要。
• http://aws.amazon.com/jp/security/penetration-testing/
現時点では、当社のポリシーで、m1.small または t1.micro インスタンスタイプのテストは許可してい
ません。これは、お客様がマルチテナント環境で他のお客様と共有する可能性があるリソースに影響
する恐れのある動作を防止するためです。
引用: http://aws.amazon.com/jp/security/penetration-testing/
注意点
(*): インスタンスタイプ=EC2(仮想マシン)のスペックと考えてください。インスタンスタイプごとに、CPU数/メモリ容量/ディスク容量が
違い、EC2使用料金が違います(よいスペックのインスタンスタイプの方が高い)。
2015/02/21 Copyright 2015 Naoto Katsumi 13
AWS: Amazon Web Service
AWSアカウントに関する不正使用
AWSアカウントに関する不正使用の対策
まとめ
2015/02/21 Copyright 2015 Naoto Katsumi 14
AWSアカウントに関する不正使用
• セキュリティインシデントの種類(観測している範囲)
• AWSリソースの不正使用
• (2013/12) Luke Chadwick氏の事案
• AWS上のビジネス資源の削除
• (2014/06) CodeSpcaes.com の事案
• Secure AWS Users Meetup #1 でも、この2つが取り上げられた
引用:http://d.conma.me/entry/2015/01/22/213331
他に AWS に関するセキュリティインシデントがあれば、是非教えてください!
(public / private どちらの事例も welcome)
2015/02/21 Copyright 2015 Naoto Katsumi 15
AWS リソースの不正使用(1/4)
• ある日曜の夜、Luke Chadwick 氏に Amazon からのメール
• 「あなたの AWS アカウントの Access Key を検出したよ」
• AWS マネージメントコンソールにログイン
• 20台の EC インスタンス
• インスタンスタイプ「cc2.8xlarge」
• 3000 $以上(約35万円以上) , 2日間
• 仮想通貨「Litecoin」の採掘に悪用
• Amazon が不正使用料金を補填 引用:http://vertis.io/2013/12/16/unauthorised-litecoin-mining.html
2015/02/21 Copyright 2015 Naoto Katsumi 16
AWS リソースの不正使用(2/4)
• インスタンスタイプ「cc2.8xlarge」の使用料金
引用:旧世代オンデマンドインスタンスの価格, http://aws.amazon.com/jp/ec2/previous-generation/
2015/02/21 Copyright 2015 Naoto Katsumi 17
AWS リソースの不正使用(3/4)
• インシデントの原因
• GitHub レポジトリで公開しているファイルに credentials をハードコード
• GitHub レポジトリと、AWS の credentials(認証情報)を整理してみます:)
• 直感的に分かる資料がほしかったので…
This was a little bit of a surprise, because I’m usually so diligent about not saving credentials into repositories.
After a brief search I found the key buried in an old project that I’d just decided didn’t need to be private.
(意訳)これは少し驚きだった。なぜなら、私は認証情報(Credentials)をレポジトリに保存しないように、いつもとて
も注意を払っていたからだ。少し調べたところ、過去の開発プロジェクト(のソースコード)に埋め込んでいたキー
を見つけた。私はその開発プロジェクトをプライベートにする必要がないと決めたものだった。
引用:http://vertis.io/2013/12/16/unauthorised-litecoin-mining.html
2015/02/21 Copyright 2015 Naoto Katsumi 18
GitHub によるバージョン管理(1/2)
• GitHub, https://github.com/
Git バージョン管理システムの一つ。複数のレポジトリに分散してバージョンを管理できる。
GitHub Git を使ったソースコードホスティングサービス。
リポジトリ バージョン管理されたファイル群の単位。「貯蔵庫」や「倉庫」という意味の英単語。
GitHub
リポジトリ
基本的に public.
有料で private
commit
push
pull
Pull-
request
clone
Pull-
request
2015/02/21 Copyright 2015 Naoto Katsumi 19
GitHub によるバージョン管理(2/2)
• GitHub, https://github.com/
• GitHub は基本的に public reposity(有料で private)
• GitHub リポジトリに認証情報を含めると、第三者が閲覧できる
GitHub
2015/02/21 Copyright 2015 Naoto Katsumi 20
AWS における認証情報 (1/4)
• AWS におけるアカウントの種類
• AWSアカウント
• root 権限に相当
• アカウント情報の設定変更、すべてのAWSサービスの操作が可能
• IAM ユーザ
• ユーザ権限に相当
• AWSアカウントが決めた AWS サービスのみ操作が可能
• IAM ポリシー
引用: http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/iam-intro-account-with-users.diagram.png
2015/02/21 Copyright 2015 Naoto Katsumi 21
AWS における認証情報 (2/4)
• AWS におけるアカウントの認証情報
• Email / パスワード
• AWS アカウントの認証情報
• ユーザ名 / パスワード
• IAM ユーザの認証情報
• IAM ユーザのユーザ名を ID として、パスワード認証
• Access Key ID / Secret
• AWS アカウント, IAM ユーザの認証情報
• プログラムからの AWS アクセスを認証するときに使う。
• Ex. Amazon SDK, AWS Command Line Interface(CLI)
2015/02/21 Copyright 2015 Naoto Katsumi 22
AWS における認証情報 (3/4)
• AWS マネージメントコンソールに Sign-in する場合:
• AWS アカウント : Email/パスワードによる認証
• IAM ユーザ : ユーザ名/パスワードによる認証
AWSアカウント
Email / パスワード
Access Key ID/Secret
IAMユーザ: iam-user-01
ユーザ名 / パスワード
Access Key ID/Secret
AWS Management
Console
2015/02/21 Copyright 2015 Naoto Katsumi 23
AWS における認証情報 (4/4)
• プログラム(SDKなど)から AWS にアクセスする場合
• Access Key ID/Secret による認証
AWSアカウント
Email / パスワード
Access Key ID/Secret
IAMユーザ: iam-user-01
ユーザ名 / パスワード
Access Key ID/Secret
AWS Management
Console
2015/02/21 Copyright 2015 Naoto Katsumi 24
AWS リソースの不正使用(4/4)
• インシデントの背景:
• GitHub の public レポジトリの活用
• Access Key ID/Secret による認証
• 類似事例:
• (2014/04) Joe Moreno 氏の事案
• (2014/08) Defcon22: Is This Your Pipe?, Hacking the Build Pipeline
• (2014/12) andrewdhoffman 氏の事案
参加者の皆さんはどうですか?
(個人・組織)
2015/02/21 Copyright 2015 Naoto Katsumi 25
AWS上のビジネス資源の削除(1/3)
• CodeSpaces.com
• A code-hosting and project management service provider
• CodeSpaces の AWS マネージメントコンソールに第三者が不正アクセス
• AWS 上のビジネス資源をすべて削除されてしまった
• EC2 インスタンス
• AMI(Amazon Machine Image)
• EBS(Elastic Block Store) インスタンスおよびスナップショット
• S3 バケット
• サービス終了に至る…
2015/02/21 Copyright 2015 Naoto Katsumi 26
AWS上のビジネス資源の削除(2/3)
• 事案の時系列(CodeSpcaes 公表資料に基づく(*))
• CodeSpcaes に対して DDoS 攻撃
• DDoS 攻撃の関与者から CodeSpaces にメッセージ
• CodeSpaces の Amazon EC2 control panel に残されていた
• DDoS 攻撃を中止する代わりに、金銭の要求
• CodeSpcaes がパスワードを変更
• すでに攻撃者は別の IAM ユーザ(文脈から判断)を作成済み
• 攻撃者が AWS 上のビジネス資源を削除
(*): http://www.codespaces.com には当時の公表情報が残っていないため、 http://www.youtube.com/watch?v=xJpVp0zMkC0 を参照
引用:http://cl.ly/image/3C1T2S222A46
2015/02/21 Copyright 2015 Naoto Katsumi 27
AWS上のビジネス資源の削除(3/3)
• バックアップは重要だよね
• AWS に限らず、ビジネス継続の観点
引用:スライド29-30, 「2013年版 10大脅威」簡易説明資料, https://www.ipa.go.jp/security/vuln/documents/10threats2013_slide.pdf
2015/02/21 Copyright 2015 Naoto Katsumi 28
AWS: Amazon Web Service
AWSアカウントに関する不正使用
AWSアカウントに関する不正使用の対策
まとめ
2015/02/21 Copyright 2015 Naoto Katsumi 29
AWSアカウントに関する不正使用の対策
• Attack Vectors:
① 公開リポジトリから認証情報を盗み見
② AWS Management Console の認証を突破
• Brute Force Attack / Dictionary Attack / Password List Attack
③ AWS 利用者による内部不正
• 対策:
• 公開リポジトリで認証情報を誤って公開しない(①)
• Amazon IAM ベストプラクティスを実践する(②, ③)
2015/02/21 Copyright 2015 Naoto Katsumi 30
公開リポジトリで認証情報を誤って公開しない(1/2)
• インシデント事例から見る対策:
① GitHub リポジトリに認証情報を含むファイルを push しない
• 認証情報を含むファイルをバージョン管理対象外とする
• .gitignore
• ツールが自動的に .gitignore を構成する場合には、ツールの挙動を把握する
• (2014/12) andrewdhoffman 氏の事案, Figaro
GitHub
①
2015/02/21 Copyright 2015 Naoto Katsumi 31
公開リポジトリで認証情報を誤って公開しない(2/2)
• インシデント事例から見る対策:
② ソースコード/設定ファイルを認証情報を保護する
• 暗号化
• S3向けコマンドラインツール「s3cmd」は .sf3cfg を暗号化可
• ハードコードしない
• 例えば、環境変数に認証情報を格納
• 環境変数の場合、メモリで認証情報が保持される点に注意
• http://blog.kazuhooku.com/2014/06/unixos.html
• http://diary.sorah.jp/2014/06/05/securing-environment-variables
GitHub
②
ハードコードしない場合、どうい
う解が better でしょうか。
2015/02/21 Copyright 2015 Naoto Katsumi 32
Amazon IAM ベストプラクティス
• http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/IAMBestPractices.html
• AWS アカウントのアクセスキーをロックする
• 個々の IAM ユーザーを作成する
• IAM ユーザーへのアクセス権限を割り当てるためにグループを使います
• 最小限の特権を認める
• ユーザーのために強度の高いパスワードを設定する
• 特権ユーザーに対して、MFA を有効化する (②)
• Amazon EC2 インスタンスで作動するアプリケーションに対し、ロールを使用する (①)
• 認証情報を共有するのではなく、ロールを使って委託する
• 認証情報を定期的にローテーションする
• 不要な認証情報の削除
• 追加セキュリティに対するポリシー条件を使用する
• AWS アカウントのアクティビティの履歴の保持 (③)
2015/02/21 Copyright 2015 Naoto Katsumi 33
Amazon IAM ベストプラクティス:
特権ユーザーに対して、MFA を有効化する(1/3)
• MFA: Multi Factor Authentication(多要素認証)
• パスワード + 認証コードによる認証
• Time-based One-Time Password(TOTP) Algorithm
• RFC 6238, https://tools.ietf.org/html/rfc6238
• MFA の有効範囲:
• AWS Management Console ログイン認証
• AWS アカウント / IAM ユーザ
• SDK, AWS コマンドラインツールなどによる API アクセス
• MFA-Protected API (IAM Policy による制限)
• AWS S3 Secure Delete(S3 のバージョニング機能の一部)
2015/02/21 Copyright 2015 Naoto Katsumi 34
Amazon IAM ベストプラクティス:
特権ユーザーに対して、MFA を有効化する(2/3)
• AWS MFA 対応デバイス
• MFA デバイス
• Gemalto 製デバイス
• 仮想MFAアプリケーション
Android AWS Virtual MFA, Google Authenticator
iOS Google Authenticator
Windows Phone Authenticator
BlackBerry Google Authenticator
PC (Windows / Linux / Mac OS) et-otp (eckes' TOTP Java Soft Token)
参考:http://aws.amazon.com/jp/iam/details/mfa/ (et-otp を除く)
2015/02/21 Copyright 2015 Naoto Katsumi 35
Amazon IAM ベストプラクティス:
特権ユーザーに対して、MFA を有効化する(3/3)
• MFA デバイスの紛失および故障時の対応
• http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/LostMFA.html
• IAM ユーザの場合
• AWS Management Console
• [Security Credentials] - [Manage MFA Device] - [Deactivate MFA device]
• AWS アカウントの場合
• https://aws.amazon.com/forms/aws-mfa-support
• メールで確認コードを受領
• Primary Phone Number にカスタマーサポートから TEL. 確認コードを伝える
• Secondary Phone Number にカスタマーサポートから TEL. 確認コードを伝える
• MFA 解除完了… らしい
体験者のブログ記事に基づく (References 参照)
2015/02/21 Copyright 2015 Naoto Katsumi 36
(参考) 2要素認証を提供するサービス群
引用:https://twofactorauth.org/
2015/02/21 Copyright 2015 Naoto Katsumi 37
Amazon IAM ベストプラクティス:
EC2 インスタンスにロールを使用する
• IAM Role
• EC2 に適用すると、インスタンス時に一時的な認証情報を取得できる
• AWS Security Token Service(STS)
• インスタンスメタデータ, http://169.254.169.254/latest/meta-data/iam/security-credentials/role名
• EC2 -> AWS リソースには、その認証情報でアクセスする
• ファイル等でAccess Key ID/Secret を管理する必要がない
引用:http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/roles-usingrole-ec2instance.html
2015/02/21 Copyright 2015 Naoto Katsumi 38
(参考)インスタンスメタデータ
• AWS security の文脈でも出てきます。
• PIVOTING IN AMAZON CLOUDS, Black Hat USA 2014
• https://www.blackhat.com/docs/us-14/materials/us-14-Riancho-Pivoting-In-
Amazon-Clouds.pdf
2015/02/21 Copyright 2015 Naoto Katsumi 39
Amazon IAM ベストプラクティス:
AWS アカウントのアクティビティの履歴の保持(1/3)
• AWS CloudTrail
• AWS サービス全体にわたるログ記録
• AWS API calls
• EC2 / ELB / CloudFront / EBS / RDS / Route 53 / etc …
• AWS Console Sign-in Events
• all IAM user sign-in attempts (successes and failures)
• all federated user sign-in events (successes and failures)
• all successful AWS root account sign-in attempts
• Note, however, that CloudTrail does not record root sign-in failures
• Amazon S3 Bucket にログを保管
• By default, your log files are encrypted using Amazon S3 server-side encryption (SSE)
2015/02/21 Copyright 2015 Naoto Katsumi 40
Amazon IAM ベストプラクティス:
AWS アカウントのアクティビティの履歴の保持(2/3)
• 例:successful AWS root account sign-in attempts
{
"eventVersion": "1.02",
"userIdentity": {
"type": "Root",
"principalId": “xxxxxxxxxxxx",
"arn": "arn:aws:iam::xxxxxxxxxxxx:root",
"accountId": “xxxxxxxxxxxx"
},
"eventTime": "2015-02-13T23:55:57Z",
"eventSource": "signin.amazonaws.com",
"eventName": "ConsoleLogin",
"awsRegion": "us-east-1",
"sourceIPAddress": “x.x.x.x",
"userAgent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36",
"requestParameters": null,
"responseElements": {
"ConsoleLogin": "Success"
},
"additionalEventData": {
"MobileVersion": "No",
“LoginTo”: “https://portal.aws.amazon.com/billing/signup?language=ja_jp& ... (snip)",
"MFAUsed": "Yes"
},
"eventID": "bbaf434c-804f-43d2-b1b0-4ab69aec8aeb",
"eventType": "AwsApiCall",
"recipientAccountId": "xxxxxxxxxxxx"
}
2015/02/21 Copyright 2015 Naoto Katsumi 41
accountId, sourceIPAddressなど
を伏字にしています。
Amazon IAM ベストプラクティス:
AWS アカウントのアクティビティの履歴の保持(3/3)
• どのように活用するか
• AWS CloudTrail パートナーソリューションによる可視化/解析
• Splunk など
• Elasticsearch + Kibana による可視化/解析
• CloudWatch Logs によるモニタリング
• 例:指定したIPアドレス以外から Management Console へのログインを検知
• CloudTrail と CloudWatch Logs を使って Management Console のセキュリティを上げる
• http://blog.manabusakai.com/2014/12/cloudwatch-logs-illegal-access/
まだ情報収集状態。インシデントなどで活用した事例があれば、是非知りたいです:)
2015/02/21 Copyright 2015 Naoto Katsumi 42
AWS: Amazon Web Service
AWSアカウントに関する不正使用
AWSアカウントに関する不正使用の対策
まとめ
2015/02/21 Copyright 2015 Naoto Katsumi 43
まとめ
• AWS アカウントに関する不正使用を中心に
• AWS に関する基本的な情報
• 不正使用への対策
• を整理しました
• 参加した方にとって、何か一つでも得るものがあれば嬉しいです。
• 機会をいただき、ありがとうございました(o_ _) o
2015/02/21 Copyright 2015 Naoto Katsumi 44
References (1/3)
• AWSセキュリティリソース
• http://aws.amazon.com/jp/security/security-resources/
• AWSセキュリティチームへのお問い合わせ
• http://aws.amazon.com/jp/security/vulnerability-reporting/
• http://aws.amazon.com/jp/security/report-suspicious-emails/
• https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/AWSAbuse
• AWS Security Bulletins
• http://aws.amazon.com/jp/security/security-bulletins/
• Secure AWS Users Meetup #1
• http://connpass.com/event/11019/
• http://d.conma.me/entry/2015/01/22/213331
2015/02/21 Copyright 2015 Naoto Katsumi 45
References (2/3)
• Amazon Web Service
• AWS マネージメントコンソール
• http://aws.amazon.com/jp/console/faqs/
• AWS に登場する Credentials
• http://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html
• AWSアカウントに関する不正使用
• (2013/12) Luke Chadwick氏の事案
• http://vertis.io/2013/12/16/unauthorised-litecoin-mining.html
• (2014/07) CodeSpaces事案
• http://www.computerworld.com/article/2491008/cloud-security/hacker-puts--full-
redundancy--code-hosting-firm-out-of-business.html
• http://www.youtube.com/watch?v=xJpVp0zMkC0
2015/02/21 Copyright 2015 Naoto Katsumi 46
References (3/3)
• AWSアカウントに関する不正使用
• (2014/04) Joe Moreno 氏の事案
• http://blog.joemoreno.com/2014/04/5000-security-breach.html
• (2014/08) Defcon22: Is This Your Pipe?, Hacking the Build Pipeline
• https://www.defcon.org/images/defcon-22/dc-22-presentations/Kelley-Anderson/DEFCON-22-Kyle-
Kelley-Greg-Anderson-Is-this-your-pipe-Updated.pdf
• (2014/12) andrewdhoffman 氏の事案
• http://www.devfactor.net/2014/12/30/2375-amazon-mistake/
• AWS MFA 関連
• iPhone5sの交換からAWSコンソールへログインできなくなって復活したところまでの顛末 |
mittoの雑記帳
• http://blog.mittostar.info/2014/07/13/iphone5s%E3%81%AE%E4%BA%A4%E6%8F%9B%E3%81%8B%E3
%82%89aws%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%B8%E3%83%AD%
E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E
3%81%A3/
2015/02/21 Copyright 2015 Naoto Katsumi 47

AWSアカウントに関する不正使用を整理してみた

  • 1.
  • 2.
    Agenda AWS: Amazon WebService AWSアカウントに関する不正使用 AWSアカウントに関する不正使用の対策 まとめ 2015/02/21 Copyright 2015 Naoto Katsumi 2
  • 3.
    AWS: Amazon WebService AWSアカウントに関する不正使用 AWSアカウントに関する不正使用の対策 まとめ 2015/02/21 Copyright 2015 Naoto Katsumi 3
  • 4.
    AWS: Amazon WebService (1/6) • IaaS(Infrastructure as a Service) の一つ • 様々なコンポーネントを組み合わせて、システムを構築 • http://aws.amazon.com/jp/what-is-cloud-computing/ Amazon EC2 コンピュータ リソース ストレージ Amazon EBS Amazon S3 Amazon Glacier データベース DynamoDB Amazon RDS ElastiCache DNSサービス Amazon Route 53 ロードバランサ Elastic Load Balancing CDN CloudFront IAM 管理 / セキュリティ AWS CloudTrail CloudWatch 2015/02/21 Copyright 2015 Naoto Katsumi 4
  • 5.
    AWS: Amazon WebService (2/6) • セキュリティインシデントのあとに AWS に移行する企業 • CDN Networks エッジサーバ改ざん事件 (2014/06) http://toolbar.netcraft.com/site_report?url=http%3A%2F%2Fdriver.buffalo.jp%2F, 2015/02/06 閲覧 CDN CloudFront CDN Networks の CDN ↓ Google Drive ↓ CloudFront 2015/02/21 Copyright 2015 Naoto Katsumi 5
  • 6.
    AWS: Amazon WebService (3/6) • AWS を使うためのツール • AWS SDK for *** • Android / iOS / JavaScript / Java / .NET / PHP / Python / Ruby • コマンドラインツール • AWS コマンドラインツール (CLI) • AWS Tools for PowerShell • AWS マネージメントコンソール • AWS のウェブ管理インターフェイス • AWSサービスの設定 • AWS 使用料金管理 • AWSアカウントで Sign-in, 二要素認証にも対応 2015/02/21 Copyright 2015 Naoto Katsumi 6
  • 7.
    (参考) AWSマージメントコンソール 画面例(1/2) •EC2 Management Console 2015/02/21 Copyright 2015 Naoto Katsumi 7
  • 8.
    (参考) AWSマージメントコンソール 画面例(2/2) •Billing Management Console, Dashboard 2015/02/21 Copyright 2015 Naoto Katsumi 8
  • 9.
    AWS: Amazon WebService (4/6) • 共有責任モデル (Shared Responsibility Model) 引用:http://www.slideshare.net/horiyasu/aws-33963790/14 2015/02/21 Copyright 2015 Naoto Katsumi 9
  • 10.
    AWS: Amazon WebService (5/6) • 例:脆弱性対応 • OpenSSL の脆弱性(CVE-2014-0160) a.k.a HeartBleed • http://aws.amazon.com/jp/security/security-bulletins/aws-services-updated-to-address- openssl-vulnerability/ • Amazon のアクション • CloudFront / ELB / RDS などをアップデート • Amazon Linux AMI(*) アップデートパッケージ提供 • AWS ユーザのアクション • EC2 インスタンス上の OpenSSL のアップデート • CloudFront / ELB の SSL 証明書の入れ替え (*): Amazon EC2)で使用するアマゾン ウェブ サービスによって提供される、サポートおよび管理された Linux の イメージ, http://aws.amazon.com/jp/amazon-linux-ami/ 2015/02/21 Copyright 2015 Naoto Katsumi 10
  • 11.
    AWS: Amazon WebService (6/6) • コンポーネントによって異なる共有責任モデル • Sharing Security Responsibility for AWS Services • http://media.amazonwebservices.com/AWS_Security_Best_Practices.pdf 1. Infrastructure Services (Amazon EC2など) 2. Container Services (Amazon RDSなど) 3. Abstracted Services (Amazon S3, Gracierなど) 1. Infrastructure 2. Container 3. Abstracted 責任範囲: Customer < Amazon 2015/02/21 Copyright 2015 Naoto Katsumi 11
  • 12.
    AWS に関するインシデント • AWSに関するインシデント(トラブル) • 障害? • CloudFront を中心として DNS 名前解決できず… (2014/11) • http://togetter.com/li/750523 • 脆弱性によるメンテナンス? • Xen アップデートによる EC2 メンテナンス (2014/09) • CVE-2014-7188 / XSA-108 • http://aws.amazon.com/jp/blogs/aws/ec2-maintenance-update-2/ • セキュリティインシデントも発生しています • AWS アカウントの不正使用 2015/02/21 Copyright 2015 Naoto Katsumi 12
  • 13.
    (参考) AWS における脆弱性診断 •AWS に侵入テストおよびスキャンする場合には、事前申請が必要。 • http://aws.amazon.com/jp/security/penetration-testing/ 現時点では、当社のポリシーで、m1.small または t1.micro インスタンスタイプのテストは許可してい ません。これは、お客様がマルチテナント環境で他のお客様と共有する可能性があるリソースに影響 する恐れのある動作を防止するためです。 引用: http://aws.amazon.com/jp/security/penetration-testing/ 注意点 (*): インスタンスタイプ=EC2(仮想マシン)のスペックと考えてください。インスタンスタイプごとに、CPU数/メモリ容量/ディスク容量が 違い、EC2使用料金が違います(よいスペックのインスタンスタイプの方が高い)。 2015/02/21 Copyright 2015 Naoto Katsumi 13
  • 14.
    AWS: Amazon WebService AWSアカウントに関する不正使用 AWSアカウントに関する不正使用の対策 まとめ 2015/02/21 Copyright 2015 Naoto Katsumi 14
  • 15.
    AWSアカウントに関する不正使用 • セキュリティインシデントの種類(観測している範囲) • AWSリソースの不正使用 •(2013/12) Luke Chadwick氏の事案 • AWS上のビジネス資源の削除 • (2014/06) CodeSpcaes.com の事案 • Secure AWS Users Meetup #1 でも、この2つが取り上げられた 引用:http://d.conma.me/entry/2015/01/22/213331 他に AWS に関するセキュリティインシデントがあれば、是非教えてください! (public / private どちらの事例も welcome) 2015/02/21 Copyright 2015 Naoto Katsumi 15
  • 16.
    AWS リソースの不正使用(1/4) • ある日曜の夜、LukeChadwick 氏に Amazon からのメール • 「あなたの AWS アカウントの Access Key を検出したよ」 • AWS マネージメントコンソールにログイン • 20台の EC インスタンス • インスタンスタイプ「cc2.8xlarge」 • 3000 $以上(約35万円以上) , 2日間 • 仮想通貨「Litecoin」の採掘に悪用 • Amazon が不正使用料金を補填 引用:http://vertis.io/2013/12/16/unauthorised-litecoin-mining.html 2015/02/21 Copyright 2015 Naoto Katsumi 16
  • 17.
  • 18.
    AWS リソースの不正使用(3/4) • インシデントの原因 •GitHub レポジトリで公開しているファイルに credentials をハードコード • GitHub レポジトリと、AWS の credentials(認証情報)を整理してみます:) • 直感的に分かる資料がほしかったので… This was a little bit of a surprise, because I’m usually so diligent about not saving credentials into repositories. After a brief search I found the key buried in an old project that I’d just decided didn’t need to be private. (意訳)これは少し驚きだった。なぜなら、私は認証情報(Credentials)をレポジトリに保存しないように、いつもとて も注意を払っていたからだ。少し調べたところ、過去の開発プロジェクト(のソースコード)に埋め込んでいたキー を見つけた。私はその開発プロジェクトをプライベートにする必要がないと決めたものだった。 引用:http://vertis.io/2013/12/16/unauthorised-litecoin-mining.html 2015/02/21 Copyright 2015 Naoto Katsumi 18
  • 19.
    GitHub によるバージョン管理(1/2) • GitHub,https://github.com/ Git バージョン管理システムの一つ。複数のレポジトリに分散してバージョンを管理できる。 GitHub Git を使ったソースコードホスティングサービス。 リポジトリ バージョン管理されたファイル群の単位。「貯蔵庫」や「倉庫」という意味の英単語。 GitHub リポジトリ 基本的に public. 有料で private commit push pull Pull- request clone Pull- request 2015/02/21 Copyright 2015 Naoto Katsumi 19
  • 20.
    GitHub によるバージョン管理(2/2) • GitHub,https://github.com/ • GitHub は基本的に public reposity(有料で private) • GitHub リポジトリに認証情報を含めると、第三者が閲覧できる GitHub 2015/02/21 Copyright 2015 Naoto Katsumi 20
  • 21.
    AWS における認証情報 (1/4) •AWS におけるアカウントの種類 • AWSアカウント • root 権限に相当 • アカウント情報の設定変更、すべてのAWSサービスの操作が可能 • IAM ユーザ • ユーザ権限に相当 • AWSアカウントが決めた AWS サービスのみ操作が可能 • IAM ポリシー 引用: http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/images/iam-intro-account-with-users.diagram.png 2015/02/21 Copyright 2015 Naoto Katsumi 21
  • 22.
    AWS における認証情報 (2/4) •AWS におけるアカウントの認証情報 • Email / パスワード • AWS アカウントの認証情報 • ユーザ名 / パスワード • IAM ユーザの認証情報 • IAM ユーザのユーザ名を ID として、パスワード認証 • Access Key ID / Secret • AWS アカウント, IAM ユーザの認証情報 • プログラムからの AWS アクセスを認証するときに使う。 • Ex. Amazon SDK, AWS Command Line Interface(CLI) 2015/02/21 Copyright 2015 Naoto Katsumi 22
  • 23.
    AWS における認証情報 (3/4) •AWS マネージメントコンソールに Sign-in する場合: • AWS アカウント : Email/パスワードによる認証 • IAM ユーザ : ユーザ名/パスワードによる認証 AWSアカウント Email / パスワード Access Key ID/Secret IAMユーザ: iam-user-01 ユーザ名 / パスワード Access Key ID/Secret AWS Management Console 2015/02/21 Copyright 2015 Naoto Katsumi 23
  • 24.
    AWS における認証情報 (4/4) •プログラム(SDKなど)から AWS にアクセスする場合 • Access Key ID/Secret による認証 AWSアカウント Email / パスワード Access Key ID/Secret IAMユーザ: iam-user-01 ユーザ名 / パスワード Access Key ID/Secret AWS Management Console 2015/02/21 Copyright 2015 Naoto Katsumi 24
  • 25.
    AWS リソースの不正使用(4/4) • インシデントの背景: •GitHub の public レポジトリの活用 • Access Key ID/Secret による認証 • 類似事例: • (2014/04) Joe Moreno 氏の事案 • (2014/08) Defcon22: Is This Your Pipe?, Hacking the Build Pipeline • (2014/12) andrewdhoffman 氏の事案 参加者の皆さんはどうですか? (個人・組織) 2015/02/21 Copyright 2015 Naoto Katsumi 25
  • 26.
    AWS上のビジネス資源の削除(1/3) • CodeSpaces.com • Acode-hosting and project management service provider • CodeSpaces の AWS マネージメントコンソールに第三者が不正アクセス • AWS 上のビジネス資源をすべて削除されてしまった • EC2 インスタンス • AMI(Amazon Machine Image) • EBS(Elastic Block Store) インスタンスおよびスナップショット • S3 バケット • サービス終了に至る… 2015/02/21 Copyright 2015 Naoto Katsumi 26
  • 27.
    AWS上のビジネス資源の削除(2/3) • 事案の時系列(CodeSpcaes 公表資料に基づく(*)) •CodeSpcaes に対して DDoS 攻撃 • DDoS 攻撃の関与者から CodeSpaces にメッセージ • CodeSpaces の Amazon EC2 control panel に残されていた • DDoS 攻撃を中止する代わりに、金銭の要求 • CodeSpcaes がパスワードを変更 • すでに攻撃者は別の IAM ユーザ(文脈から判断)を作成済み • 攻撃者が AWS 上のビジネス資源を削除 (*): http://www.codespaces.com には当時の公表情報が残っていないため、 http://www.youtube.com/watch?v=xJpVp0zMkC0 を参照 引用:http://cl.ly/image/3C1T2S222A46 2015/02/21 Copyright 2015 Naoto Katsumi 27
  • 28.
    AWS上のビジネス資源の削除(3/3) • バックアップは重要だよね • AWSに限らず、ビジネス継続の観点 引用:スライド29-30, 「2013年版 10大脅威」簡易説明資料, https://www.ipa.go.jp/security/vuln/documents/10threats2013_slide.pdf 2015/02/21 Copyright 2015 Naoto Katsumi 28
  • 29.
    AWS: Amazon WebService AWSアカウントに関する不正使用 AWSアカウントに関する不正使用の対策 まとめ 2015/02/21 Copyright 2015 Naoto Katsumi 29
  • 30.
    AWSアカウントに関する不正使用の対策 • Attack Vectors: ①公開リポジトリから認証情報を盗み見 ② AWS Management Console の認証を突破 • Brute Force Attack / Dictionary Attack / Password List Attack ③ AWS 利用者による内部不正 • 対策: • 公開リポジトリで認証情報を誤って公開しない(①) • Amazon IAM ベストプラクティスを実践する(②, ③) 2015/02/21 Copyright 2015 Naoto Katsumi 30
  • 31.
    公開リポジトリで認証情報を誤って公開しない(1/2) • インシデント事例から見る対策: ① GitHubリポジトリに認証情報を含むファイルを push しない • 認証情報を含むファイルをバージョン管理対象外とする • .gitignore • ツールが自動的に .gitignore を構成する場合には、ツールの挙動を把握する • (2014/12) andrewdhoffman 氏の事案, Figaro GitHub ① 2015/02/21 Copyright 2015 Naoto Katsumi 31
  • 32.
    公開リポジトリで認証情報を誤って公開しない(2/2) • インシデント事例から見る対策: ② ソースコード/設定ファイルを認証情報を保護する •暗号化 • S3向けコマンドラインツール「s3cmd」は .sf3cfg を暗号化可 • ハードコードしない • 例えば、環境変数に認証情報を格納 • 環境変数の場合、メモリで認証情報が保持される点に注意 • http://blog.kazuhooku.com/2014/06/unixos.html • http://diary.sorah.jp/2014/06/05/securing-environment-variables GitHub ② ハードコードしない場合、どうい う解が better でしょうか。 2015/02/21 Copyright 2015 Naoto Katsumi 32
  • 33.
    Amazon IAM ベストプラクティス •http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/IAMBestPractices.html • AWS アカウントのアクセスキーをロックする • 個々の IAM ユーザーを作成する • IAM ユーザーへのアクセス権限を割り当てるためにグループを使います • 最小限の特権を認める • ユーザーのために強度の高いパスワードを設定する • 特権ユーザーに対して、MFA を有効化する (②) • Amazon EC2 インスタンスで作動するアプリケーションに対し、ロールを使用する (①) • 認証情報を共有するのではなく、ロールを使って委託する • 認証情報を定期的にローテーションする • 不要な認証情報の削除 • 追加セキュリティに対するポリシー条件を使用する • AWS アカウントのアクティビティの履歴の保持 (③) 2015/02/21 Copyright 2015 Naoto Katsumi 33
  • 34.
    Amazon IAM ベストプラクティス: 特権ユーザーに対して、MFAを有効化する(1/3) • MFA: Multi Factor Authentication(多要素認証) • パスワード + 認証コードによる認証 • Time-based One-Time Password(TOTP) Algorithm • RFC 6238, https://tools.ietf.org/html/rfc6238 • MFA の有効範囲: • AWS Management Console ログイン認証 • AWS アカウント / IAM ユーザ • SDK, AWS コマンドラインツールなどによる API アクセス • MFA-Protected API (IAM Policy による制限) • AWS S3 Secure Delete(S3 のバージョニング機能の一部) 2015/02/21 Copyright 2015 Naoto Katsumi 34
  • 35.
    Amazon IAM ベストプラクティス: 特権ユーザーに対して、MFAを有効化する(2/3) • AWS MFA 対応デバイス • MFA デバイス • Gemalto 製デバイス • 仮想MFAアプリケーション Android AWS Virtual MFA, Google Authenticator iOS Google Authenticator Windows Phone Authenticator BlackBerry Google Authenticator PC (Windows / Linux / Mac OS) et-otp (eckes' TOTP Java Soft Token) 参考:http://aws.amazon.com/jp/iam/details/mfa/ (et-otp を除く) 2015/02/21 Copyright 2015 Naoto Katsumi 35
  • 36.
    Amazon IAM ベストプラクティス: 特権ユーザーに対して、MFAを有効化する(3/3) • MFA デバイスの紛失および故障時の対応 • http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/LostMFA.html • IAM ユーザの場合 • AWS Management Console • [Security Credentials] - [Manage MFA Device] - [Deactivate MFA device] • AWS アカウントの場合 • https://aws.amazon.com/forms/aws-mfa-support • メールで確認コードを受領 • Primary Phone Number にカスタマーサポートから TEL. 確認コードを伝える • Secondary Phone Number にカスタマーサポートから TEL. 確認コードを伝える • MFA 解除完了… らしい 体験者のブログ記事に基づく (References 参照) 2015/02/21 Copyright 2015 Naoto Katsumi 36
  • 37.
  • 38.
    Amazon IAM ベストプラクティス: EC2インスタンスにロールを使用する • IAM Role • EC2 に適用すると、インスタンス時に一時的な認証情報を取得できる • AWS Security Token Service(STS) • インスタンスメタデータ, http://169.254.169.254/latest/meta-data/iam/security-credentials/role名 • EC2 -> AWS リソースには、その認証情報でアクセスする • ファイル等でAccess Key ID/Secret を管理する必要がない 引用:http://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/roles-usingrole-ec2instance.html 2015/02/21 Copyright 2015 Naoto Katsumi 38
  • 39.
    (参考)インスタンスメタデータ • AWS securityの文脈でも出てきます。 • PIVOTING IN AMAZON CLOUDS, Black Hat USA 2014 • https://www.blackhat.com/docs/us-14/materials/us-14-Riancho-Pivoting-In- Amazon-Clouds.pdf 2015/02/21 Copyright 2015 Naoto Katsumi 39
  • 40.
    Amazon IAM ベストプラクティス: AWSアカウントのアクティビティの履歴の保持(1/3) • AWS CloudTrail • AWS サービス全体にわたるログ記録 • AWS API calls • EC2 / ELB / CloudFront / EBS / RDS / Route 53 / etc … • AWS Console Sign-in Events • all IAM user sign-in attempts (successes and failures) • all federated user sign-in events (successes and failures) • all successful AWS root account sign-in attempts • Note, however, that CloudTrail does not record root sign-in failures • Amazon S3 Bucket にログを保管 • By default, your log files are encrypted using Amazon S3 server-side encryption (SSE) 2015/02/21 Copyright 2015 Naoto Katsumi 40
  • 41.
    Amazon IAM ベストプラクティス: AWSアカウントのアクティビティの履歴の保持(2/3) • 例:successful AWS root account sign-in attempts { "eventVersion": "1.02", "userIdentity": { "type": "Root", "principalId": “xxxxxxxxxxxx", "arn": "arn:aws:iam::xxxxxxxxxxxx:root", "accountId": “xxxxxxxxxxxx" }, "eventTime": "2015-02-13T23:55:57Z", "eventSource": "signin.amazonaws.com", "eventName": "ConsoleLogin", "awsRegion": "us-east-1", "sourceIPAddress": “x.x.x.x", "userAgent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36", "requestParameters": null, "responseElements": { "ConsoleLogin": "Success" }, "additionalEventData": { "MobileVersion": "No", “LoginTo”: “https://portal.aws.amazon.com/billing/signup?language=ja_jp& ... (snip)", "MFAUsed": "Yes" }, "eventID": "bbaf434c-804f-43d2-b1b0-4ab69aec8aeb", "eventType": "AwsApiCall", "recipientAccountId": "xxxxxxxxxxxx" } 2015/02/21 Copyright 2015 Naoto Katsumi 41 accountId, sourceIPAddressなど を伏字にしています。
  • 42.
    Amazon IAM ベストプラクティス: AWSアカウントのアクティビティの履歴の保持(3/3) • どのように活用するか • AWS CloudTrail パートナーソリューションによる可視化/解析 • Splunk など • Elasticsearch + Kibana による可視化/解析 • CloudWatch Logs によるモニタリング • 例:指定したIPアドレス以外から Management Console へのログインを検知 • CloudTrail と CloudWatch Logs を使って Management Console のセキュリティを上げる • http://blog.manabusakai.com/2014/12/cloudwatch-logs-illegal-access/ まだ情報収集状態。インシデントなどで活用した事例があれば、是非知りたいです:) 2015/02/21 Copyright 2015 Naoto Katsumi 42
  • 43.
    AWS: Amazon WebService AWSアカウントに関する不正使用 AWSアカウントに関する不正使用の対策 まとめ 2015/02/21 Copyright 2015 Naoto Katsumi 43
  • 44.
    まとめ • AWS アカウントに関する不正使用を中心に •AWS に関する基本的な情報 • 不正使用への対策 • を整理しました • 参加した方にとって、何か一つでも得るものがあれば嬉しいです。 • 機会をいただき、ありがとうございました(o_ _) o 2015/02/21 Copyright 2015 Naoto Katsumi 44
  • 45.
    References (1/3) • AWSセキュリティリソース •http://aws.amazon.com/jp/security/security-resources/ • AWSセキュリティチームへのお問い合わせ • http://aws.amazon.com/jp/security/vulnerability-reporting/ • http://aws.amazon.com/jp/security/report-suspicious-emails/ • https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/AWSAbuse • AWS Security Bulletins • http://aws.amazon.com/jp/security/security-bulletins/ • Secure AWS Users Meetup #1 • http://connpass.com/event/11019/ • http://d.conma.me/entry/2015/01/22/213331 2015/02/21 Copyright 2015 Naoto Katsumi 45
  • 46.
    References (2/3) • AmazonWeb Service • AWS マネージメントコンソール • http://aws.amazon.com/jp/console/faqs/ • AWS に登場する Credentials • http://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html • AWSアカウントに関する不正使用 • (2013/12) Luke Chadwick氏の事案 • http://vertis.io/2013/12/16/unauthorised-litecoin-mining.html • (2014/07) CodeSpaces事案 • http://www.computerworld.com/article/2491008/cloud-security/hacker-puts--full- redundancy--code-hosting-firm-out-of-business.html • http://www.youtube.com/watch?v=xJpVp0zMkC0 2015/02/21 Copyright 2015 Naoto Katsumi 46
  • 47.
    References (3/3) • AWSアカウントに関する不正使用 •(2014/04) Joe Moreno 氏の事案 • http://blog.joemoreno.com/2014/04/5000-security-breach.html • (2014/08) Defcon22: Is This Your Pipe?, Hacking the Build Pipeline • https://www.defcon.org/images/defcon-22/dc-22-presentations/Kelley-Anderson/DEFCON-22-Kyle- Kelley-Greg-Anderson-Is-this-your-pipe-Updated.pdf • (2014/12) andrewdhoffman 氏の事案 • http://www.devfactor.net/2014/12/30/2375-amazon-mistake/ • AWS MFA 関連 • iPhone5sの交換からAWSコンソールへログインできなくなって復活したところまでの顛末 | mittoの雑記帳 • http://blog.mittostar.info/2014/07/13/iphone5s%E3%81%AE%E4%BA%A4%E6%8F%9B%E3%81%8B%E3 %82%89aws%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%B8%E3%83%AD% E3%82%B0%E3%82%A4%E3%83%B3%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%8F%E3%81%AA%E 3%81%A3/ 2015/02/21 Copyright 2015 Naoto Katsumi 47