AWS Security JAWS...

44
Technology Innovation Group 2017.11.13(Mon) Masamitsu Maehara 経済的にハニーポットの ログ分析をするためのベストプラクティス? - SecurityJAWS -

Transcript of AWS Security JAWS...

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

Technology Innovation Group2017.11.13(Mon)

Masamitsu Maehara

経済的にハニーポットの

ログ分析をするためのベストプラクティス?

- SecurityJAWS -

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

自己紹介l 前原 応光(まえはら まさみつ)

l Future Architect, Inc.

l Technology Innovation Group

l エンプラでAWSとかゴニョゴニョやってます

l ゆるふわエンジニア

@micci184

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

1 登場人物のご紹介

2 やりたいこと

3 構成について

4 ログを取り込むには

5 どんな結果が出たのよ

6 まとめ

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

X X

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

HoneyPotl 高対話型ハニーポット

l 本物のOSやアプリケーションを利用するl 情報が得られやすいl リスク高い

l 低対話型ハニーポットl OSやアプリケーションをエミュレートして監視するl 機能制限があるl 攻撃者にバレる可能性があるl 高対話型より安全

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

Dionaeal 低対話型ハニーポット

l マルウェア収集するよl SMB/HTTP/HTTPS/FTP/TFTP/MSSQL/SIPl それっぽくするために、フロントの画面はつくる

Cowriel 低対話型ハニーポット

l SSH特化l Kippoよりもよくできている

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

Elastic Stackl Logstash: 取り込んで加工してストアl Beats: データシッパー(色々とよしなにやってくれる)l Elasticsearch: 検索や分析に使われてるl Kibana: ビジュアライズやダッシュボードが作れる

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

Logstashl INPUT: 様々なデータソースを収集l Filter: PluginのGrokや地理情報を得るためのGeoIPなどを

使いフィルタをかけるl Output: フィルタしたデータを送る

Logstash

INPUT FILTER OUTPUT

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

ここまで紹介したのをAWSで環境を構築しますー

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

!AWSで構築するハニーポットは、

低対話型です!!

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

やりたいことl いろんなリージョンにハニーポットを配置したいl 工夫することでマルウェアの収集に影響があるのかl リージョンごとで攻撃の傾向が違うのかみたいl いろんなログを収集し、可視化・分析したいl お金を節約したい

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

AWSだしリージョンあるしいろんなところに配置しよう

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

Ireland

Virginia

Saopaulo

Tokyo

Singapore

California

Canada

Cowrie

Elastic StackDionaea ×4

Cowrie

Cowrie

Cowrie

Cowrie

Cowrie

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

Ireland

Virginia

Saopaulo

Tokyo

Singapore

California

Canada

110%

100%118%

160%

126%

131%

109%

バージニアを基準にした場合の料金比率

t2.microで比較

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

Dionaea、Cowrieでどんなログ取得したい?

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

Dionaeal マルウェアを収集し、スキャンかけたいl ドメイン、IPアドレスで変化するのかl ドメイン、IPアドレスをpastebin.comに書いたら変化するのか

Cowriel 対象ログをCowrie.jsonとするl パスワードやユーザ名の傾向を知るl どこの国から攻撃してきているかを知るl Cowrieの配置場所として良いところとは?

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

どうやってログを収集する?

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

どうやってログを収集する?l 各リージョンにあるcowrieのログをElasticStackに送るl Dionaeaで収集したログも送る

Cowrie

Cowrie

Cowrie

Cowrie

ElasticStack

dionaea

dionaea

dionaea

dionaea

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

どうやってログを収集する?l 各リージョンにあるcowrieのログをElasticStackに送るl Dionaeaで収集したログも送る

Cowrie

Cowrie

Cowrie

Cowrie

ElasticStack

dionaea

dionaea

dionaea

dionaeaX

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

l 常にElasticStackを起動したくないl できるだけログがロストしない仕組み

にしたいl いつでもログを取り出したい

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

てことで、こんな構成l ログはAWSサービスに寄せるl S3やCloudWatch Logsに保管

Cloudwatch Logs

Bucket

Attack

Cowrie

Dionaea

ElasticStack

Attack

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

てことで、こんな構成l ログはAWSサービスに寄せるl S3やCloudWatch Logsに保管

Attack

Cowrie

Dionaea

ElasticStack

Attack

ここにログを集める!

Cloudwatch Logs

Bucket

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

Dionaea

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

Dionaeaの準備1. Dionaeaを構築を4台構築する(リージョンは、バージニア)2. それっぽいトップページを作成する3. ドメインを取得する4. 取得したドメインとIPアドレスをpastebin.comに記載する5. Route53のロギングを有効にする6. 放置する7. 定期的に収集したマルウェアをスキャンし、スキャン結果の

