• トップ
  • ブログ一覧
  • 不正アクセス受けてみた話
  • 不正アクセス受けてみた話

    りっきー(エンジニア)りっきー(エンジニア)
    2022.07.05

    IT技術

    はじめに

    近年サイバー攻撃が急増しているようです。急増するサイバー攻撃に備え、脆弱性対応に日夜追われているセキュリティ担当の方も多いのではないでしょうか。脆弱性を放置すると不正アクセスを受けてしまうため、私が所属するプロジェクトでも脆弱性情報収集を心がけ、必要とあらば脆弱性対応を実施しているようです。

    しかし、本当に脆弱性を放置しているとそもそも不正アクセスされるのでしょうか?また、不正アクセスされたら、一体何をされてしまうのでしょうか?

    今回そんな疑問を解消するために、実際に自ら不正アクセスを受けることにチャレンジしてみました。本記事では私が実際に経験した不正アクセスの実態を紹介したいと思います。

    準備

    不正アクセスを受けるためには第三者がアクセスできるインターネットに公開されたシステムが必要になります。Laravelなどを利用して脆弱性を含んだWebアプリケーションを作成して公開して調査してもよかったんですが、さすがに時間がかかってしまいそうだったので今回は断念しました。

    他の方法を模索していると、簡単に脆弱性を含んだソフトウェアを公開できるハニーポットと呼ばれるものがあるらしいので、今回はハニーポットを利用して不正アクセスを受けることにしました。

    ハニーポットとは、悪意のある攻撃を受けやすいように設定した機器を、おとりとしてネットワーク上に公開することにより、サイバー攻撃を誘引し、攻撃者の特定や攻撃手法を分析する手法、あるいは、そのような用途で使用するシステムをいう

    引用:wikipedia

    Cowrie(カウリー)

    ハニーポットにはWebアプリケーションを模倣できるものや、様々なサービス(FTP、HTTP、MYSQLなど)を動かしてマルウェアを入手するものなど様々あったのですが、今回はSSH専用ハニーポットであるCowrieを利用することにします。

    以下、Cowrieを選定した理由です。

    不正アクセスがわかりやすい

    第三者がSSHアクセスしてログインすると不正アクセスとみなせる。また、不正アクセスした攻撃者がログイン後にどんなコマンドを実行しているのかも確認できるので面白そう。

    有名でメンテナンスされている

    Cowireがメンテナンスされていて、ハニーポット自体に脆弱性が無い。ハニーポット自体に脆弱性があるとハニーポットが乗っ取られる危険があるからです。

    わかりやすい脆弱性

    パスワード認証、分かりやすいユーザー名、パスワードの設定。
    今回はSSHサービスにパスワード認証、分かりやすいユーザ名、パスワードを設定している、という脆弱性を作り込みます。
    (本来はSSHは公開鍵認証で使用するのが一般的です)

    Cowrie構築

    早速、Cworieを構築していきます。

    サーバは某VPSサーバ使用しました。念の為規約を調べ、ハニーポットを利用しても問題ないことを確認しました。

    Cowrieインストール方法はGithubから辿れるリンクに詳細に記載されています。ネットではCentOSやUbuntuにインストールしている記事などたくさんありましたが、公式推奨のDebian10を利用してCowrieをインストールしました。

    Cowrieの仕組み

    Cowrieの仕組み

    攻撃者(以降、彼らと呼びます)はVPSサーバのOSであるDebianの22ポートにSSHのパスワード認証で接続してきます。DebianはCowrieプロセスが待ち受けている2222ポートにリダイレクトさせ、SSHパスワード認証でログインを試みます。私はDebianの3333ポートにSSH公開鍵認証でアクセスしてログイン。Cowrieのログなどを見て不正アクセス調査をします。

    Cowrieの設定ファイル

    var/log/cowrie/cowrie.log

    SSHログインしてきたユーザやパスワードを記録されるファイル。ログイン後のコマンド実行も記録されます

    var/lib/cowrie/downloads/

    攻撃者がダウンロードしたファイルが保存されます。ファイル名がハッシュになっていました。

    etc/userdb.txt

    SSHログインユーザとパスワードを設定

    var/lib/cowrie/tty/

    ログイン後のコマンド実行記録

    bin/playlog

    var/lib/cowrie/tty以下のファイルをコマンドの引数に実行すると、動画のようにどんなコマンドを実行したのかを再生してくれます

    ハニーポットにログインしてみた

    上記がCowireにSSHでログインした画像です。完全にLinuxにログインして、シェルが反応しているようにみえますが、シェルのように見えるだけで実際はシェルではありません。yumコマンドでvimをインストールしているように見えますが、表示だけで実際にインストールされません(WelComme to Ubuntuなのにyumが使えます。もちろんapt-getも)。

    ログインしたあとの文言や、ホスト名もCowrieの設定ファイルで自由に変えることができます。今回はUbuntuだと彼らが喜ぶらしいのでUbuntuを模してみました。

    この環境におびき寄せます。

    運用開始

    6/4-6/7 の4日間、インターネットに公開しました。もちろん、VPSのグローバルIPアドレスは誰にも公開していません。

    bin/cowrie startコマンドでCowrieプロセスが動き出します。運用スタート!

    検証1 不正アクセスされるか?

    公開したのはたった4日間だけです。

    また、サーバのIPアドレスは誰も知りえません。

    この状況でそもそも不正アクセスされるんでしょうか?

    いや、不正アクセスなんてされないはずだ!不正アクセスなんてただの都市伝説なのでは!?

    検証1 結果

    がっつりアクセスされていましたmm。

    合計 22,985回のログイン試行回数!!!

    ログイン試行時にログにlogin attemptと残るのでgrepしてカウントしました。

    どこからともなく彼らは現れます!!IPアドレスを調べると世界中の各国から訪問されているようでした。

    不正アクセス成功回数

    がっつりログインされていましたmm。

    合計 24回のログイン成功回数!!

    ログインが成功するとログにsucceededと残るのでgrepしてカウントしました。
    (一応IPアドレスは伏せています)

    検証1結果

    脆弱性を残しておくと世界中から彼らが現れ、がっつり不正アクセスされる

    攻撃ログ分析(SSHユーザ、パスワード)

    今回、SSHパスワード認証で不正アクセスしてくるログインユーザやパスワードをログに残すことができました。せっかくなのでSSHユーザ/パスワード攻撃の分析をしてみます。

    SSH不正アクセスログインユーザー名Top10

    圧倒的な root人気!!全体の約 8割がrootユーザでのアクセスでした。

    rootユーザーでログインできれば何でもできるようになるので、rootが狙われているのだと思います。その他は一度は目にしたことがあるような、普段よく利用するユーザ名が利用されていました。

    SSH不正アクセスパスワードTop10

    圧倒的な 簡単ワード!!!

    この他にも人の名前や、うっかり設定していまいそうな簡単なパスワードが目立ちました。

    検証2 不正アクセスされたらなにされちゃうの??

    ログには24回のログイン成功が記録されていました。彼らはログイン後、どんな行動にでたのでしょうか?ログを調査してみました。

    ログイン後に実行されたコマンドをログから集めてみました。ログを見てわかったのですが、彼らはssh ユーザ名@IPアドレス "コマンド; コマンド"の形でログインが成功したら自動でコマンド実行しているようでした。丁寧にログインしてから手動でコマンドを実行した形跡はありませんでした。もう少し長くCowireを運用していたら、もしかしたら手に入れたユーザ名、パスワードを使って不正アクセスして手動でコマンドを実行していたかもしれません(残念)。

    サーバ環境の情報収集もしているようですが、1番怪しいのはwgetでファイルをダウンロードして、実行権限を与えて、実行するという行動です。攻撃者はどんなファイルをダウンロードしたんでしょうか。ちなみに、Cowriewの作り出したシェル環境ではファイルはダウンロードできるのですが、実行権限を与えたり、実行することはできないようになっていました。

    ダウンロードされた怪しいファイル

    Cowireでは怪しいダウンロードされたファイルはvar/lib/cowrie/downloads以下に保管されます。ファイル名はハッシュになっていました。ダウンロードされた怪しいファイルに対してセキュリティーソフトウェアのClam AntiVirusをインストールしてスキャンしてみました。スキャンの実行結果が上記の画像になります。

    3つのファイルがウイルス判定されました。ウイルス判定されたファイルの情報を見てみると、少し前に話題になったIoT機器を狙うMiraiというマルウェアやDDOS攻撃を引き起こすマルウェア、仮想通貨のマイニングをするマルウェアなどをダウンロードしていることが分かりました。彼らはダウンロードしたマルウェアに対して実行権限を与え実行しようとしているようでした。

    検証2 結果

    マルウェアをダウンロードして、マルウェア実行する。

    もちろん、サーバのrootを乗っ取られたらサーバ内の機密情報を取得される危険がある。

    まとめ

    脆弱性が存在するソフトウェアをインターネットに公開すると、世界中からどこからともなく彼らが現れ、不正アクセスされ、マルウェアをダウンロード&実行し、私達を破滅へと導くことでしょう。

    さいごに

    今回はSSHの脆弱性を取り上げましたが、脆弱性はいろんなソフトウェア、製品で日々発見されています。Laravelの脆弱性のように公開されたWebサーバ上のソフトウェアに脆弱性があれば今回のように不正アクセスされて、マルウェアをダウンロード、実行される恐れがあるでしょう。

    インターネットの世界は思ったより怖い人が多いみたいなので、日々の脆弱性情報収集、脆弱性対応は必ず実施するように心がけるのが重要です。

    最後までご覧頂きましてありがとうございました。

    りっきー(エンジニア)

    りっきー(エンジニア)

    おすすめ記事