Technology Innovation Group
2017.11.13(Mon)
Masamitsu Maehara
経済的にハニーポットの
ログ分析をするためのベストプラクティス?
- SecurityJAWS -
自己紹介
l 前原 応光(まえはら まさみつ)
l Future Architect, Inc.
l Technology Innovation Group
l エンプラでAWSとかゴニョゴニョやってます
l ゆるふわエンジニア
@micci1...
1 登場人物のご紹介
2 やりたいこと
3 構成について
4 ログを取り込むには
5 どんな結果が出たのよ
6 まとめ
X X
HoneyPot
l 高対話型ハニーポット
l 本物のOSやアプリケーションを利用する
l 情報が得られやすい
l リスク高い
l 低対話型ハニーポット
l OSやアプリケーションをエミュレートして監視する
l 機能制限がある
l 攻撃者にバレ...
Dionaea
l 低対話型ハニーポット
l マルウェア収集するよ
l SMB/HTTP/HTTPS/FTP/TFTP/MSSQL/SIP
l それっぽくするために、フロントの画面はつくる
Cowrie
l 低対話型ハニーポット
l SSH特化...
Elastic Stack
l Logstash: 取り込んで加工してストア
l Beats: データシッパー(色々とよしなにやってくれる)
l Elasticsearch: 検索や分析に使われてる
l Kibana: ビジュアライズやダッシュ...
Logstash
l INPUT: 様々なデータソースを収集
l Filter: PluginのGrokや地理情報を得るためのGeoIPなどを
使いフィルタをかける
l Output: フィルタしたデータを送る
Logstash
INPUT F...
ここまで紹介したのを
AWSで環境を構築しますー
!
AWSで構築するハニーポットは、
低対話型です!!
やりたいこと
l いろんなリージョンにハニーポットを配置したい
l 工夫することでマルウェアの収集に影響があるのか
l リージョンごとで攻撃の傾向が違うのかみたい
l いろんなログを収集し、可視化・分析したい
l お金を節約したい
AWSだしリージョンあるし
いろんなところに配置しよう
Ireland
Virginia
Saopaulo
Tokyo
Singapore
California
Canada
Cowrie
Elastic Stack
Dionaea ×4
Cowrie
Cowrie
Cowrie
Cowrie
Co...
Ireland
Virginia
Saopaulo
Tokyo
Singapore
California
Canada
110%
100%118%
160%
126%
131%
109%
バージニアを基準にした場合の料金比率
t2.microで...
Dionaea、Cowrieで
どんなログ取得したい?
Dionaea
l マルウェアを収集し、スキャンかけたい
l ドメイン、IPアドレスで変化するのか
l ドメイン、IPアドレスをpastebin.comに書いたら変化するのか
Cowrie
l 対象ログをCowrie.jsonとする
l パスワ...
どうやってログを収集する?
どうやってログを収集する?
l 各リージョンにあるcowrieのログをElasticStackに送る
l Dionaeaで収集したログも送る
Cowrie
Cowrie
Cowrie
Cowrie
ElasticStack
dionaea
di...
どうやってログを収集する?
l 各リージョンにあるcowrieのログをElasticStackに送る
l Dionaeaで収集したログも送る
Cowrie
Cowrie
Cowrie
Cowrie
ElasticStack
dionaea
di...
l 常にElasticStackを起動したくない
l できるだけログがロストしない仕組み
にしたい
l いつでもログを取り出したい
てことで、こんな構成
l ログはAWSサービスに寄せる
l S3やCloudWatch Logsに保管
Cloudwatch Logs
Bucket
Attack
Cowrie
Dionaea
ElasticStack
Attack
てことで、こんな構成
l ログはAWSサービスに寄せる
l S3やCloudWatch Logsに保管
Attack
Cowrie
Dionaea
ElasticStack
Attack
ここにログを集める!
Cloudwatch Logs
B...
Dionaea
Dionaeaの準備
1. Dionaeaを構築を4台構築する(リージョンは、バージニア)
2. それっぽいトップページを作成する
3. ドメインを取得する
4. 取得したドメインとIPアドレスをpastebin.comに記載する
5. Rou...
l dionae02: architect-tech.com →
PASTEBIN
l dionae01: Global IP address
l dionae03: Global IP address
l dionae04: architec...
マルウェアのスキャン
l マルウェアはbinariesディレクトリに格納される
l 複数のアンチウィルスソフトでスキャンしたいので、VirusTotal
を利用する
l VirusTotalはAPIを提供している(1分間に4回まで)
l Ama...
Cowrie
Cowrieの準備
1. Cowrieを構築を各リージョンに構築する
2. 取得したいログを対象にAWS Logsのconfファイルを作成
対象: cowrie.json
3. VPC FlowLogsのログを可視化したいので、Cowrieにア...
Cowrie
California
Cowrie Cowrie Cowrie Cowrie Cowrie
Cloudwatch Logs
Canada
Cloudwatch Logs
Ireland
Cloudwatch Logs
Saopau...
Logstash
取得したいログ
l CloudWatch LogsにあるCowrie.json
l CloudWatch LogsにあるVPCFlow Logs
l CloudWatch LogsにあるRoute53のログ
l S3にあるMalwarescan...
input {
cloudwatch_logs {
region => "us-east-1"
log_group => [ "/aws/route53/architect-tech.com" ]
sincedb_path => "/var/l...
input {
cloudwatch_logs {
region => "us-west-1"
log_group => [ "california_cowrie" ]
sincedb_path => "/var/lib/logstash/si...
input {
s3 {
bucket => "cowrie-log"
region => "us-east-1"
prefix => "california/"
interval => "30"
sincedb_path => "/var/l...
input {
s3 {
bucket => "cowrie-log"
region => "us-east-1"
prefix => "california/"
interval => "30"
sincedb_path => "/var/l...
結果
VPcFlow Logs
国別
マルウェア件数
ユーザ名
アクセス件数
スキャン結果
Domain
Domain
IP
IP
Best10 Username
Best10 Password
Cowrieの結果より
l アクセス件数はアイルランド、サンパウロ、シンガポールが多い
l 利用料金から考えるとアイルランドがコスパがよい
l アイルランド: 109%
l サンパウロ: 160%
l シンガポール: 126%
l そもそもt2...
Dionaeaの結果より
l グローバルIPではなく、ドメインを登録した方がマルウェアの取
得率が高い
l さらにPASTEBINに登録することで取得率が更にあがる
l やっぱりWannaCryが多い
l ディスク要領使うのでデフォルト8GBだ...
まとめ
まとめ
l ログをAWS側に寄せることで必要なときに取り出せる
l 保管の料金も安くすむ!
l リージョン毎に料金が違うので、東京にこだわる必要ない
l PASTEBINは有効なサービスなので使うべし
l VirusTotalのAPI上限数は気...
Thanks
AWS Security JAWS 経済的にハニーポットのログ分析をするためのベストプラクティス?
Upcoming SlideShare
Loading in …5
×

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

589 views

Published on

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

Published in: Engineering
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
589
On SlideShare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

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

×
Save this presentationTap To Close