Slide 1

Slide 1 text

ハニーポットで捕らえる WordPressへの攻撃 国立セキュリティ・キャンプ第12期同窓會 junk_coken (@junk_coken)

Slide 2

Slide 2 text

自己紹介 •@junk_coken •セキュリティ・キャンプ全国大会2015参加 • 2016検知トラックチューター •ハニーポットを中心に独学研究している 自称ハニーポッター見習い

Slide 3

Slide 3 text

セミナー内容 •ハニーポットの紹介 •ハニーポットで捕れた WordPressへの攻撃解説 •時間の都合上1つだけ

Slide 4

Slide 4 text

ハニーポットとは?

Slide 5

Slide 5 text

ハニーポットとは? • わざと脆弱性がありそうなシステムを設置、 それに対して行われる攻撃ログ、マルウェアを収集する • 別に脆弱性を持っている必要はない • クラッカーの攻撃手法やマルウェアの実態がわかる

Slide 6

Slide 6 text

ハニーポットの環境

Slide 7

Slide 7 text

今回のハニーポット • NginxとWordPressで作ったハニーポット • 実際のシステムを使うことでより特化し柔軟なハニーポットに なる (ただしそれなりにリスクはある) • Raspberry Pi 2 & Raspbian • Raspberry Piでも十分快適!!!

Slide 8

Slide 8 text

今回の収集対象 •基本的にはHTTPのHTTPリクエスト(GET,POST) •WordPressなので、主にWordPressに対する攻撃を 集める • WordPress以外に対する攻撃も取れる

Slide 9

Slide 9 text

WordPress • ご存知有名なブログシステム • Pluginを利用することで拡張することができる • 今回は最低限のPluginを入れておく • 自作記事自動投稿プラグイン(ズンドコするやつ) • WP-Mail-SMTP • Contact form 7 • Disable XML-RPC Pingback • 攻撃の有無はログで見分ける!

Slide 10

Slide 10 text

• (画像)

Slide 11

Slide 11 text

攻撃解説 xmlrpc.phpによるDDoS

Slide 12

Slide 12 text

XMLRPC.phpを狙ったDDoS踏み台攻撃 IPアドレス - - [日時] "GET /feed/ HTTP/1.1" 200 ※見辛いためログを簡略化しています IPアドレス - - [日時] “POST /xmlrpc.php HTTP/1.0” 499 “pingback.ping外部のアドレス 記事のアドレス “ IPアドレス - - [日時] “POST /xmlrpc.php HTTP/1.0” 499 “pingback.ping外部のアドレス 記事のアドレス "

Slide 13

Slide 13 text

行動をトレースしてみる

Slide 14

Slide 14 text

①GET /feed/ XMLが返ってくる RSSのためのXML

Slide 15

Slide 15 text

①GET /feed/ ・ ・ ・ ・ ・ ・ 2016年07月26日、本日のZUNDOKOKIYOSHI!! 記事URL 記事URL/#respond Mon, 25 Jul 2016 15:20:33 +0000 ↙記事があるかどうかをチェック

Slide 16

Slide 16 text

②POST /xmlrpc.php -request Content Type:application/xml “ pingback.ping 攻撃先URL WordPressの記事 " このリクエストを何度も送信!!(DoS)

Slide 17

Slide 17 text

そもそもxmlrpc.phpとは? • XML-RPCというプロトコル • データをXMLで送受信しやすくするためのプロトコル • WordPressでXML-RPCを使うAPIが提供されている • XML-RPC WordPress API • Blogger API, metaWeblog API, Movable Type API, Pingback API • xmlrpc.phpはXML-RPCのAPIを直接利用する • DDoSはXML-RPC API内のPingbackAPIを悪用し行われる

Slide 18

Slide 18 text

PingbackAPI • DDoSに悪用されるが、当然想定外 • PingBackは、他人の記事をリンクしたときに 「リンクしましたよ」と伝える機能 • このWordPress PingBackAPIは、WordPress同士での利用を想定して いる • リンクした側がWordPressなら、リンクされた側がWordPressでなくても 送られる ↓ 悪用に繋がる