ログをS3にアップロード8. Logstashでログを取得し、Elasticsearchにストア

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

l dionae02: architect-tech.com →PASTEBIN

l dionae01: Global IP address

l dionae03: Global IP address

l dionae04: architect-tech.net

→PASTEBIN

PASTEBINに公開する・しない

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

マルウェアのスキャンl マルウェアはbinariesディレクトリに格納されるl 複数のアンチウィルスソフトでスキャンしたいので、VirusTotal

を利用するl VirusTotalはAPIを提供している(1分間に4回まで)l AmazonLinuxは、Pythonの実行環境が整っているので

Pythonでスクリプト作成l スキャン結果のログをS3にアップロード

dionaea01

dionaea04 Bucket...

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

Cowrie

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

Cowrieの準備1. Cowrieを構築を各リージョンに構築する2. 取得したいログを対象にAWS Logsのconfファイルを作成

対象: cowrie.json3. VPC FlowLogsのログを可視化したいので、Cowrieにアタッチ

されているENIに対してVPC FlowLogs有効化#VPCレベルでやるとすべてのENIが対象になるので注意

4. 放置する5. Logstashでログを取得し、Elasticsearchにストア

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

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からログを取得

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

Logstash

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

取得したいログl CloudWatch LogsにあるCowrie.jsonl CloudWatch LogsにあるVPCFlow Logsl CloudWatch LogsにあるRoute53のログl S3にあるMalwarescanLogs

Grok : VpcFlow Logs & Route53

JsonFilter : Cowrie.json & Scan Logs

Logstashのフィルタ対応

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

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_LogsVPCFLOWLOG %{NUMBER:version} %{NUMBER:account_id} %{NOTSPACE:interface_id} %{IP:src_ip} %{IP:dst_ip} %{POSINT:src_port} %{POSINT:dst_port} %{NOTSPACE:protocol_id} %{NOTSPACE:packets} %{NOTSPACE:bytes} %{NUMBER:start_time} %{NUMBER:end_time} %{NOTSPACE:action} %{NOTSPACE:log_status}

★Pattern FIle

★Conf FIle

VpCFlow Logsl InputCloudWatch Logs

Pluginのインストールが必須l GrokPatternは外だしl GrokFillterから呼び出すl UNIXタイムなので、Date

フィルタで定義するl GeoIPで地理情報を取得l OutputでIndexを定義l あらかじめIndexTemplateを

つくっておくこと(作り方は割愛)

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

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}"

}}

# Route53ROUTE53LOG %{NOTSPACE:version}¥s%{TIMESTAMP_ISO8601:date} %{NOTSPACE:host_id}¥s%{URIPROTO:query_name}¥s%{WORD:query_type}¥s%{WORD:response_code}¥s%{WORD:protocol}¥s%{NOTSPACE:edge}¥s%{IP:resolver_ip}¥s(%{IP:edns_client_subnet}/%{POSINT:edns_cidr}|-)

★Pattern FIle

★Conf FIle

Route53l 先ほどのVPCFlow Logsと

要領は一緒l timestampは、今回ISO8601l GeoIPで地理情報を取得l OutputでIndexを定義

l ちなみにGrokPatternを作成したいそんな方はログフォーマットをちゃんと読むべしー

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

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.jsonl S3InputPluginのインストールが必須

l JsonなどでJson Filterで読み込む

l SourceIP & DistinaetionIP共に地理情報を取得

l インデックステンプレートを作成するときにGeoIPなどのマッピングすること

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

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 Totall Json Filterかけるだけ!l 以上!!

l Input CloudWatch logsl 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

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

結果

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

VPcFlow Logs

国別マルウェア件数

ユーザ名アクセス件数

スキャン結果

Domain

Domain

IP

IP

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

Best10 Username

Best10 Password

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

Cowrieの結果よりl アクセス件数はアイルランド、サンパウロ、シンガポールが多いl 利用料金から考えるとアイルランドがコスパがよい

l アイルランド: 109%l サンパウロ: 160%l シンガポール: 126%

l そもそもt2.microで動くのでそこまで意識しなくていいかもちりつもはあるが。。

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

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.93l SpotFleet: 383h → $3.58

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

まとめ

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

まとめl ログをAWS側に寄せることで必要なときに取り出せるl 保管の料金も安くすむ!l リージョン毎に料金が違うので、東京にこだわる必要ないl PASTEBINは有効なサービスなので使うべしl VirusTotalのAPI上限数は気をつけて

l AWSのログは、親切!ログフォーマットの説明が丁寧

l LogstashのGrokは闇深いけど、楽しいよ!

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

Thanks