Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

みんなで!Base64難読化シェル芸

4,514 views

Published on

7/8に行われた大阪工業大学LTと7/1に29回シェル芸勉強会で発表したLTの資料です

Published in: Science
  • Be the first to comment

みんなで!Base64難読化シェル芸

  1. 1. みんなで! 日本語base64難読化シェル芸 たいちょー
  2. 2. みなさん#!/bin/bash(こんにちはの意) たいちょー Twitter : @xztaityozx_001 OITの4年生 /bin/bash在住 母語はC# アイコンステッカーあります
  3. 3. 難読化シェル芸 #とは kanata氏考案のヤバいシェル芸 定義 内部的な動作の手続き内容・構造・データなどを人 間が理解しにくい、あるいはそのようになるよう加 工されたシェル芸のこと。 -- A painter and a black cat より
  4. 4. 危険シェル芸の隠蔽、それが難読化シェル芸 危険シェル芸は確かに強力 しかし裸のまま危険シェル芸を書けば当然すぐ見つ かり火刑台送りとなる 街中をナイフ片手に闊歩するようなものである 難読化はそんな危険シェル芸を隠蔽し危険シェ ル芸人を守る最強の手段!
  5. 5. dateコマンドを難読化の手法いろいろ アスキーコード利用型 $'x64x61x74x65‘ cutコマンド利用型 $(ls --help|grep ^M|cut -c4,5,6,16) その他いろいろ
  6. 6. ここまでは基本ですわ
  7. 7. 日本語base64難読化シェル芸 #とは ぼく(たいちょー)が2017/5/27に行われた oitLT(大阪工業大学LT)で発表した闇 Base64を使って日本語文字列からコマンド列を 取り出す
  8. 8. 例) dateコマンド $(echo "そずねぞ"|base64|tr -d 44GCg==) そ → 44Gd ず → 44Ga ね → 44Gt ぞ → 44Ge
  9. 9. 日本語base64難読化シェル芸の覚え方 「ず」は「a」である echo 44G{a..z}|sed 's/ //g'|base64 -d|grep -o . ず~びまでが列挙されたはず 普通の五十音と並びが違うけど26文字だしアルファベッ トを覚えることができた皆さんなら余裕
  10. 10. 上級編1 44G〇の縛りにとらわれない心 例えば「㏾」をbase64に通すと44++Cg==が得ら れるので適当に整形して echo "㏾"|base64|tr -d 44C=|rev g++ 因みに「あ」だとgccが得られるよ
  11. 11. 上級編2 日本語base64難読化シェル芸をできるだけ短縮 する apt mooを今までのやり方で apt moo → ずどね てとと 短縮すると ㆩね ㉨と
  12. 12. ??????????? 手法は上級編1と同じ ㆩ → 44ap ね → 44Gt ㉨ → 44mo と → 44Go
  13. 13. ちょっとまってください ㆩね ㉨と これ・・・なんて読むんですか・・・? 既に日本語でなくなってしまった
  14. 14. 日本語base64難読化シェル芸の弱点 Base64の仕様上出てこない文字がある 特にシェル芸でよく使いそうなものは - * (){}:;$ スペース これらはsedとかで例外的に用意しないとダメ
  15. 15. 隠蔽された危険シェル芸 破滅の呪文ことrm –rf / echo "にて ーにた み"|base64|tr -d 44G|sed 's/CA/ /g;s/O8/-/g'|tr -d Cg== あれ?逆に覚えやすくなってない?
  16. 16. 難読化は読みにくく分かりにくくすること より「読みにくく」より「分かりにくく」を目 指してきたはずなのに にて -にた み これは非常に覚えやすい つまり難読化を求めるあまり逆行進化し た・・・?
  17. 17. この辺で頭がおかしくなりそうだったのでそっ とPCの電源を切った $(echo "ㄇ㋭そブで"|base64|tr -d 44GCg==|sed 's/(.)/L1/g‘) shutdown

×