Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ハニーポットで捕らえるWordPressへの攻撃

junk_coken
August 04, 2016

 ハニーポットで捕らえるWordPressへの攻撃

OSCKyoto2016 国立セキュリティ・キャンプ第12期同窓会
セミナー資料

junk_coken

August 04, 2016
Tweet

More Decks by junk_coken

Other Decks in Technology

Transcript

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  4. ハニーポットとは?

    View full-size slide

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

    View full-size slide

  6. ハニーポットの環境

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  10. • (画像)

    View full-size slide

  11. 攻撃解説
    xmlrpc.phpによるDDoS

    View full-size slide

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

    IPアドレス - - [日時] “POST /xmlrpc.php HTTP/1.0” 499
    “pingback.pingethodName>外部のアドレス
    記事のアドレス
    "

    View full-size slide

  13. 行動をトレースしてみる

    View full-size slide

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

    View full-size slide

  15. ①GET /feed/








    2016年07月26日、本日のZUNDOKOKIYOSHI!!
    記事URL
    記事URL/#respond
    Mon, 25 Jul 2016 15:20:33 +0000


    ↙記事があるかどうかをチェック

    View full-size slide

  16. ②POST /xmlrpc.php -request
    Content Type:application/xml


    pingback.ping

    攻撃先URL

    WordPressの記事

    "
    このリクエストを何度も送信!!(DoS)

    View full-size slide

  17. そもそも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を悪用し行われる

    View full-size slide

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

    悪用に繋がる

    View full-size slide

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


    pingback.ping

    http://A.ex/blogno1
    http://B.ex/blogno1


    View full-size slide

  20. Pingback通常の動作 -response



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


    View full-size slide

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

    View full-size slide

  22. Pingback通常の動作(もう一回) -request
    POST /xmlrpc.php


    pingback.ping

    http://A.ex/blogno1
    http://B.ex/blogno1


    View full-size slide

  23. Pingback通常の動作(もう一回) -response




    faultCode
    48

    faultString
    そのピンバックはすでに登録済みです。



    View full-size slide

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

    View full-size slide

  25. どうやって悪用するか?

    View full-size slide

  26. Pingback悪用時の動作 -request
    POST /xmlrpc.php


    pingback.ping

    攻撃対象のURL
    WordPressの記事


    View full-size slide

  27. Pingback悪用時の動作 -response




    faultCode
    0

    faultString




    View full-size slide

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

    View full-size slide

  29. Pingback悪用時の動作(もう一回) -request
    POST /xmlrpc.php


    pingback.ping

    攻撃対象のURL
    WordPressの記事


    View full-size slide

  30. Pingback悪用時の動作(もう一回) -response




    faultCode
    0

    faultString




    View full-size slide

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

    • DDoSへ悪用

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide