Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?

2,427 views

Published on

第7回Security-JAWSの発表資料です!
AWSとHoneypot、そしてElasticStackを活用してのログ分析についてです。

Published in: Engineering
  • Hello! High Quality And Affordable Essays For You. Starting at $4.99 per page - Check our website! https://vk.cc/82gJD2
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?

  1. 1. Technology Innovation Group 2017.11.13(Mon) Masamitsu Maehara 経済的にハニーポットの ログ分析をするためのベストプラクティス? - SecurityJAWS -
  2. 2. 自己紹介 l 前原 応光(まえはら まさみつ) l Future Architect, Inc. l Technology Innovation Group l エンプラでAWSとかゴニョゴニョやってます l ゆるふわエンジニア @micci184
  3. 3. 1 登場人物のご紹介 2 やりたいこと 3 構成について 4 ログを取り込むには 5 どんな結果が出たのよ 6 まとめ
  4. 4. X X
  5. 5. HoneyPot l 高対話型ハニーポット l 本物のOSやアプリケーションを利用する l 情報が得られやすい l リスク高い l 低対話型ハニーポット l OSやアプリケーションをエミュレートして監視する l 機能制限がある l 攻撃者にバレる可能性がある l 高対話型より安全
  6. 6. Dionaea l 低対話型ハニーポット l マルウェア収集するよ l SMB/HTTP/HTTPS/FTP/TFTP/MSSQL/SIP l それっぽくするために、フロントの画面はつくる Cowrie l 低対話型ハニーポット l SSH特化 l Kippoよりもよくできている
  7. 7. Elastic Stack l Logstash: 取り込んで加工してストア l Beats: データシッパー(色々とよしなにやってくれる) l Elasticsearch: 検索や分析に使われてる l Kibana: ビジュアライズやダッシュボードが作れる
  8. 8. Logstash l INPUT: 様々なデータソースを収集 l Filter: PluginのGrokや地理情報を得るためのGeoIPなどを 使いフィルタをかける l Output: フィルタしたデータを送る Logstash INPUT FILTER OUTPUT
  9. 9. ここまで紹介したのを AWSで環境を構築しますー
  10. 10. ! AWSで構築するハニーポットは、 低対話型です!!
  11. 11. やりたいこと l いろんなリージョンにハニーポットを配置したい l 工夫することでマルウェアの収集に影響があるのか l リージョンごとで攻撃の傾向が違うのかみたい l いろんなログを収集し、可視化・分析したい l お金を節約したい
  12. 12. AWSだしリージョンあるし いろんなところに配置しよう
  13. 13. Ireland Virginia Saopaulo Tokyo Singapore California Canada Cowrie Elastic Stack Dionaea ×4 Cowrie Cowrie Cowrie Cowrie Cowrie
  14. 14. Ireland Virginia Saopaulo Tokyo Singapore California Canada 110% 100%118% 160% 126% 131% 109% バージニアを基準にした場合の料金比率 t2.microで比較
  15. 15. Dionaea、Cowrieで どんなログ取得したい?
  16. 16. Dionaea l マルウェアを収集し、スキャンかけたい l ドメイン、IPアドレスで変化するのか l ドメイン、IPアドレスをpastebin.comに書いたら変化するのか Cowrie l 対象ログをCowrie.jsonとする l パスワードやユーザ名の傾向を知る l どこの国から攻撃してきているかを知る l Cowrieの配置場所として良いところとは?
  17. 17. どうやってログを収集する?
  18. 18. どうやってログを収集する? l 各リージョンにあるcowrieのログをElasticStackに送る l Dionaeaで収集したログも送る Cowrie Cowrie Cowrie Cowrie ElasticStack dionaea dionaea dionaea dionaea
  19. 19. どうやってログを収集する? l 各リージョンにあるcowrieのログをElasticStackに送る l Dionaeaで収集したログも送る Cowrie Cowrie Cowrie Cowrie ElasticStack dionaea dionaea dionaea dionaea X
  20. 20. l 常にElasticStackを起動したくない l できるだけログがロストしない仕組み にしたい l いつでもログを取り出したい
  21. 21. てことで、こんな構成 l ログはAWSサービスに寄せる l S3やCloudWatch Logsに保管 Cloudwatch Logs Bucket Attack Cowrie Dionaea ElasticStack Attack
  22. 22. てことで、こんな構成 l ログはAWSサービスに寄せる l S3やCloudWatch Logsに保管 Attack Cowrie Dionaea ElasticStack Attack ここにログを集める! Cloudwatch Logs Bucket
  23. 23. Dionaea
  24. 24. Dionaeaの準備 1. Dionaeaを構築を4台構築する(リージョンは、バージニア) 2. それっぽいトップページを作成する 3. ドメインを取得する 4. 取得したドメインとIPアドレスをpastebin.comに記載する 5. Route53のロギングを有効にする 6. 放置する 7. 定期的に収集したマルウェアをスキャンし、スキャン結果の ログをS3にアップロード 8. Logstashでログを取得し、Elasticsearchにストア
  25. 25. l dionae02: architect-tech.com → PASTEBIN l dionae01: Global IP address l dionae03: Global IP address l dionae04: architect-tech.net → PASTEBIN PASTEBINに公開する・しない
  26. 26. マルウェアのスキャン l マルウェアはbinariesディレクトリに格納される l 複数のアンチウィルスソフトでスキャンしたいので、VirusTotal を利用する l VirusTotalはAPIを提供している(1分間に4回まで) l AmazonLinuxは、Pythonの実行環境が整っているので Pythonでスクリプト作成 l スキャン結果のログをS3にアップロード dionaea01 dionaea04 Bucket ...
  27. 27. Cowrie
  28. 28. Cowrieの準備 1. Cowrieを構築を各リージョンに構築する 2. 取得したいログを対象にAWS Logsのconfファイルを作成 対象: cowrie.json 3. VPC FlowLogsのログを可視化したいので、Cowrieにアタッチ されているENIに対してVPC FlowLogs有効化 #VPCレベルでやるとすべてのENIが対象になるので注意 4. 放置する 5. Logstashでログを取得し、Elasticsearchにストア
  29. 29. Cowrie California Cowrie Cowrie Cowrie Cowrie Cowrie Cloudwatch Logs Canada Cloudwatch Logs Ireland Cloudwatch Logs Saopaulo Cloudwatch Logs Singapore Cloudwatch Logs Tokyo Cloudwatch Logs Logstash Virginia ログ集約方法 l CloudWatch LogsにCowrieのログをアップロード l LogstashからCloudWatch LogsのLog Groupからログを取得
  30. 30. Logstash
  31. 31. 取得したいログ l CloudWatch LogsにあるCowrie.json l CloudWatch LogsにあるVPCFlow Logs l CloudWatch LogsにあるRoute53のログ l S3にあるMalwarescanLogs Grok : VpcFlow Logs & Route53 JsonFilter : Cowrie.json & Scan Logs Logstashのフィルタ対応
  32. 32. input { cloudwatch_logs { region => "us-east-1" log_group => [ "/aws/route53/architect-tech.com" ] sincedb_path => "/var/lib/logstash/sincedb_architect_tech_com" } } filter { grok{ patterns_dir => [ "/etc/logstash/patterns/vpcflowlogs_patterns" ] match => { "message" => "%{VPCFLOWLOG}"} } date { match => ["start_time", "UNIX"] target => "@timestamp" } geoip { source => "src_ip" target => "src_geoip" } } output { elasticsearch { hosts => [ "localhost:9200" ] index => ”vpcflow-logs-%{+YYYYMMdd}" } } # VPC_Flow_Logs VPCFLOWLOG %{NUMBER:version} %{NUMBER:account_id} %{NOTSPACE:interfac e_id} %{IP:src_ip} %{IP:dst_ip} %{POSINT:src_port} %{POSINT:dst_port} %{NOTSP ACE:protocol_id} %{NOTSPACE:packets} %{NOTSPACE:bytes} %{NUMBER:start_ti me} %{NUMBER:end_time} %{NOTSPACE:action} %{NOTSPACE:log_status} ★Pattern FIle ★Conf FIle VpCFlow Logs l InputCloudWatch Logs Pluginのインストールが必須 l GrokPatternは外だし l GrokFillterから呼び出す l UNIXタイムなので、Date フィルタで定義する l GeoIPで地理情報を取得 l OutputでIndexを定義 l あらかじめIndexTemplateを つくっておくこと (作り方は割愛)
  33. 33. input { cloudwatch_logs { region => "us-west-1" log_group => [ "california_cowrie" ] sincedb_path => "/var/lib/logstash/sincedb_vpcflowlogs_california" } } filter { grok { patterns_dir => [ "/etc/logstash/patterns/route53_patterns" ] match => { "message" => "%{ROUTE53LOG}" } } date { match => [ "date", "ISO8601" ] target => "@timestamp" } geoip { source => "resolver_ip" target => "src_geoip" } } output { elasticsearch { hosts => [ "localhost:9200" ] index => ”Route53-logs-%{+YYYYMMdd}" } } # Route53 ROUTE53LOG %{NOTSPACE:version}¥s%{TIMESTAMP_ISO8601:date} %{NOTSPACE: host_id}¥s%{URIPROTO:query_name}¥s%{WORD:query_type}¥s%{WORD:respon se_code}¥s%{WORD:protocol}¥s%{NOTSPACE:edge}¥s%{IP:resolver_ip}¥s(%{IP:e dns_client_subnet}/%{POSINT:edns_cidr}|-) ★Pattern FIle ★Conf FIle Route53 l 先ほどのVPCFlow Logsと 要領は一緒 l timestampは、今回ISO8601 l GeoIPで地理情報を取得 l OutputでIndexを定義 l ちなみに GrokPatternを作成したい そんな方はログフォーマットを ちゃんと読むべしー
  34. 34. input { s3 { bucket => "cowrie-log" region => "us-east-1" prefix => "california/" interval => "30" sincedb_path => "/var/lib/logstash/sincedb_cowrie_json_california" codec => json } } filter { json { source => "message" } date { match => [ "timestamp", "ISO8601" ] target => "@timestamp" } geoip { source => "src_ip" target => "src_geoip” } geoip { source => "dst_ip" target => "dst_geoip" } } output { elasticsearch { hosts => [ "localhost:9200" ] index => "cowrie-json-logs-%{+YYYYMMdd}" } } ★Conf FIle Cowrie.json l S3InputPluginのインストール が必須 l JsonなどでJson Filterで 読み込む l SourceIP & DistinaetionIP 共に地理情報を取得 l インデックステンプレートを 作成するときにGeoIPなどの マッピングすること
  35. 35. input { s3 { bucket => "cowrie-log" region => "us-east-1" prefix => "california/" interval => "30" sincedb_path => "/var/lib/logstash/sincedb_cowrie_json_california" codec => json } } filter { json { source => "message" } } output { elasticsearch { hosts => [ "localhost:9200" ] index => "vt-logs-%{+YYYYMMdd}" } } ★Conf FIle Viurus Total l Json Filterかけるだけ! l 以上!! l Input CloudWatch logs l S3 Input Plugin Install Plugin ★Install Input CloudWatch logs $ cd /usr/share/logstash/ $ bin/logstash-plugin install logstash-input-cloudwatch_logs ★Install S3 Input Plugin $ cd /usr/share/logstash/ $ bin/logstash-plugin install logstash-input-s3
  36. 36. 結果
  37. 37. VPcFlow Logs 国別 マルウェア件数 ユーザ名 アクセス件数 スキャン結果 Domain Domain IP IP
  38. 38. Best10 Username Best10 Password
  39. 39. Cowrieの結果より l アクセス件数はアイルランド、サンパウロ、シンガポールが多い l 利用料金から考えるとアイルランドがコスパがよい l アイルランド: 109% l サンパウロ: 160% l シンガポール: 126% l そもそもt2.microで動くのでそこまで意識しなくていいかも ちりつもはあるが。。
  40. 40. Dionaeaの結果より l グローバルIPではなく、ドメインを登録した方がマルウェアの取 得率が高い l さらにPASTEBINに登録することで取得率が更にあがる l やっぱりWannaCryが多い l ディスク要領使うのでデフォルト8GBだと2週間もたない l なので、何かしらの施しが必要 l 実は、DionaeaをオンデマンドとSpotFleetで稼働してみた l Region: Virginia l InstanceType: m3.medium l On-demand: 222h → $14.93 l SpotFleet: 383h → $3.58
  41. 41. まとめ
  42. 42. まとめ l ログをAWS側に寄せることで必要なときに取り出せる l 保管の料金も安くすむ! l リージョン毎に料金が違うので、東京にこだわる必要ない l PASTEBINは有効なサービスなので使うべし l VirusTotalのAPI上限数は気をつけて l AWSのログは、親切!ログフォーマットの説明が丁寧 l LogstashのGrokは闇深いけど、楽しいよ!
  43. 43. Thanks

×