TwitterでPNGに偽装しファイル共有を行う方法が発見される 53
ストーリー by nagazou
偽装 部門より
偽装 部門より
PNG画像に偽装することにより、Twitter上でファイルの共有が行える方法が発見されたそうだ。セキュリティ研究者のDavid Buchanan氏が発見したもので、特定の条件を満たせばZIP、MP3といったファイルを埋め込んでの投稿、それをダウンロードして元に戻すことも可能であるとしている(David Buchanan氏のツイート、GitHubに上げられた詳細情報、Threatpost、INTERNET Watch、TECH+)。
同氏は告知をしているツイートにPNG画像に偽装したZIPファイルを投稿している。GitHubに上げられた説明によると、投稿可能な条件としては、Twitterは3MB以下のファイルであれば再エンコード処理をしないことことから3MB以下に抑えること、最適化を防ぐために257以上の色数を使用していること、画像に不要なメタデータ・チャンクを含まないことなどとなっている。
同氏は告知をしているツイートにPNG画像に偽装したZIPファイルを投稿している。GitHubに上げられた説明によると、投稿可能な条件としては、Twitterは3MB以下のファイルであれば再エンコード処理をしないことことから3MB以下に抑えること、最適化を防ぐために257以上の色数を使用していること、画像に不要なメタデータ・チャンクを含まないことなどとなっている。
IDATチャンクにZIPデータを追加埋め込み (スコア:5, 興味深い)
埋め込みツールのコードを見てみましたが、
・入力は PNGファイル(偽装対象)とZIPファイル(埋め込みデータ)の二つ。
・PNGファイルのIDATチャンク(圧縮した画像データそのものを示すデータ領域)の後ろにZIPファイルを追加して埋め込んだものを出力する
というものでした。「圧縮画像データ」の中にzipが入ってるので、「コメント等の余計なデータを除去する」ような処理で埋め込みデータあが消されることはありません。
あとは、
・PNG表示時は、画素数分だけ展開ができたら、そこで圧縮データからの読み込みは終わる。その後ろにゴミが付いてても無視されるだけで問題ない。
・ダウンロードしたファイルは、拡張子を ZIP にするだけ。ZIPファイルを扱うツールはZIPデータが始まるまでの不要部分(PNGデータ部分)はテキトーに読み捨ててファイル中のZIPデータを見つけ出してくれる。
という形になってます。
抽出ツール等は不要というのが手軽ですね。
Re: (スコア:0)
> テキトーに読み捨ててファイル中のZIPデータを見つけ出してくれる。
SFXで展開ルーチンが先頭にくっついている物対策ですかね
Re:IDATチャンクにZIPデータを追加埋め込み (スコア:2, 興味深い)
ZIPは各ファイルのオフセット等の情報をまとめたセントラルディレクトリというのが最後にあって、
セントラルディレクトリの開始位置というのは、後ろから辿る場合、必ずしも1パスでは確定しない、
という、イマイチな仕様がある。
なので、大抵の実装ではヘッダを探索するようになっている。
Re:IDATチャンクにZIPデータを追加埋め込み (スコア:2, 参考になる)
LZHも前後にゴミが含まれていても構わないという仕様で、ヘッダー探索が必要だったな。そもそも当時のファイル転送プロトコル(XMODEM)はファイルサイズを128の倍数にしかできない仕様だったので、末尾のゴミに対応できることは必須だった。
LZHとZIPを結合して、LZHとしてもZIPとしても展開できて、それぞれ別のファイルが出てくるという書庫をパソコン通信時代に見た覚えがある。今でもベクターに残ってるかも。あとLZHの末尾にishが付加されていて、ishをかけるとやっぱり別のファイルが出てくるとか
Re: (スコア:0)
これって処理も軽そうだからファイルシステムに組み込んで写真容量無制限がウリのクラウドで使えんのかな?w
できたとしてもすぐ対策されるんだろうけど。
Re: (スコア:0)
初期のころは拡張子だけ画像ファイルに変更してアップロードなんてレベルでも通ってた
ここだけ1990年代 (スコア:1)
らるち~最強すぎひん?
Re:ここだけ1990年代 (スコア:2)
ネトラン厨は逝ってヨシ
Re: (スコア:0)
うめ~このみかん
Re: (スコア:0)
梅葡萄もあったな
Re: (スコア:0)
JPEG Direct Annexだろ
Re: (スコア:0)
げろしゃぶ って何?
Re: (スコア:0)
お礼のカキコは5行以上
Re:ここだけ1990年代 (スコア:1)
ごあ
ざり
いが
まと
すう
応用すると (スコア:1)
Twitterがどうとかはどうでもいい話だが、
内部ファイルの持ち出しを厳密に禁じられているような現場だったとして、
画像の作成担当であれば一見ただサイトの画像ファイルを更新するように社外秘を画像に入れ込むことでネットを介して堂々と持ち出せるということだよね。
よほど不自然なサイズにならなければ露見することもまずなさそう。
Re: (スコア:0)
各種画像ファイルから画像に無関係なデータの量を取得して一定量以上なら報告するツール、とかはそんなに難しくないと思う。
画像ペイロードに混ぜ込まれると面倒だけど。
Re: (スコア:0)
簡単に(つまり機械的に)できるならTwitterもそうすればいいだけの話で、これはそうじゃない。
Re: (スコア:0)
twitterに上げられることが新規性なのに、そこを無視したら四半世紀以上前の話になるぞ。
Re: (スコア:0)
画像に偽装すればぐらいのアイデアはそんなに珍しいものではなくて、普通にセキュリティ管理者の思考には含まれていると思う。
多人数に閲覧される画像にデータを埋め込む内部犯の面の皮は中々厚いが、
基本的な考え方として、インターネットの接続を許したら、絶対的な悪意のある内部犯の情報漏出をシステムで防ぐのは不可能だろう。
画像に埋め込めば? (スコア:1)
画像データとは別の領域 (チャンク) にデータを放り込む手法では発見が容易なので、画像に埋め込むほうが確実だよ。
いわゆるステガノグラフィはかなり研究されている分野で、 PNG なら本来の画像データの数割程度の大きさのデータなら違和感なく埋め込める。
他のデータ形式に変換した場合などの復元性まで考えるならちょっと大変なんだけど、この場合は再エンコードはされないという前提なんでしょ?
Re: (スコア:0)
復元のコストを無視するなら、再エンコードを前提にしても動画の方が有利では。
Re: (スコア:0)
ところで古のカセットテープのデータって、mp3等に圧縮してもデコードできるんだろうか
Re:画像に埋め込めば? (スコア:2)
2400baud とかだったから 4.8kbps ぐらいの情報量
ある程度音質をよくしていればいけそうな気がする
なんちゅー懐かしい (スコア:0)
2000年代初頭ぐらいに流行ったファイル偽装じゃないか…。
色々ツールあったよね。
Re:なんちゅー懐かしい (スコア:1)
2000年代初頭ぐらいに流行ったファイル偽装じゃないか…。
色々ツールあったよね。
ステガノグラフィーとか
インプラントとか
Warezの頃ですね
# しっかしless thanを以下と訳しちゃうのはいつの時代も変わらんよねぇ
「up to ~3MB」だから良いのでは? (スコア:0)
ことことしてるけど
Re: (スコア:0)
https://github.com/DavidBuchanan314/tweetable-polyglot-png [github.com]
Embedded file requirements
The total output file size must be less than 3MB (maybe 5MB?), otherwise twitter will convert the PNG to a JPEG.
なので
「合計出力サイズは3MB未満である必要がある(もしかしたら5MBいけるかも?)」ですね
Re: (スコア:0)
これ拡張子をzipにリネームしただけで展開できるんですけど。ぜんぜん違う。
Re: (スコア:0)
古のファイル偽装ソフトでもそのまま解凍できたりできなかったりはバラバラ
偽装レベルを調整できたりもした
Re: (スコア:0)
当時に例えたら、偽装ソフトで作ったjpgファイルを、受け取った側は拡張子をlzhに変えるだけで、
偽装ソフトを必要とせずに解凍できるというのがコレ。
少なくともステガノグラフィーがそんなことで復号できるわけない。
解凍にも偽装ソフト使用しないといけない点で全然違うと言っている。
Re: (スコア:0)
拡張子を変えるだけで読めるのはzipファイル側の特性だから、
偽のファイルヘッダを付与するタイプの偽装なら当時のツールでだってできるでしょ
Re:なんちゅー懐かしい (スコア:1)
ishってまだ使えるのかな。
Re: (スコア:0)
ish for Linux/Windows [vector.co.jp]ってのがありますな。
# 偽装という意味ではishのパクリであるfish(バイナリデータを魚へんの漢字に変換する)のほうが・・
Re: (スコア:0)
オリジナルは16bitでビルドされているので、Windows10(64bit)では動かなかった。
32bitOSのDOSプロンプトなら動くんじゃない?
Re: (スコア:0)
DOSBOXとか互換環境なら行けるんじゃないかな、日本語出ないけど
# たしか難解バカボン(これも16ビット)が動いたような
# 画面表示は文字化けするので、テキスト出力してそれをWindows側で読む
Re: (スコア:0)
おっさんホイホイの予感!
Rarutyという単語が頭よぎったけどあってる?
Re: (スコア:0)
1ファイル3Mって有料鯖じゃないですか。
taxiクラス。鳥は512kまで。
Re: (スコア:0)
地球病…
Re: (スコア:0)
Re: (スコア:0)
「ラブマシーンという名前を聞いて何を思い浮かべるか?」という質問によって回答者の年代が割り出せる、というウソ技(テク)を思いついた。
Re: (スコア:0)
水晶の竜で野球拳ダトッ
Re: (スコア:0)
昔は俺もヤンチャだった的な更生済みアングラ厨房どもは知らないだろうけど、ゲームのセーブデータとして現役で使われてるよ。
画像部分はキャラクタの外観、後ろの方はキャラクタのパラメータとか。
Re: (スコア:0)
吉里吉里のセーブデータかな?
Re: (スコア:0)
エロゲ―のキャラクタカードとシーンデータ
前者は仮想的な着せ替え人形、後者は仮想的なジオラマ的なものと思っていただければと
ご参考(職場からのアクセス注意):
http://www.illusion.jp/ [illusion.jp]
Re: (スコア:0)
懐かしいといえば、初期のPGPは米国のソフトウエア輸出規制があったんで、
法令回避のため印刷して書籍として輸出して、米国外で再入力してたんじゃな
かったっけ?
Re:なんちゅー懐かしい (スコア:2)
本文のほとんどがソースコードという珍しい本だったね (買ったがどこへ行ったのか行方不明)。
いつか来た道 (スコア:0)
LINE「Unicodeは犯罪」
Twitter「PNGは犯罪」
Re: (スコア:0)
いやLINEの件はLINEのバグ(脆弱性)で、全然話が違うから…
LINEは悪くない (スコア:0)
所謂ユニコードウイルスは、iOSやAndroidのUnicode処理の不具合が原因なのでLINEは悪くない。
Re: (スコア:0)
MameShiba「ねぇしってる?OSの不具合は仕様っていうんだよ」