ハニーポッター

インターネットはたいへんこわいところです。せかいじゅうのハッカー(パソコンをわるいことにつかうひと)がみんなのパソコンにいやがらせをしたり、ウィルスをおくってきたりします。
というわけで、今回はハニーポットの話と、少々。
何の対策もしないPCを放置すると、たちどころにヤられてしまうのは周知の事。itmediaだった気がするけれど、WindowsPCを放置したらどうなるか実験をやってましたね。ものの1時間でやられてたと記憶しています。
で、こういうのはWindowsの事がよく言われていますが、UNIX相手でも実はよくある話なのです。
近頃目立って多いのが、sshでアクセスし、あらかじめ用意されたユーザIDとパスワードの組でのログインを試すアタック。sshの接続元制限がなく、よくあるユーザ名にありがちなパスワードをつけていると、簡単にログインされてしまいます。
ファイアウォールやらIDSなんていうセキュリティ技術だけでなく、ソフトウェアの作りそのものがセキュリティ面を考慮した作りになっている昨今、rootのパスワードにrootと付けたばっかりに…なんて事例が本当にあります。(ちょっと話がそれるけれど、OpenSSHの標準設定が、あるバージョン以降 root でのログインを許すようになっている気がする。良い子は PermitRootLogin no にしましょう。)
そういうログインを試す輩はログインできたら何をするんだろう?
と、言うわけで試したよ。
結論から言うと、「さらなるダメサーバを探すプログラムを動かし始めた」でした。結果自身はつまんなかったけど、ログインを試行するためのユーザID・パスワードの組が面白かったので、記載。内容の重複を除いて全部で8526パターンあった。(約2500件は重複データ。sort | uniq ぐらいやればいいのに。)

  • ユーザ名と同じパスワード(これは最低だね)
  • ユーザ名+数字または数字+ユーザ名

このほか、そういう規則性のないものも一部。どこかで実際に使われていたパスワード、ということでしょうか。だいたいこんな傾向。
次に、どのアカウントが多く試されているかを調べたよ。上位から適当にコピペ。

3540    root
225     admin
24      uucp
24      bin
21      test
20      wwwrun
19      news
19      daemon
17      postgres
15      webmaster
15      man
15      apache

圧倒的にrootログインを試みる物が多いことがわかる。やっぱりSSHでrootログインを許可してはいけない。

root のパスワード試行パターンは3540個もあるだけに、その内容は様々。

root michael
root michael.
root Michael
root michel
root michele
root michell
root michelle

世界中のマイケルをターゲットにしたこんなものまで。コレはほんとにごく一部ですよ。

ずいぶん前に書いたパスワード生成スクリプトが出てきたので貼ります。

  • 最初の文字に記号って嫌だなぁ(なんとなく)
  • 1 と l と I , 0 と O はわかりにくくて嫌だなぁ
  • @ とか # とか ( とか ) とか、そういう記号は嫌だなぁ

という仕様で書いたもの。これで作ったパスワードで何があっても責任は持ちませんよ(念のため)。

#! /usr/bin/perl

# Create a password
$passwd = &getpasswd;

print "$passwd\n";
exit;

sub getpasswd {

        my $retc="";
        my @card1 = (   'a'..'k', 'm'..'z',
                        'A'..'H', 'J'..'N', 'P'..'Z',
                        '2'..'9', '2'..'9');
        my @card2 = (   'a'..'k', 'm'..'z',
                        'A'..'H', 'J'..'N', 'P'..'Z',
                        '2'..'9', '2'..'9',
                        '!', '?', '-', '_');

        $retc = splice(@card1, rand @card1, 1);

        for ($i = 1; $i < 8; $i ++) {
                $retc .= splice(@card2, rand @card2, 1);
        }

        return "$retc";

}