exifヘッダ内に命令を埋め込むことで身を隠すマルウェア 37
ストーリー by hylom
色々考えるのね 部門より
色々考えるのね 部門より
あるAnonymous Coward 曰く、
JPEGデータのexifヘッダ内に命令を埋め込むことで、その身を隠すマルウェアが発見された模様(GIGAZINE、元ネタのsucuri blog)。
元ネタの記事がいまいち分かりにくいのでGIGAZINEの記事も若干分かりにくいものになっているが、このマルウェアはPHPで書かれており、その処理途中であらかじめ指定されていたJPEGファイルを読み込み、そのJPEG画像内のexifヘッダ内にBASE64形式でエンコードされて記載されていた処理を実行する、というものだそうだ。
これのポイントは、PHPのpreg_replace関数を使って任意のコードを実行させているという点。preg_replaceには引数として与えられた文字列を実行する「/e」パターン修飾子があり、これを利用してexifヘッダ内に記述されている命令を実行するという。
わざわざこのような回りくどい処理を行うメリットとしては、コードが分かりにくくなる(外部から入力された命令を実行していることが分かりにくくなる)点、JPEGファイルを差し替えれば実行する処理を変えることができる、という点だろうか。
なお、preg_replaceにおける/eパターン修飾子については以前からその危険性が指摘されており、PHP 5.5.0では非推奨とされている。
マルウェア対策ツールよけ? (スコア:1)
ヒューリスティック検知を避ける目的ではあり得るかも知れない。 でも、その目的で実際に悪いことをする部分のコードを隠すなら、暗号化なり他にもいくらでも方法があるし。 暗号化されてるといかにも怪しいけど、JPEGファイルに隠すなら、一見怪しくもないからチェックされにくい・・・とはいまいち思えないなぁ。 よく分からない。
ラブマ (スコア:1)
# いないですか,そうですか…。
馬鹿馬鹿しい (スコア:0)
どう見ても元ネタは釣り広告でしょう。
わざわざJPEGにコードを分離する必要など全くない。
しかもEXIFって。小学生ハカーが夏休みに思いつくレベル。
Re:馬鹿馬鹿しい (スコア:1)
馬鹿馬鹿しいって言ってる君のほうが恥ずかしい。
外部から実行部分本体を読み込んでくるPHPプログラムを送り込んでおき、サーバに侵入する手口は実際に行われている手口だよ。
コマンドインジェクションか何かの手口で、eval関数を使ったコマンドをサーバ上で実行させる。
そうやってまずサーバにRATを仕込む。
そのRATを使って、サーバ上にある既存のPHPプログラムを改変し、read_exif_data関数を使ってスクリプトを取り込んで実行する機能を付加する。
最初に仕込んだRATは削除する。
Linuxサーバでリアルタイムスキャンをしているところはとても少ないし、やっていても定期的にスキャンするだけのウィルスチェックくらい。
定期スキャンでは外部にある画像ファイルはスキャンしないので、まずみつからない。
Windowsサーバでも、外部から読み込んで保存しない画像ファイルのスキャンをするのかは検証したことが無いのでわからない。
自分が使っていて問題なく動いているPHPのソースコードを開いて読む人なんてほとんどいないので、バックドアの機能には気づかない。
そういうわけで、身を隠すやり方としてはマルウェア本体を外部の別ファイルに分離しておくというのはうまいやり方。
これが小学生が夏休みの自由研究で思いつくレベルなのかは知らない。
確かにいえることは、これが実際に出来るようなセキュリティの穴を持つサーバが世界には無数にあるってことだけだ。
Re: (スコア:0)
> 自分が使っていて問題なく動いているPHPのソースコードを開いて読む人なんてほとんどいない
こりゃまたでかい釣り針だぜぇ・・・
うん、とりあえず君は一緒に仕事したくないタイプの人種だというのはよく分かった。理解が浅い。
もしよければ名前教えてくれないか?
早目にドロップアウトさせたいしさ。
いや、フレームの元と分かっているけど本気で思っていることよ?
Re:馬鹿馬鹿しい (スコア:1)
元コメとは別人ですが、
私の手元で運用している社内サーバでは、
RoundCube とか ownCloud とか phpMyAdmin とか、PHPベースのWebアプリがいくつか入っていますけど、
そのソースコードに意味も無く目を通したりしないし、こっそりトロイを埋め込まれても、「コードを読むことで改ざんに気づく」ことなんて出来ない自信があります。
> > 自分が使っていて問題なく動いているPHPのソースコードを開いて読む人なんてほとんどいない
> こりゃまたでかい釣り針だぜぇ・・・
じゃあ、あなたは毎日、サーバに置いてある全PHPファイルに眼を通して改ざんされてないか確認してるんですかね。
それだけで一日が終わりそうだ…
#PHPソースに目を通して改ざんチェックするのではなく、
#ファイルの改ざんそのものを検出できる体制を整えるのが本道でしょう。
Re: (スコア:0)
> #PHPソースに目を通して改ざんチェックするのではなく、
> #ファイルの改ざんそのものを検出できる体制を整えるのが本道でしょう。
うん、まさにそれだと思う。
てかその突込みを入れたつもりだったんだけどw
お前は毎日ソースを開いてチェックしないとソースの改竄に気付けないのかよ馬鹿、ってこと。
元ACみたいなんがいっぱいいるから
>これが実際に出来るようなセキュリティの穴を持つサーバが世界には無数にある
って状態が生まれているんだということに当人が気付けていない不幸が
ヤバいね、馬鹿馬鹿しいね、って話だと俺は思ってた
Re: (スコア:0)
煽るだけで具体的な内容に言及しないコメントのタチの悪さよ。
#2423680もあまりいい物ではないが、まだ価値がある。
Re: (スコア:0)
どう考えても理解が浅いのは君のほうで、ドロップアウトすべき存在。
だから自分の名前を明かしたまえ。
君みたいな現実も技術もセキュリティの何たるかも知らない浅い考えの人が「パソコンに詳しい人」なんて演じたりするから、WWWサイトの改竄が後を絶たず、いつまでも直されなかったりしてんだ。
WWWサーバやサイトの管理者たちのなかで、普段使っているWebアプリケーションのソースコードをいつも詠んでる人ってどれだけいるかアンケートでもとってみたら?
もちろんソースコードを改変されたら気づく程度は最低限読んでるってことだよ。
Re: (スコア:0)
> いつも詠んでる人ってどれだけいるか
誤字はどうでもいいが、取るまでもなく0だろ。
普通は自動化してるっつーの。
おまえ本当にエンジニア?
Re: (スコア:0)
ごめんぼくもそう感じた。
記事内にも/eの危険性に言及している通り、割と常識。
画像に隠すってのは確かにアレゲっぽいけど。
そもそも「バックドアの第1のパーツ」ってのをどうやって実行させんのか言及してないのが逆アレゲ。ナンセンスじゃないのって思うのよねぇ
Re:馬鹿馬鹿しい (スコア:1)
まあ、実質的には、
こういう攻撃方法がありえる! 俺達は対応した! だから俺達のセキュリティソフトを買おうよ!
ってことだろうな-、とは思うけどさ。
それでも『マルウェアに感染している』という状況に『気づかせない』。
ってのはマルウェアの機能としては結構重要な部分なので、
EXIFにコードの一部を隠すとか、そういうアプローチそのものは、
そこまでバカにしたもんでもないと思う。
任意の文字列を実行します。みたいなコードをあからさまに書いたら、
そんなものはあっという間に見つかって駆除されるわけで。
『第一のパーツ』は攻撃用のjpegを食わせなければ怪しい挙動をしないわけだし、
まあ、下手なセキュリティソフトだったら、スルーしちゃうかもしれないし。
Re:馬鹿馬鹿しい (スコア:2)
高度になればなるほど発症させるための条件がそろいにくそうですね。
だいたい,コレだってどんな条件で発症するのかわかんないし。
も少しシンプルな方が効果があって良いと思うんですけどねえ。
Re:馬鹿馬鹿しい (スコア:1)
これはexifに最初から意図されたcodeが入ってると思うからバカっぽいのであって、
任意のjpegファイルのexifを読み取っては実行チャレンジするウイルスが産まれる徴候なのですよ!
つまり、jpegを喰い代謝し増殖するネット生命体が産まれようとしているのです!
#増殖機能はカケラすら持ってないだろう、exifじゃなくていいだろ、というツッコミに全く耐えられなくて死ぬ
##とある種類のexif情報を持ってる時だけ実行されるマルウェアとかあったら怖い……かなぁ
Re:馬鹿馬鹿しい (スコア:2)
ガチでこれが「I made it!」つーんだったら,何がしたかったんだろう。
まさか,マッチポンプじゃあるまいな…(ありがちでヤダ)
Re: (スコア:0)
バカにするよ。
Exifセグメントにコード入れるくらいなら、他のAPPセグメントやCOMセグメントに記載した方がよほど見つからない。
なぜ人目に触れる可能性が高いAPP1-Exifを選択したのか?
バカだから。
Re: (スコア:0)
いいこと思いついた!
日本には「灯台下暗し」って言葉があるくらいなんだからさ!!
エロ画像.jpg .exe
って感じでパッと見のファイル名を隠せば第一のコードとかexifだとか考えなくて済むんじゃね!俺天才!!
exifに隠すのが馬鹿に出来ないって言うんだったら画像そのもののバイナリに埋め込めよって思う。
任意で抽出したバイトコードを復元したらソースでした!って方がよほど偽装としては高度。
ってか既にある。表ざたに問題化してないだけ。知らないなら意識低い猫かおめーは、ってなる。
// それなんて縦読み
Re: (スコア:0)
> バカにするよ。
おれもバカにするよ。
> Exifセグメントにコード入れるくらいなら、他のAPPセグメントやCOMセグメントに記載した方がよほど見つからない。
Exifに埋め込んで隠される画像ファイルは、外部にある不正侵入者が管理するWWWサーバだ。
ローカルに置かれた画像ファイルのことじゃないよ。わかってなくてバカにしてんのかい?
> なぜ人目に触れる可能性が高いAPP1-Exifを選択したのか?
> バカだから。
なぜ画像のExif情報にマルウェアの本体を隠すのかの意図を理解できないのか?
バカだから。
Re: (スコア:0)
PHPってJpegのApp1-Exifセグメントとイメージデータ部しか読み書きできないの?って話なんだけど理解できないのか?
Re: (スコア:0)
もうやめとこうぜ。ここに住んでる奴らは正直馬鹿ばっかりだ。
Re: (スコア:0)
夏休みの宿題です。
意味がわからない (スコア:0)
起点となる任意のコードが実行された時点でウィルスに感染したと等しいじゃん。
権限を突破されたならともかく、権限内で信頼されないコードを実行した時点で自業自得だろう。
というか一般ユーザーはPHPなんかインストールしてねぇよ。
Re: (スコア:0)
Mac使いは一般ユーザーではない…?
#そうかも
Re: (スコア:0)
Macは安全なのでそもそも検討の対象外なのです。
Re: (スコア:0)
あなたは、Macユーザを敵にまわしたね。
デフォルトで入っているようです。
Re: (スコア:0)
インストールはされてますが、有効でしたっけ?
手元のMacでPHP動かすときにhttpd.confを弄った記憶が。
Re: (スコア:0)
OSXには初めから入ってたりするんだこれが
Re: (スコア:0)
何が言いたいやら。
マルウェア感染したから、このバックドアが作られたわけなんですが。
Re: (スコア:0)
> 一般ユーザーはPHPなんかインストールしてねぇよ。
「一般人」でもVisualStudioくらいは持っているというのに。。。
Re: (スコア:0)
何をおっしゃいますやら、「素人が購入することは考えにくい [srad.jp]」とマスゴミ様のお墨付きではありませんか。
Re: (スコア:0)
それに我々は反発したのですよ?
「一般人だってVisualStudioくらい持っとるわwww」と。
もうお忘れで?
Re: (スコア:0)
整理しよう。
まず、このマルウェアの標的は一般ユーザのPCではないと思われる。
次に、不正侵入や感染するための技術の話ではなく、身を隠す手段の話であること。
不正侵入したサーバを、その後も見つからないように使い続けるときなんかに使うってことじゃないかな。
マルウェア本体が普段は外部のサーバにあるってんだから、見つかりにくいよね。
普段は普通のノーマルな画像にしていればいいわけだ。
Re: (スコア:0)
「EXIF内のデータを読んで実行するコードが実装されている」
環境をターゲットにした攻撃手法なんですよ、きっと。
#そんな環境あるのかよ
バックドア (スコア:0)
言っている意味はわかるんだけど、GIGAZINEの記事にも
って書いてあるし、なんというか、バックドアの定義がずいぶん狭くなったように感じる。
サーバー側にあるのがバックドアなのか。
Re: (スコア:0)
> って書いてあるし、なんというか、バックドアの定義がずいぶん狭くなったように感じる。
身を隠す手段の事しか書いてないのになぜバックドアの定義にまで飛躍した?
ウィルスパターンチェック回避の話だからどっちにあろうが身は隠すように思うのだけど?
そもそも使い方がおかしい (スコア:0)
preg_replace($exif['Make'],$exif['Model'],'');
なぜ入力値をエスケープしないのか
うめーこのみかん (スコア:0)
そんな単語が頭をよぎる昨今