Slide 19

Slide 19 text

Pingback通常の動作 -request リンクするサイト:http://A.ex リンクされるサイト:http://B.ex POST http://B.ex/xmlrpc.php pingback.ping http://A.ex/blogno1 http://B.ex/blogno1

Slide 20

Slide 20 text

Pingback通常の動作 -response http://A.ex より http://B.exへのピンバックが登録されま した。ウェブでの会話を続けてください ! :-)

Slide 21

Slide 21 text

Pingback通常の動作 -Arequest • 同時に、このリクエストも送信される GET http://B.ex/blogno1 UserAgent:“WordPress/4.5.3; http://A.ex; verifying pingback from 送信元IP"

Slide 22

Slide 22 text

Pingback通常の動作(もう一回) -request POST /xmlrpc.php pingback.ping http://A.ex/blogno1 http://B.ex/blogno1

Slide 23

Slide 23 text

Pingback通常の動作(もう一回) -response faultCode 48 faultString そのピンバックはすでに登録済みです。

Slide 24

Slide 24 text

Pingback通常の動作(もう一回) -request •今度は、GETリクエストは送られない

Slide 25

Slide 25 text

どうやって悪用するか?

Slide 26

Slide 26 text

Pingback悪用時の動作 -request POST /xmlrpc.php pingback.ping 攻撃対象のURL WordPressの記事

Slide 27

Slide 27 text

Pingback悪用時の動作 -response faultCode 0 faultString

Slide 28

Slide 28 text

Pingback悪用時の動作 -攻撃対象へのreq WordPressのIP - - [日時] “GET / HTTP/1.0” 200 25805 “-” “WordPress/4.5.3; WordPressのURL; verifying pingback from 攻撃者のIP" "-" "-" • WordPressではないのにアクセスされる・・・。

Slide 29

Slide 29 text

Pingback悪用時の動作(もう一回) -request POST /xmlrpc.php pingback.ping 攻撃対象のURL WordPressの記事

Slide 30

Slide 30 text

Pingback悪用時の動作(もう一回) -response faultCode 0 faultString

Slide 31

Slide 31 text

Pingback悪用時の動作 -攻撃対象へのreq WordPressのIP - - [日時] “GET / HTTP/1.0” 200 25805 “-” “WordPress/4.5.3; WordPressのURL; verifying pingback from 攻撃者のIP" "-" "-" • 何度でも可能 ↓ • DDoSへ悪用

Slide 32

Slide 32 text

まとめ • WordPressのxmlrpc.phpはデフォルトでDDoSの脆弱性を抱えている • 悪用されないためには、xmlrpc.phpにアクセス制限を掛ける、 もしくはPingback APIを無効化するプラグインを利用する • しかし、プラグインによる無効化だとDoS自体は解消されない (VPS等ではお叱りを受ける可能性がある) • ただし、このDDoSは効果が薄い • DDoSと同じ量をDoSしないといけない(1アクセスにつき1回) • 攻撃元IPがUserAgentであるが晒される • 非効率的だが、デフォルトで存在するので成功率は高い

Slide 33

Slide 33 text

おまけ ハニーポット、やってみませんか?

Slide 34

Slide 34 text

初めてのハニーポット • ハニーポットは大きく分けて2種類 • 低対話型:サービスをエミュレーション • 高対話型:実際のサービスをそのまま使う • Webサービスに対する攻撃を集めたい場合、 特に何もしないHTMLを置いておくだけでもある程度取れる。 • ただし高対話型なので更新は怠らないように • マルウェアを集めて解析を行いたい場合、低対話型を使う • おすすめはSSHハニーポットCowrie • ごりごりマルウェアが放り込まれる

Slide 35

Slide 35 text

注意点 • 契約プロバイダの禁止事項に抵触しないよう確認の上作りましょう。 • ハニーポットで知った攻撃方法を自分の管理外のコンピュータなど で試してはいけません。 • アクセス制御はしっかり行いましょう。 • 定期的にメンテナンスしましょう。

Slide 36

Slide 36 text

君も攻撃の実状を 確かみてみろ!!! -終-